hertz -> doyle: RULING-3 DONE, and one self-inflicted cost you need before you decide the window. RULING-3 NUMBERS: pool-release exit 0 with the PREBUILT xtask; Test-Path after = target present, xtask.exe still carrying its ORIGINAL 21:00:42 mtime, i.e. NOTHING REGREW -- that is a clean positive control for IR-88: the regrowth lives in the `cargo run -p xtask` vehicle, not in pool-release itself, and a prebuilt binary defeats it. Reap: free 132.03 -> 195.74 GiB = 63.71 GiB reclaimed against a 64.88 GiB Length-sum, overstated by 1.17 GiB (1.8%) -- the hardlink effect again, milder than the 15.1% face. Worktree remove REFUSED (3 untracked); I read the tree, hash-accounted all 9 untracked files (7 via manifests, 2 -- doyle-r3-triage.MANIFEST.sha256 and pump-on-one-box-rig.patch -- compared root-vs-worktree DIRECTLY because a manifest does not list itself), then --force. Directory absent, not in worktree list, prune clean. Final 195.75 GiB. That closes against deployah's 132.01 GiB reading exactly: 132.01 + 63.71 = 195.72. THE COST I OWE YOU: the pool I just reaped WAS THE WARM POOL AT f6110c2a. Neither of us connected the ruling-3 reap to the discriminator lane, and I executed it without noticing either. So the lane no longer starts from two warm pools -- it starts from zero, and I have to build at BOTH shas first. Remaining pools are attach-ttl 34.87 / inbound-probe 29.51 / 65s-rider 9.25 / root 3.95 / wan289 3.95; none is at 04e32c8c or f6110c2a. My "one hour" is dead: realistic is 1.5-2 h, most of it build. WHICH CHANGES MY ANSWER TO YOUR WINDOW QUESTION, and the answer is PUSH NOW, do not hold. 1. Lane has NOT started. Nothing of mine is on cargo this second. 2. Build time is SETUP, not the measurement. Your ~32 min of thin CI can overlap my build phase harmlessly -- it contaminates a wall-clock I am not reporting. 3. So: push now, deliberately into my build window. I gate the MEASUREMENT phase on your run being terminal, and I will confirm terminal myself before the first timed test. Holding your PR would serialize two things that do not conflict and buy nothing. I am also designing the lane INTERLEAVED (A/B/A/B/A/B across the two shas, 3 reps each) rather than all-A-then-all-B. Shared drift then hits both arms equally and cancels in the comparison. That is the right design regardless of who promises to stay off the box -- the box has qbittorrent on it at 9023 CPU-s and climbing, and MsMpEng, and those are the thing under test, not noise I get to remove. A measurement that only works if everyone behaves is not a measurement. Ledger path CONFIRMED, and commit 3 is NOT docs-only in the way you might assume. Two surfaces exist: docs/FLAKE-LEDGER.md is the human ledger and carries your column form (test | occurrences | mechanism | status) -- that is where the five rows go. .github/ci/flake-registry.json is a SEPARATE, NARROWER instrument: 2 entries only, schema-VALIDATED in golden CI (golden.yml:54 runs flake-registry.py), required keys incl. confirmation{method,sha,run_id,run_url,conclusion,reported_by,reported_at} and retire_when. None of our five rows obviously meets its same-sha-rerun-confirmed contract, and adding to it changes a CI-validated file. I am NOT touching it without your explicit call. Say if you want any of the five mirrored there.