You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Warnings (product) job in Tests builds with warnings denied. Since #7250 landed it fails on two warnings from the new gc/barrier_arming module, so every PR opened after that commit inherits a red Warnings (product) regardless of its content.
From the job log (Warnings (product), run 30762914997):
error: glob import doesn't reexport anything with visibility `pub(crate)`
because no imported item is public enough
70 | pub(crate) use barrier_arming::*;
= help: reduce the glob import's visibility or increase visibility of imported items
error: function `remembered_reconstruct_census` is never used
--> crates/perry-runtime/src/gc/barrier_arming.rs:118:15
error: could not compile `perry-runtime` (lib) due to 2 previous errors
Both reproduce locally on a plain cargo build --profile perry-dev -p perry -p perry-runtime-static -p perry-stdlib-static (as a warning rather than an error, since that build does not deny).
Why it was not caught
main's last Tests run was c9cd73ba5 at 2026-08-02 07:41, and barrier_arming.rs landed in c7893c4ac at 2026-08-02 12:58 — about five hours later. git merge-base --is-ancestor c7893c4ac c9cd73ba5 is false, so no main run has ever compiled this module under the warnings gate. The most recent mainTests run showing Warnings (product): success predates the code entirely.
This is the "a gate can be unable to fail" family from CLAUDE.md, in its fourth form: the job is genuinely running and genuinely green on main, but its subject never reached it.
Fix sketch
gc/mod.rs:70 — either give barrier_arming's intended exports pub(crate) visibility, or drop the pub(crate) use barrier_arming::*; glob if nothing is meant to be re-exported.
gc/barrier_arming.rs:118 — remembered_reconstruct_census is dead. Either wire it into the diagnostic path it was written for, gate it behind the relevant cfg, or delete it. Given perf(gc): stop maintaining a remembered set nothing has read yet (#7187 Phase A) #7250's lazily-armed remembered set, a census helper that nothing calls is worth a second look before it is simply silenced — an #[allow(dead_code)] would hide the question rather than answer it.
The
Warnings (product)job inTestsbuilds with warnings denied. Since #7250 landed it fails on two warnings from the newgc/barrier_armingmodule, so every PR opened after that commit inherits a redWarnings (product)regardless of its content.From the job log (
Warnings (product), run 30762914997):Both reproduce locally on a plain
cargo build --profile perry-dev -p perry -p perry-runtime-static -p perry-stdlib-static(as a warning rather than an error, since that build does not deny).Why it was not caught
main's lastTestsrun wasc9cd73ba5at 2026-08-02 07:41, andbarrier_arming.rslanded inc7893c4acat 2026-08-02 12:58 — about five hours later.git merge-base --is-ancestor c7893c4ac c9cd73ba5is false, so nomainrun has ever compiled this module under the warnings gate. The most recentmainTestsrun showingWarnings (product): successpredates the code entirely.This is the "a gate can be unable to fail" family from CLAUDE.md, in its fourth form: the job is genuinely running and genuinely green on
main, but its subject never reached it.Fix sketch
gc/mod.rs:70— either givebarrier_arming's intended exportspub(crate)visibility, or drop thepub(crate) use barrier_arming::*;glob if nothing is meant to be re-exported.gc/barrier_arming.rs:118—remembered_reconstruct_censusis dead. Either wire it into the diagnostic path it was written for, gate it behind the relevantcfg, or delete it. Given perf(gc): stop maintaining a remembered set nothing has read yet (#7187 Phase A) #7250's lazily-armed remembered set, a census helper that nothing calls is worth a second look before it is simply silenced — an#[allow(dead_code)]would hide the question rather than answer it.Notes
lintgates in fix(lint): clear the GC store-site and address-classification gates (#7258, #7259) #7273; both files are untouched by that PR, which is why it is filed rather than fixed there (andgc/is live territory for gc/perf: classify_heap_generation is 19% of batch.ts (57.4% total GC bookkeeping) with ZERO collections running — write-barrier tower needs its own lever (#5094 evidence) #7187 / gc-matrix: four of the six PR-gating arms run ZERO copying minors corpus-wide (default/verify_evac/cons_scan_off at copy-minor 0/49; header still claims 12/22) #7255).gc-ratchetred on the same PR — that is gc-matrix: four of the six PR-gating arms run ZERO copying minors corpus-wide (default/verify_evac/cons_scan_off at copy-minor 0/49; header still claims 12/22) #7255 (zero copying minors corpus-wide), also pre-existing onmainfor at least six consecutive runs.