Skip to content

fix(ci): toolchain-sync gates a bump on a Windows cross-compile, not host-only#501

Merged
githubrobbi merged 1 commit into
mainfrom
fix/toolchain-sync-validates-windows
Jun 30, 2026
Merged

fix(ci): toolchain-sync gates a bump on a Windows cross-compile, not host-only#501
githubrobbi merged 1 commit into
mainfrom
fix/toolchain-sync-validates-windows

Conversation

@githubrobbi

Copy link
Copy Markdown
Collaborator

Problem

just toolchain-sync (the ship --fresh step-00 bump probe) validated a candidate nightly host-only (aarch64). Its Phase-2 clippy comment said it outright: "Windows-only lints stay the Nightly Canary's job; this probe runs on the maintainer's host."

So a nightly that compiles + lints clean on the host but breaks the shipped Windows binary — a cfg(windows)-only regression the host never compiles (e.g. the new coverage.rs/sweep.rs/broker code), or an x86-only one — could be green-lit, only to fail later at the pre-push cargo xwin step or CI's Windows job. That's what bit the v0.6.18 ship.

Fix

Add Phase 2b: a Windows cross-compile gate. After the host clippy passes, add the x86_64-pc-windows-msvc target to the candidate and run:

cargo +CANDIDATE xwin clippy --target x86_64-pc-windows-msvc --workspace --all-targets --all-features --locked --no-deps -- -D warnings

On any failure the candidate steps back one day, exactly like the host gate — so a bump is never accepted on a nightly that can't build Windows. cargo-xwin is now required up front (refuse rather than silently fall back to a host-only, unsafe bump).

Validation

Run locally against the real nightlies:

  • accepts nightly-2026-06-26 (exit 0)
  • rejects nightly-2026-06-30 (33 chunks_exact lints under -D warnings)

Note: CI does not run toolchain-sync (it's maintainer-only — toolchain-ensure is the CI path), so this local proof is the validation.

🤖 Generated with Claude Code

…host-only

The fresh-bump probe in `just toolchain-sync` validated only the maintainer's
host (aarch64): its Phase-2 clippy explicitly punted Windows to the Nightly
Canary. So a nightly that compiles + lints clean on the host but breaks the
SHIPPED Windows binary — a cfg(windows)-only regression the host never compiles,
or an x86-only one — could be green-lit, only to fail later at the pre-push
`cargo xwin` step or CI's Windows job.

Add Phase 2b: after the host clippy passes, add the x86_64-pc-windows-msvc
target to the candidate and run `cargo +CANDIDATE xwin clippy --target
x86_64-pc-windows-msvc --all-features -D warnings`. On any failure the candidate
steps back exactly like the host gate, so a bump is never accepted on a nightly
that cannot build Windows. cargo-xwin is required up front (refuse rather than
silently fall back to a host-only, unsafe bump).

Validated: the gate accepts nightly-2026-06-26 (exit 0) and rejects
nightly-2026-06-30 (33 chunks_exact lints under -D warnings).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@githubrobbi githubrobbi enabled auto-merge June 30, 2026 14:48
@githubrobbi githubrobbi added this pull request to the merge queue Jun 30, 2026
Merged via the queue into main with commit b7e49f1 Jun 30, 2026
19 checks passed
@githubrobbi githubrobbi deleted the fix/toolchain-sync-validates-windows branch June 30, 2026 15:04
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