Repository navigation
ci: webview flakes on the base only warn; split accent-glass; name new webview reds - #28511
Merged
Merged
Conversation
A pull request fails only on webview tests its base replay passes, and that replay runs each red file once. Tests that fail now and then on the base passed it by chance and were charged to the change (agent-pane-suggested-tasks on 9 of 40 sampled red pull request runs, 2026-10-30), so a webview red could not be a blocking verdict. - webviews_test_history.py keeps each feat-cmux-next push's webview verdicts (a push-only upkeep job saves them to the Actions cache; no new permissions) and names the tests whose verdict flipped by itself there. - guards_new_reds.py --flaky turns those into warnings in react-apps-base-check. The base check runs the head's copies of the comparison and history scripts. - accent-glass-invariants ran ~9 min alone against a 900 s limit and timed out on busy shards with no room left for its retry (runs 41079754472, 41076022470, 41048809560); it is split into four parts of 480 s each. - pr_red_checks_comment.py: react-apps-check and Web status are never called "base red" while a job they gather is red on the change, and a red react-apps-base-check names its new webview test reds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0b4091cd6a9b72e19edf
Contributor
|
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)
|
Collaborator
Author
|
Owned by an agent session · session |
…rts with Review (gpt-6-astra) BLOCK at e8ee42e: stage names hold spaces for allowlisted themes (`Clay Orange`), so splitting a key at its first space never matched them and their stale baseline lines went unreported. A key no stage has any more is part 1's to report. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0b4091cd6a9b72e19edf
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 20:25 — with
GitHub Actions
Inactive
|
Found 13 test failures on Blacksmith runners: Failures
...and 3 more test failures. View all on Blacksmith
|
Review (gpt-6-astra) BLOCK at eb0d7a8: - A break and its revert gave green, red, green, which the history called a flake. A test is flaky now only when two base pushes with the same webview inputs (the git ids of every path web_subareas.py routes the suite on) gave it different verdicts; a re-run of a push counts as more evidence. - An aggregate was excused by any tracked base red (the size cap). Each now follows only the jobs it gathers, and a cancelled one blocks it. - web_subareas.py routes the suite on for webviews_test_history.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0b4091cd6a9b72e19edf
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 20:33 — with
GitHub Actions
Inactive
…ning tooling-tests (test_cmux_next_fast_gates: every continue-on-error step has an id the gate reads) and the CI guard group (every workflow-reading test is wired) were red on this PR alone. Both pass here; the routed guard group has 0 reds of its own against the base (14 red on the base too). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0b4091cd6a9b72e19edf
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 21:14 — with
GitHub Actions
Inactive
Contributor
|
Shipped in:
|
This was referenced Nov 1, 2026
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo's ask, relayed: "Webview tests keep breaking base as fast as they get fixed. Leo wants them caught at PR time, as a system fix rather than more red-fix PRs."
Of the 22 PRs that brought a webview red to
feat-cmux-nextsince 2026-10-28, 14 merged withreact-apps-base-checkfinished and red, and 8 merged while it was still pending. Per-diff routing never skipped the suite. A blocking verdict can't be built on what the gates read today, for three reasons:agent-pane-suggested-taskswas charged on 9 of 40 sampled red PR runs, andnewtab-project-chip-fitthe same way.accent-glass-invariantstimed out. It scans 2,542 stages in about 9 minutes alone, against a 900 s limit. On a busy shard it timed out with no room left before the retry deadline, so it was charged as new (runs 41079754472, 41076022470, 41048809560).react-apps-base-checkread "no finished base run to compare."This PR fixes all three. It changes no workflow permissions and posts no new statuses. A follow-up gate (merge_guard / next-autoland) reads the existing
web / react-apps-base-check (N)conclusion and log.Changes
scripts/ci/webviews_test_history.py(new):recordadds one push run's per-test webview verdicts (from the shards' results) to a history of the last 120 runs, with the run's inputs key.web_subareas.pyroutes the webview suite on.flakynames a test only when two base pushes with the same inputs gave it different verdicts. Most pushes change no webview input, so that evidence builds up fast. A break and its revert (green, red, green) change the inputs each time, so they are never flaky, and a re-run of a push counts as more evidence.web_subareas.pynow routes the suite on for this script too.ci-web.yml:webviews-test-history, saves the history to the Actions cache underwebviews-test-history-<branch>-<run>. Every step in it is continue-on-error, likewebviews-test-durations.react-apps-base-checkrestores the base branch's history with read-onlyactions/cache/restoreand passes the flaky names to the comparison. PR runs never save it, so a PR can't write its base's history.guards_new_reds.pyand of the history script, which the head shard publishes beside its runner, as it already does forrun-webviews-tests.sh.guards_new_reds.py --flaky FILE: a listed red that the base replay passed becomes::warning title=Webview test flaky on the base::and the step stays green. Every other new red is still::error ... red on this change::and fails the step.accent-glass-invariantsis split into four parts (accent-glass-invariants-1..4.test.ts, 480 s each). Each part scans every fourth stage of the sorted list. The body moved unchanged totest/support/accentGlassInvariants.ts. The stale-baseline warning covers only the part's own stages.pr_red_checks_comment.py:web / react-apps-checkandweb / Web statusare never called base reds. Each follows only the jobs it gathers: react-apps-check follows its shards, the base replays and react-doctor; Web status follows the otherweb /jobs.react-apps-base-check (N)names up to 3 of its new red tests, read from its "Webview test red on this change" annotations, and blocks.Repo rule note: CLAUDE.md asks not to add CI jobs or steps. The new job and steps are upkeep, never a gate, and nothing in them can fail a run. Leo's standing orders make CI changes the lanes' call after independent review.
Until this lands, base-check PR runs use the base's scripts, so the flake handling takes effect on PRs opened after it merges. The history fills from the first feat-cmux-next pushes after that, and a flake needs two runs of the test on the same inputs.
Observed / Not run
tests/test_webviews_test_history.py(16 OK, new),tests/test_guards_new_reds.py(OK, with 3 new--flakycases),tests/test_webviews_tests_new_reds.py(OK; the workflow-step tests now publish the two scripts with the runner),tests/test_pr_red_checks_comment.py(27 PASS, 7 new),tests/test_cmux_next_web_base_push.py,tests/test_webviews_tests_per_file.py,test_runner_label_policy,test_ci_runs_on_values,test_ci_runs_on_fallback,test_runs_on_labels,test_ci_blacksmith_linux_failover,test_ci_pr_runner_pool,test_ci_change_areasandtest_test_reds(all OK).tests/test_ci_fork_runner_routing.pyfails with the same single failure on the base (cmux-next.yml:1304CI_SESSION_LANE_RUNNER), so it isn't this change's.tests/test_webviews_test_history.pyinto cmux-next.yml's guard list (the every-guard-is-wired check) and gives the history upload step an id the gate reads as a warning (the continue-on-error id check).react-apps-checkshards (they run the four accent-glass parts) and all fourreact-apps-base-checkreplays. Codex review (gpt-6-astra): SHIP at d5ca5b4, then SHIP on the delta to 31a587e.risk: normal (CI scripts and tests; no product code).
Changelog
none
Agent session: agent session
🤖 Generated with Claude Code