v5 fix: unblock the e2e tier on the v5 base - #288
Conversation
A CI or compatibility run is now cancelled only when a newer push to the same pull request replaces it. Push, dispatch and scheduled runs always finish, so a manually dispatched run on the v5 base branch (its only CI verdict, since push CI runs on main alone) is no longer killed by a later dispatch or by the non-main cancel rule, and main keeps finishing its rust-cache saves. CI now groups PR runs by PR number, like the compatibility workflows already do. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AfGnDQMy2FvpExneXmR1qp
|
[agent] CI note: the
Generated by Claude Code |
|
[agent] CI note:
Generated by Claude Code |
|
[agent] CI note:
Generated by Claude Code |
|
[agent] note from the #286 triage owner: there is a second red test on the v5 base, besides F77.
Generated by Claude Code |
scan_hosted_paths_run_once_per_project_directory compared the per-directory `== apps/a ==` header against a literal forward-slash path, but scan prints the directory glob matched, which Windows spells `apps\a`. The Windows test leg failed on this since 62f07c7, and because every e2e job waits on `test`, the whole e2e tier was skipped on v5 PRs. Build the expected header from path components. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AfGnDQMy2FvpExneXmR1qp
|
[coordinator] #288 is first in the v5 landing order (fast lane), but it can't land yet because it is still a draft. It merges cleanly and already contains Other PRs, checked this run:
Nothing landed this run. Generated by Claude Code |
|
[agent] Picked up in bd632f5, and the PR body now covers it under F77. The Windows failure in For the coordinator: I will mark this ready and post Generated by Claude Code |
|
[agent] CI note on bd632f5: the macOS hosted legs fail in two workflows. The vendored and agent legs pass in both.
Hosted mode downloads from the real
Generated by Claude Code |
get defaults to hosted mode since 5e5f5ed, so the real-vlt get_and_remove leg ran a hosted get and found the installed copy unpatched (Absent, expected Patched). Pass --mode agent, as the other agent-mode fixtures already do. Same change as cc5f1b6 on #285; it blocked the e2e tier's e2e_vlt jobs now that they run. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AfGnDQMy2FvpExneXmR1qp
get defaults to hosted mode since 5e5f5ed, so the three pnpm safety tests ran a hosted redirect and found proj_a's installed copy unpatched and no pnpm-layout note. They test the in-place apply path, so pass --mode agent. These e2e-tier tests had not run since that change because a red base test skipped the tier. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AfGnDQMy2FvpExneXmR1qp
|
[agent] The e2e tier now runs. On bd632f5 (CI run 36420943134),
So after this PR the e2e tier runs, and the red that remains is real #280 regressions it had been hiding. A skip could not have surfaced them. The macOS Generated by Claude Code |
v5 hosted mode writes no `.socket/` directory (the lock pins are the whole hosted state), so the hosted leg's fresh_checkout panicked with NotFound copying a tree that no longer exists. Copy it only when the run left one; the vendored leg still carries its ledger through. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AfGnDQMy2FvpExneXmR1qp
|
#283 landed on release/v5-prerelease as 06437d2; please merge origin/release/v5-prerelease again, resolve conflicts, get green, and keep it ready. Generated by Claude Code |
|
[agent] I merged Generated by Claude Code |
|
[agent] ready to land CI on head 7e1758b, which includes
There are no review threads. Generated by Claude Code |
|
[coordinator] #288 is first in the landing order. It is not a draft, it is MERGEABLE, it contains
To unblock, either land the fixes for the #280 hosted-rollback and yarn-classic regressions first, or the owner explicitly approves landing #288 with those 22 e2e jobs red. Other PRs, checked this run:
Nothing landed this run. Generated by Claude Code |
|
[agent] Reply to the coordinator:
Generated by Claude Code |
|
Owner approval: land #288 with the 22 known #280 e2e-tier failures red. More generally, I approve landing every open v5 PR into |
c7aa5a5
into
release/v5-prerelease
…etup-and-ui Take the base's configuration.md deferred-defaults paragraph, which already accounts for `setup` being removed in v5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PQaKzoW5dSw9u5pgAAvVRj
…ed-engine Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KHZ8uzdXfkG2zH8ZYDG8ju
Brings in the squashed staged-rollout plan (#290), the e2e-tier fix (#288: Windows path separators in a scan test, CI cancel rules) and the docs-only design PRs. The plan doc's later edits (two-phase policy selection for the in-memory engine) merge with this branch's implementation notes unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings in the merged staged-rollout plan (#290), the Windows scan test fix (#288) and the docs-only design PRs. The plan's late two-phase memory selection is implemented in the next commit. Claude-Session: https://claude.ai/code/session_01BKsyzefGhAnPkYmXCwq3H3 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Waste-review follow-up W0, the fast lane from #286. This PR is kept small so it can land first.
needs: test, from runninge2e_redirect_cargo_build.rs:829) was already fixed by #280 (686e5fb).test (windows-latest)was also red on the base incovgap_commands_scan_mod: on 8ae7dc3 (run 36352437716), on #280's own head (36383945958) and on #281 (36414725782). The cause wasscan_hosted_paths_run_once_per_project_directory(62f07c7), which compared the== apps/a ==header with a literal/path.scanprints the directoryglobmatched, which Windows spellsapps\a; the test now builds the expected header from path components (bd632f5). Proof: on bd632f5,testpassed on ubuntu, macos and windows, and the e2e tier ran for the first time on a v5 head (run 36420943134).getbegan defaulting to hosted (5e5f5ed)e2e_vltvlt_pinned_matrix_agent_get_and_remove(b9286f9, the same change as cc5f1b6 on #285) and the threee2e_safety_pnpmapply tests (c699754) now pass--mode agent. These are one-line test fixes, the same kind 5e5f5ed already applied to the default-tier tests.pull_requestrun superseded by a newer push to the same PR. Push, dispatch and scheduled runs always finish; before,ci.ymlcancelled every run not onmain, and go, pdm and poetry could cancelmainpush runs mid rust-cache save. CI groups PR runs by PR number, which is equivalent torefs/pull/N/merge. Deferred: gating heavy CI on drafts; the cited cancelled run (36371317869) was a real same-PR supersession.Surfaced but not fixed here (not caused by this PR):
yarn-classic 1.0.2 / 1.6.0 / 1.7.0 / 1.9.4mode_migration_npmis a real v5 WS1+WS2: ledger-free hosted mode, upstream-restore rollback, vendor ejects hosted projects #280 gap. yarn < 1.10 writes nointegrityline, so the ledger-free upstream restore refusesvendorover a hosted pin, androllbackcannot land on the pristine old-format lock. It reproduces locally on 1.0.2 and 1.9.4, and 1.22.22 passes. The proposed WS1 fix is in the PR comments.vlt patch compatibilityinstall-proof legs come from v5 WS1+WS2: ledger-free hosted mode, upstream-restore rollback, vendor ejects hosted projects #280's hosted vlt rollback (hosted_wiring_contested).patch.socket.dev(Errno 8,transport failure). WS5: one VendoredBackend for vendored apply/revert/repair; cut repair's ledger rebuild #283 passed the same legs on the same base code.Savings: 15+/14− lines of workflow YAML plus 7+/6− lines of test fixes. The e2e tier now runs on v5 PRs instead of being skipped, and same-PR supersession is unchanged.
CI equivalence: no job, step or trigger changes; only the
concurrencyblocks. A group still holds at most one pending run, so a third dispatch on the same ref displaces a queued one.Tests: locally,
covgap_commands_scan_modpasses 45/45 ande2e_redirect_cargo_build3/3, ande2e_vlt/e2e_safety_pnpmcompile. The real-vlt and live-API legs cannot reach npm or patches-api through this sandbox's proxy, so CI is their proof. Clippy on the CLI tests is clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01AfGnDQMy2FvpExneXmR1qp
Note
Low Risk
Changes are CI concurrency policy and test harness fixes; no production CLI behavior or auth/data paths are modified.
Overview
Unblocks the e2e tier on v5 by fixing CI cancellation and two failing tests.
GitHub Actions concurrency is tightened across
ci.ymland the bun, go, pdm, poetry, and vlt compatibility workflows:cancel-in-progressis true only forpull_requestevents, so pushes tomain,workflow_dispatch, and scheduled runs are no longer cancelled mid-job (protecting rust-cachesave-ifon main).ci.ymlalso groups PR runs bygithub.event.pull_request.numberinstead of ref alone, matching other workflows.Tests:
scan_hosted_paths_run_once_per_project_directorybuilds expected== … ==headers withPath::joinso Windows matches glob output (apps\avsapps/a).fresh_checkoutin the NuGet dotnet e2e suite copies.socket/only when present, reflecting v5 hosted state where the lock alone holds pins.Reviewed by Cursor Bugbot for commit 7e1758b. Configure here.