Repository navigation
CI: fix nightly vlt migration tests for eject (#1774) - #1775
Conversation
Assisted-by: Claude Code:claude-opus-5-5
The nightly mode_migration_vlt legs have failed on every vlt release since #1648. That change made plain `vendor` with a hosted pin in scope an eject: the dry run reports `eject_planned`, and the wet run no longer announces a per-purl takeover. The PR-tier migration suites were updated, but these real-vlt tests run only nightly and still expected the old takeover advisories. Assert the eject contract instead: `eject_planned` on the dry run, and on the wet `vendor` no takeover event, no revert failure, and the `redirect_vlt_reinstall_required` warning from the store heal. `scan --mode vendored` keeps asserting its takeover. The vendor runs and every later check (pure vendored lock, fresh checkouts, exact revert) are unchanged. Fixes #1774 Assisted-by: Claude Code:claude-opus-5-5
Tie the dry run's `eject_planned` to the hosted pin (exactly one plan, not the bystander), check that the eject leaves the staged manifest byte-identical, and require the warm vlt store heal warning from both the scan takeover and the eject. Pick the driver's contract with a bool instead of a driver-name string, and fix stale doc wording. Refs #1774 Assisted-by: Claude Code:claude-opus-5-5
|
BugBot review Generated by Claude Code |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit ccb4d43. Configure here.
|
Ready for review at
Generated by Claude Code |
|
Ready for review at
Generated by Claude Code |
Final review briefWhat it does. Test-only fix for the nightly Risk: low. One test file; no product code. These tests are Look here
Verified
Changes I made: none. (Nit, not blocking: two re-flowed doc-comment lines at the top of the file and in the dry-run-parity doc run past 100 columns; rustfmt doesn't wrap comments, so CI is fine.) Open questions: none. Auto-merge (squash) is armed, so approving sends it straight to the merge queue. Generated by Claude Code |
LLM Description written by Claude Code:claude-opus-5-5
Fixes #1774
Summary
Every
e2e-extended (mode_migration_vlt, *)leg has been red on the nightly since #1648 (run 40639505834):vlt_pinned_matrix_migration_dry_run_parityandvlt_pinned_matrix_migration_hosted_then_vendoredfail on vlt 0.0.0-32, 1.0.0-rc.14 and 1.2.0 (Linux, and the Windows/macOS legs).Root cause
#1648 made plain
vendorwith a hosted pin in scope an eject: the dry run reportseject_planned(notvendor_would_revert_redirect), and the wet run no longer emitsvendor_takeover_reverted_redirect. #1648 updated the PR-tier migration suites (mode_migration_bun.rs,_npm,_cargo,_pypi) and the in-process vlt test (in_process_vendor_bun_takeover/vlt.rs), but missedmode_migration_vlt.rs. Its tests are#[ignore](real vlt) and run only in the nightly, so PR and merge-queue CI never saw it. The vendor runs themselves succeed; only the stale advisory assertions fail.Same #1648 fallout as #1770 (
e2e_bun_lockb.rs, fixed in #1771 / #1772); a different file, so no overlap.Changes (test-only,
crates/socket-patch-cli/tests/mode_migration_vlt.rs)assert_vendored_over_hosted(eject, ..): only thescan --mode vendoredtakeover may announcevendor_takeover_reverted_redirect; the plainvendoreject must not. Both must report noredirect_revert_failedand theredirect_vlt_reinstall_requiredwarning from the warm-store heal (the contractin_process_vendor_bun_takeover/vlt.rsasserts).hosted_then_vendored,vendordriver: the staged manifest must be byte-identical after the eject.dry_run_parity:vendor --dry-runmust plan exactly one eject (eject_planned), for the hosted pin and not the bystander, and must not emitvendor_would_revert_redirect; the wetvendoruses the helper.vendor.Everything after the vendor runs (pure vendored lock, fresh-checkout installs, exact
vendor --revert, hosted re-scan) is unchanged.Evidence
Run locally with the real vlt releases the nightly pins (
scripts/install-vlt.sh,SOCKET_PATCH_VLT_E2E_{JS,VERSION,REQUIRED},LANG=C),cargo test -p socket-patch-cli --all-features --test mode_migration_vlt -- --include-ignored vlt_pinned_matrix:Also:
cargo fmt --all -- --checkclean;cargo clippy --locked -p socket-patch-cli --all-features --test mode_migration_vlt -- -D warningsreports the same 2 pre-existingduplicate_moderrors as main and nothing new. (The sandbox's TLS proxy is not in reqwest's webpki roots, so I pre-seeded the harness's npm package cache with curl; the test code is unchanged by that.)Windows/macOS legs are not run on PRs; the change is platform-neutral (no
cfg), so no full-scope dispatch./code-review high
Fixed: eject tied to the hosted purl with an exact count; manifest-untouched check on the eject; heal warning asserted for both drivers (verified the scan takeover emits it on all three vlt releases); bool instead of a driver-name string; stale doc wording and wrapping.
Not fixed:
in_process_vendor_bun_takeover/vlt.rsalready covers "the manifest is not the eject's input"; this nightly leg now checks the manifest is untouched.CI cost
No workflow change. Lean PR run: same ~28 Linux jobs, ~8 min, before and after. These legs stay nightly-only.
https://claude.ai/code/session_011f9aePnKQscLjaCGykq81B
Generated by Claude Code