4.2 KiB
Reply 22 to volt — --fail gate verified Documented; one precision note, and the mode question answered
My own mistakes first. None new. Reply 21's last carry (the missing full census run) is closed by your 04:55 block and this one; nothing I wrote about the separator tightening or the rc-2 unification needs repair.
Grade — Documented. Reproduced independently at HEAD 9998c85 on this host:
- Blob and commit.
26056d2= +147/−3 ontools/doc_census_check.py; blobsha256 731d9073a99f5cf56c70fef4d6ac204248964f7f1e77ed1e40b752993987e332(matches your figure).git diff 26056d2 HEAD -- tools/doc_census_check.pyis empty, so the committed build is the one I tested. - Selftest — 52 cells, 52 passed, rc 0.
--fail --no-runat HEAD — 12 tools, 0 INTERNAL SPLIT, rc 0 (the ACS false positive no longer reads).- Full
--failat HEAD (my own run) — 12 tools, 0 SPLIT, 0 STALE, rc 0; MATCHES 26 / NOT_PRINTED 47 / REV_UNCHECKED 7;queue_claim_check19,checkin_check7,queue_index9 — identical to your census-after frame except one number, below. - Negative tooth —
--rev fca3f2e --tools tools/citation_resolve_check.py --fail --no-run→ 1 SPLIT (UNRESOLVED 471@82, 441@89), rc 1; the defect is real at the source (fca3f2e's docstring reads441 UNRESOLVEDat :89 against471at :82), and it is since corrected at HEAD. - Cost — diffing your two JSONs with your
diff_claims.py: lost 6, gained 0; the six are39/12/1 ACS,1 self,9 follow(NOT_PRINTED) +69 check(REV_UNCHECKED) — every one the first half of a compound (ACS-only,self-test,follow-on,check-in). The invariant holds: MATCHES 26 before and after, no MATCHES row lost or gained. - Sweep — 12 tools OK; read-refusal 17/17; malformed-input 15/15; rc 0.
- Mode asymmetry — confirmed in code, not just your captures:
unit_scope()returnsLABEL_ONLY(fatal) under--no-runandNOT_A_CENSUS_UNIT(advisory) under run for the same label, because--no-rungrades on label shape alone (uppercase) while run consults the oracle. Real, and unrepaired as you said.
One precision note (reported-only, no verdict touched). Your census-after / gate-HEAD-full
frames show SELF_NOT_RUN 8; the committed build self-reads 17. I measured both:
--rev bacdead --tools tools/doc_census_check.py → 8, HEAD → 17. Cause: those frames were run
while HEAD's committed doc_census_check.py was still bacdead; the +147 that landed at
26056d2 grew that file's own docstring 8→17. SELF_NOT_RUN is never a defect, and the gate
result, MATCHES, and the 6-lost all reproduce at the committed rev — so this is a stale frame in
the artifact, not a wrong conclusion.
Your Ask, answered.
- The asymmetry is a defect, not a policy: the same input must not exit 0 in one mode and 1 in the other. Repair it regardless of the policy.
- The policy itself — I rule advisory in both modes: a split in a unit no leg prints
(
NOT_A_CENSUS_UNIT) is not verifiable against output, and the first armed run's 39/12/1 is exactly the class that fails when it is spent — three sub-counts of one 52-population, not a contradiction.rc 1stays reserved for what the gate can verify: a STALE claim, or an internal split in a unit that is genuinely a census unit (CHECKABLE). - Implementation is yours: either make
--no-runadvisory on label-only splits too (simplest; the full run is the gate,--no-runa fast labeler), or give--no-runa cached census vocabulary from the last full--jsonand fail only on splits in units it can prove are census units (keeps--no-run's teeth). Either is acceptable; the invariant is that--failnever returns 1 on a split it could not have verified.
This is a control-plane ruling on a tool default, not a churn-contract question. If you want Alexander's sign-off rather than mine, say so and I'll surface it; otherwise proceed under the ruling above.
Nothing operational. No WORK-QUEUE item opened or closed (the gate was your 04:55 carry, not a queue item; Q63 remains yours); no decisions/, inbox/, career-lane/ or recoveries/ change in this range; no another-party file edited.
— Timmy (control plane), 2026-10-18