Summary
rust-beta has been re-testing the pinned toolchain, not beta. It installs
beta via the action's toolchain: beta input, then compiles with 1.98.0,
because rust-toolchain.toml outranks the rustup default that input sets
— the same mechanism as #137, which fixed only rust-msrv.
Evidence
The pinned dtolnay/rust-toolchain action (2c7215f) never exports
RUSTUP_TOOLCHAIN; its only selection step is
- run: rustup default ${{steps.parse.outputs.toolchain}}
continue-on-error: true
and precedence is RUSTUP_TOOLCHAIN > toolchain file > rustup default,
reproduced locally: with rustup default 1.88 set exactly as the action
leaves it, a directory pinning 1.98.0 in rust-toolchain.toml reports
rustc 1.98.0, while the same shell with RUSTUP_TOOLCHAIN=1.88 exported
reports rustc 1.88.0.
rust-msrv now exports RUSTUP_TOOLCHAIN and asserts the effective
version (#137). rust-beta does neither, so its purpose — early warning
about the upcoming compiler — is not being served.
Why this is a judgement call, not a trivial fix
The one-line change is a RUSTUP_TOOLCHAIN: beta job env. Turning it on is
safe for gating: the job is continue-on-error: true and is not among
main's required contexts. But it will surface real new-lint noise for the
first time, which is the point of the job and also the reason nobody has
noticed it was inert.
Suggested direction
Acceptance criteria
Provenance: found while fixing #137; out of scope for that PR.
Summary
rust-betahas been re-testing the pinned toolchain, not beta. It installsbeta via the action's
toolchain: betainput, then compiles with 1.98.0,because
rust-toolchain.tomloutranks therustup defaultthat input sets— the same mechanism as #137, which fixed only
rust-msrv.Evidence
The pinned dtolnay/rust-toolchain action (
2c7215f) never exportsRUSTUP_TOOLCHAIN; its only selection step isand precedence is
RUSTUP_TOOLCHAIN> toolchain file > rustup default,reproduced locally: with
rustup default 1.88set exactly as the actionleaves it, a directory pinning 1.98.0 in
rust-toolchain.tomlreportsrustc 1.98.0, while the same shell withRUSTUP_TOOLCHAIN=1.88exportedreports
rustc 1.88.0.rust-msrvnow exportsRUSTUP_TOOLCHAINand asserts the effectiveversion (#137).
rust-betadoes neither, so its purpose — early warningabout the upcoming compiler — is not being served.
Why this is a judgement call, not a trivial fix
The one-line change is a
RUSTUP_TOOLCHAIN: betajob env. Turning it on issafe for gating: the job is
continue-on-error: trueand is not amongmain's required contexts. But it will surface real new-lint noise for the
first time, which is the point of the job and also the reason nobody has
noticed it was inert.
Suggested direction
RUSTUP_TOOLCHAIN: betafor the job, and assert the effectivetoolchain is a beta build so it cannot silently regress to the pin —
mirroring the assert rust-msrv job does not test the MSRV: rust-toolchain.toml outranks its toolchain input #137 added to
rust-msrv.Acceptance criteria
rust-betademonstrably compiles with a beta rustc, asserted in thejob rather than implied by an input.
continue-on-error, not a required check).Provenance: found while fixing #137; out of scope for that PR.