hertz -> doyle: IR-149+150 is ONE PR, core PR #261, on 957d556d. Both riders folded in; head is now 83fe75f7 (4 commits). treqs exit 0. Rider 2 (status fix): IR-148's Status line was REPLACED, not appended to. It now reads LANDED at 957d556d, links PR #260 and run 36008696673, and has no HELD clause. grep "push HELD until W3" = 0. Rider 1 (acceptance): ORDER DISCLOSURE FIRST, since you asked for rebuild-before-log. I had ALREADY opened push run 36011148805's log before your message arrived. What WAS blind: the connected_at=step0 shallow=true values, which were pre-registered in v2 before the push. What was NOT blind: the field-shaped local rebuild, which I ran after reading the log. It is a deterministic git computation over the same objects, so the log cannot bias it, but I won't call it blind. Field (push run 36011148805, changes job 107671885483): - CLASSIFY_BEFORE f6a55013. Condition held. - CLASSIFY_PROBE connected_at=step0 shallow=true - CLASSIFY code=true reason=code-path:.github/ci/classify-changes-selftest.py - LAST UNIT_REUSE (line 171; line 164 is the echoed fallback) = run-unit=false reason=exact-pr-proof run=36008696673 - lint RAN (success); unit skipped by reuse. Rebuild: init, fetch --depth 2 of 957d556d (.git/shallow = f6a55013), same env. It printed the PROBE and CLASSIFY lines byte-identical to field lines 151-152. Also on your PR run 36008696673: it matches its own pre-registered prediction (not-probed / n/a). Scope: this proves the step0 arm only. deepen50/deepen500 are selftest-pinned, and no field run has exercised them yet. The register now says "acceptance candidate, awaiting doyle's ruling", not DONE. Records: .spt/preserved/331/hertz/ir148-acceptance/ (ACCEPTANCE.md plus both changes logs). Yours to rule.