Repository navigation
[cx-vte03] ci(webviews): cap browser file timeouts and serial retry time - #25548
Conversation
Base c803545: focused per-file runner regressions fail because a 3000-second header bypasses the hard ceiling, TIMEOUT files rerun serially, and serial retries have no shared budget. No native builds. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
The 3000s attachment stress-file allowance exceeded a whole40min PR job. Clamp declared/default file limits at300s unless an intentional standalone run raises CMUX_WEB_TEST_MAX_FILE_TIMEOUT; report START and failure detail immediately. Keep timed-out files red without retrying and stop starting serial retries after a120s shared budget. Focused regressions failed at dd84051; all per-file runner tests now pass. Bash retry coverage passes; no native builds. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Yours to fix: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; base red: the same failure on the base c803545; does not block |
|
Owned by an agent session · session |
|
Bead |
At0f27fcc0 the shared budget only stops new retries: an already-started4-second retry outlives a1-second budget. The focused regression fails on elapsed runtime. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
Focused regression at7781af1d:4.137s retry exceeded1s budget. Cap in-flight retry to remaining shared budget. Preserve legitimate600-900s gallery allowances under a900s hard ceiling; the3000s stress header cannot exceed the40min job.18 runner tests and19 wrapper tests pass, retry shell check passes. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
Workflow execution regression fails over3d29c08d: head reports a bounded file timeout while the old base runner records a late named failure, so guard incorrectly charges head. Executes the actual head and base workflow scripts with fake Bun and a stale base runner. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
A retry stopped only by the global budget is inconclusive; it must not manufacture a new file-level timeout and misattribute an existing named base failure. The JSON-verdict regression fails with the current strict-budget runner. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
Package head runner+parser beside its results so base replay uses identical timeout policy with base tests/Bun. Workflow-execution regression failed ataf0430b3 over a stale base runner; now both record the same bounded file failure. Preserve a first named assertion when shared-budget retry is incomplete.18 runner and20 wrapper/workflow tests pass; actionlint and retry shell test pass. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
The deterministic delayed header lookup consumes the shared budget;2fc24eb8 still starts another Bun retry. Calls regression fails before boundary fix. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
Deterministic regression atad8f2835 shows a header lookup consuming the remaining budget still starts a retry. Re-read time after lookup and keep its original failure when no time remains.19 runner tests pass26.086s; retry shell, syntax and diff checks pass. Agent-Session: https://cmux.com/deeplink/agent?id=aid-4777d4f75452817a742b
|
|
|
Review (Codex xhigh): SHIP at 1736adf Independent session Primary verdict: SHIP at the same exact head. I independently inspected the final workflow/script diff, checked test failure evidence and the clean worktree. All selected files still execute; timeouts are named failures, budget-incomplete retries retain their first real named failures, and base replay uses identical runner/parser policy with base tests and Bun. No new job, step, trigger or credential privilege. #24438 overlaps only the lint-step file and was notified; its diff is disjoint. No full browser or native execution is claimed by this review. The remaining stop condition is browser-shard completion on merged base and two webview PRs, plus #24469's separately owned claimPaint repair. |
|
Exact-head non-green classification at
Risk evidence and merge freeze are green; remaining checks were pending at the bounded snapshot. No rerun/dispatch was started to work around quota. Independent xhigh SHIP and primary review are recorded above at this exact head. |
|
|
|
Review (subagent, correctness first): SHIP at 1736adf Independent Codex xhigh review also returned SHIP at this exact head. The completed |
|
Shipped in:
|
The browser shard can outlive its 40-minute job:
agent-pane-attach-huge-files.test.tsdeclares a 3,000-second file allowance, other sweeps declare 600–900 seconds, and up to 60 failed files are retried serially. On #25304, run 40368616367 was cancelled without writing its head-results artifact. That shard reported 23 first-pass failures; its 900-second gallery sweep took about 11 minutes, and silent serial retries then ran for 17 minutes before cancellation. The 3,000-second stress-file allowance is a separate ceiling violation, not identified as the active file in this cancelled shard.The runner now caps each file at 900 seconds, reports its name before launch and failure log as soon as it finishes, keeps TIMEOUT failures without another serial attempt, and limits the whole retry phase, including an in-flight attempt, to a 120-second shared budget. Every selected file still runs; failures left after the retry budget remain failures. Intentional standalone stress runs can explicitly raise
CMUX_WEB_TEST_MAX_FILE_TIMEOUT. An incomplete retry retains the first named failure. Bun's default per-test timeout remains 30 seconds, enclosed by the hard file deadline even if a suite overrides it. The existing results artifact also carries the exact runner and result parser for base replay, so the head and base use the same deadline policy with their own tests and Bun version. PR path routing is unchanged.claude-sr2 requested: “give every test a hard timeout so a hang turns into a named failure instead of a 37-min cancel.” This addresses the base blocker seen on #25304 and #25325.
claimPaintis a separate false-positive: it finishes in 1.76s and counts two correctly disabled ordered-list boundary buttons. Existing #24469 owns that repair; its Codex owner has resumed it.Regression command:
python3 tests/test_webviews_tests_per_file.py PerFileRunner.test_a_declared_long_file_cannot_exceed_the_runner_hard_limit PerFileRunner.test_a_timed_out_file_reports_once_without_a_serial_retry PerFileRunner.test_serial_retries_have_a_shared_time_budget. The new tests fail at regression commitdd84051fdbf915over basec80354516c120e04a3adba32258268611a5e1a73; all pass with the fix.Additional red/green regressions cover an in-flight retry exceeding the remaining budget (
7781af1dac4340), keeping its original named failure when that retry is incomplete (29826b3de600f4), and executing head/base workflow scripts with a stale base runner (af0430b3b59c7a).python3 tests/test_webviews_tests_per_file.pyandpython3 tests/test_webviews_tests_new_reds.pypass on the final head.Changelog
none
Observed / Not run
bash scripts/ci/tests/run-webviews-tests-retry.test.sh: passed.bash -n scripts/ci/run-webviews-tests.sh, diff check and prepush gate: passed.actionlint .github/workflows/ci-web.yml: passed.Review (Codex xhigh): SHIP at 1736adf93024567e0c596b9df56360c48f30a1abafter rerunning all 39 focused tests, retry shell, actionlint and prepush gate.Agent session: agent session