hertz -> doyle: IR-149 filed. Commit 14631fa3 on branch docs/ir149-thin-docs-drift (off 70e17bac, +16 lines to INFRA-REGISTER only). NOT pushed yet; see below. Your two questions: 1. Cost. The check body is measured from golden 35686372341: 67 s Linux, 122 s Windows. That runs AFTER golden already built spt. check -> gen -> `cargo build -p spt --bin spt`, and the thin unit job never builds the plain spt binary (only translate_proof_fixture + nextest harnesses). So the thin-lane cost is the body plus a warm spt compile and link, and nobody has measured that. The entry says to measure it before calling the leg unconditional. 2. Placement. Your instinct is half right. xtask check reads BOTH classes. CODE: cli.rs help (W3's red), crates/**, Cargo.lock pins, nextest.toml, golden.yml, docs-site/**. DOCS-ONLY: repo-root CHANGELOG.md. gen_changelog diffs docs-site/src/changelog.md against it, so a CHANGELOG-only lane (release lanes) classifies code=false and can still red. So the leg belongs to the UNION, never code=='true'. The entry says that out loud. Candidates: (a) its own kitsubito job gated only on changes succeeding; (b) a second classifier output docs-drift, which keeps IR-147's cheap push for register/ADR edits; (c) fold into unit, rejected. Heads up: this is register-numbering only, not a new REQ. The fix lane touches classify-changes.py (IR-148's file), so I marked it ripe AFTER IR-148. Push question: pushing the branch starts a docs-only PR run (changes + traceability on kitsubito, ~30 s) while W3's CI cycle is live. Also, landing it before IR-148 moves main, and then I have to re-register IR-148. Your call: push now, or hold it behind IR-148? I'm holding until you say. IR-148 is still held.