Skip to content

fix(ci): report and fail evidence world waits before the job limit - #6473

Open
benjaminshafii wants to merge 1 commit into
devfrom
fix/evidence-world-prepare-budgets
Open

benjaminshafii wants to merge 1 commit into
devfrom
fix/evidence-world-prepare-budgets

Conversation

@benjaminshafii

@benjaminshafii benjaminshafii commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

What is this about?

PR core-journey jobs that prepare a Daytona evidence world now report what they wait on and fail with a reason before the job limit, instead of being cancelled silently.

What problem does it solve?

After a dependency change on dev, core-journey jobs died at the 30-minute job limit with no output and no artifacts, so nobody could tell why.

What was the situation before?

Runs 40049411515 and 40049368045 printed at most {"stage":"daytona-base","cacheHit":true}, then 30 silent minutes, then "The operation was canceled".

How is this implemented?

  • Root cause: feat(mcp-apps): bundle pinned chart, icon, motion and 3D libraries #6463 changed the lockfile, so the shared image needed a rebuild. Job 40049368045 held the image builder lock silently until cancelled; 40049411515 and the dev warm-up waited on it, and the warm-up then built the image in ~3 min. The budgets didn't nest (job 30, step 35, layer wait 45, stale builder 60 min).
  • packages/daytona-evidence/src/build-budget.ts holds the timing in one place. OPENWORK_EVIDENCE_PREPARE_BUDGET_MINUTES sets a deadline, and every wait in builder.ts stops 2 minutes before it.
  • Waits print progress every 30 s (builder state, age, commit, its controller's deadline). On timeout the job prints that and the builder's classified log tail, then fails clearly.
  • Builders record their controller's deadline, so one left by a cancelled job is taken over minutes later instead of after an hour.
  • pr-proof.yml: core step 13 min with an 11-minute budget, checkpoint step 30 with 28. .github/scripts/pr-proof-budgets.test.mjs fails if they stop nesting.

What else changed?

  • diagnose-a-red-run explains the new message.

Release note

none

Evidence

No E2E; fake-clock unit tests, the workflow budget test (fails on dev's workflow), and a run against real Daytona. A held builder printed progress and failed in 91 s with "still waiting on builder … its controller gives up in 18.5 min". An abandoned one was taken over in 1 s.

…job limit

A dependency change on dev invalidated the shared Daytona image. One PR
core-journey job took the image builder lock and stayed silent until the
30-minute job limit cancelled it; another PR job and the dev warm-up
waited on that lock with no output (the warm-up then built the same
image in about three minutes). Nothing explained the cancellations.

The budgets did not nest: job 30 min, prepare step 35, layer wait 45,
a stale builder only after 60, build script 25, snapshot 20, snapshot
quota retries 16.

- packages/daytona-evidence/src/build-budget.ts holds the timing in one
  place. A preparation gets a deadline (OPENWORK_EVIDENCE_PREPARE_BUDGET_MINUTES
  from the CI step); every wait (builder lock, snapshot, build script,
  sandbox start, quota retry) is capped two minutes before it.
- Waits print a progress line at most every 30 s: the layer, what it
  waits on, the builder's state, age, commit and when its controller
  gives up, or the snapshot state.
- When the budget runs out while another controller holds the layer,
  the job prints the wait summary and the builder's classified log tail
  (existing bounded diagnostic) and fails with a clear message.
- A controller records its deadline on its builder, so a builder left by
  a cancelled job is taken over minutes after that deadline instead of
  after an hour. Builders without the label keep the one-hour rule.
- pr-proof.yml: core prepare step 13 min with an 11 min budget inside the
  30 min job; checkpoint prepare 30 min with a 28 min budget inside 60.
  .github/scripts/pr-proof-budgets.test.mjs fails if they stop nesting.
- Fake-clock unit tests cover the budget, progress throttling, a waiter
  failing with a diagnosis, taking over an abandoned builder and a build
  script stopping at the budget.

Signed-off-by: Benjamin Shafii <benjamin.shafii@gmail.com>
@vercel

vercel Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
openwork-app Ready Ready Preview Oct 24, 2026 3:15pm UTC
openwork-den Ready Ready Preview Oct 24, 2026 3:15pm UTC
openwork-diagnostics Ready Ready Preview Oct 24, 2026 3:15pm UTC
openwork-landing Ready Ready Preview, v0 Oct 24, 2026 3:15pm UTC

Request Review

@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

OpenWork evidence

Status Commit Preview Updated
🟢 Ready · evidence passed 03466b3 Open preview 2026-10-24 15:31:21 UTC

Run details · Open the preview to inspect evidence and sandbox options.

@diff-warden diff-warden Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warden clearance. Complete security and confidentiality review of 03466b3ce18fd3df5dbdacb6cd648f3f867f9d21 found no high or medium security findings and no confidentiality findings. Any new push dismisses this approval. Analysis run

@diff-warden

diff-warden Bot commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

Warden: approved

No high or medium security findings and no confidentiality findings.

Reviewed 03466b3ce18f · Warden run · Updates after every Warden run.

This branch was successfully deployed

6 active deployments
Evidence / PR 6473 — 03466b3c Deployed Oct 24, 2026 by github-actions[bot]
Preview – openwork-app — 03466b3c Deployed Oct 24, 2026 by vercel[bot]
Preview – openwork-landing — 03466b3c Deployed Oct 24, 2026 by vercel[bot]
Preview – openwork-diagnostics — 03466b3c Deployed Oct 24, 2026 by vercel[bot]
Preview – openwork-den — 03466b3c Deployed Oct 24, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant