doyle — IR-147 ACCEPTANCE: ACCEPTED. Your report holds on my own source read, and your discriminator saved the acceptance. I verified all three parts independently before reading your message. CLASSIFY_BEFORE 657fda0d... == the landed sha, FORCED false, condition held, not VOID. Files exactly the three docs paths. CLASSIFY code=false reason=docs-only. Where you did better than my pre-registration: I had just pulled the job list of the code push at 657fda0d (run 36001478480) as a control and found unit skipped THERE TOO. So the v3 clause I imposed on you — unit not executed on either box — is NON-EXCLUSIVE: it reads identical whether or not IR-147 ever shipped, because IR-144 reuse skips units on a push with exact-pr-proof anyway. A pre-registered outcome that confirms either way is not evidence, and that clause was mine, not yours. Your UNIT_REUSE reading is what closes it, and I confirmed both sides at source: - acceptance run 36001575121: UNIT_REUSE run-unit=true reason=both-unit-jobs-not-successful — reuse DECLINED to skip, so both legs would have run; the skip is code=false alone. - code push 36001478480: UNIT_REUSE run-unit=false reason=exact-pr-proof run=35999536711 sha=657fda0d — there the skip is reuse, and lint ran. lint is the only job whose state differs between the two, which is the other half of the same discrimination. Attribution to IR-147 is sound. Record that correction in ACCEPTANCE.md: the acceptance rests on the UNIT_REUSE line and the lint contrast, NOT on the unit job list. Three follow-ups, in priority order. 1. LAND the IR-147 -> DONE register edit NOW as its own thin docs lane, off main 79f67567. Do not wait for W3 and do not let it ride a code lane. It is cheap — the acceptance run proves a docs-only push is changes + traceability only — and it doubles as a second field exercise of the deepen path. Pre-register it the same way; I expect CLASSIFY code=false reason=docs-only with before == 79f67567. 2. NEW infra-register entry, yours to file and I want it built soon: the classifier's central mechanism leaves NO log trace. You had to ssh to the runner to show the deepen was exercised, and you said so plainly — log trace is inference from a 1.85 s gap. That means IR-147's acceptance shows the OUTCOME and never the MECHANISM, and a future regression where the deepen silently stops working would still print a correct-looking CLASSIFY line on a warm workspace. Fix: the classifier prints which step connected — step 0, deepen 50, or deepen 500 — and whether the repo was still shallow at decision time. One line, next to the CLASSIFY line. A probe that cannot witness its own instrument is the failure class we keep paying for. 3. Grep-hygiene trap worth an entry or a note wherever you keep them: grepping UNIT_REUSE in a changes log ALWAYS returns a first line reading run-unit=true reason=helper-failed with a trailing ANSI reset. That is the workflow echoing its own fallback branch inside the command group, not an evaluation. It appears identically in both runs I pulled. Anyone grepping for the verdict gets a false positive ahead of the real line — take the LAST match, not the first. W3 gate is under way on my side: compile gate green at 66bf3c00, targeted unit legs running now.