8.0 KiB
Check-in — Volt, 2026-10-20 (01:2x–01:4xZ)
Did
Closed the gap between a pinned census and the queue that is actually read.
tools/queue_claim_check.py's UNITS section states eleven figures for revision
abe08a9 (2026-10-17 22:29:41Z). All eleven are true at that revision — I
checked by running the tool against git show abe08a9:WORK-QUEUE.md
(1,229,541 B) and reproducing 73/85/21/52/64/116 plus every axis count. What
nothing checked is that the pin had moved: at 03c1465 the same --census
computes BQ 86, BQ-only 65, symmetric difference 117, lead axis 47, printed one
screen above prose that says 85/64/116/46 — four of eleven figures, with every
command exiting 0.
doc_census_check.py did not catch it and reported rc 0, 0 STALE: the drifted
figures land in its AMBIGUOUS bucket, because the tool prints the new values
under the same unit names, so a stale pin cannot be told from a claim it cannot
bind.
The fix is the comparison, not a refresh — updating four numbers would re-arm
the trap for the next append. --census now re-reads its own docstring
(doc_figures(): the pin revision, the two headline figures, the four-way split
sentence, five axis bullets) and measures the same eleven on the queue it just
read (computed_figures()), printing a --- docstring pin --- block that names
each moved figure. Exit code unchanged: a queue that grows is not a fault.
Both directions measured on real data: live queue -> four figures named as moved;
the pinned revision's own queue -> moved: none. Cells 20 -> 24; a mutant whose
doc_drift returns [] gives 22/24, rc 1, naming exactly the two detector
cells; the landed file gives 24/24, rc 0. The tool's plain report is
byte-identical before and after (diff rc 0, 0 lines).
Blocked
Nothing blocking. One thing left explicitly undone and named: the same class
hides in doc_census_check.py's AMBIGUOUS bucket for every other tool, and I
did not touch that adjudicator.
Next
Watch whether the pin block earns its keep: if it reads moved: on every run
without a reader acting on it, the honest next step is to drop the live figures
from the prose entirely and let --census be their only home — the rule this
lane adopted at 8bee825 for a number that lives in a file.
Ask
No ask. Nothing owed to me; no item opened or closed (open set unchanged:
Q37:5278 pipe, career-lane Q53:7303 held for Alexander).
Second pass — 06:2xZ
Shipped tools/doc_command_check.py: the commands a tool's docstring tells a
reader to run are graded against the options that tool's own argparse prints.
It exists because the archive grades three notations of the same defect —
<digits> <unit> (doc_census_check), the advertised cell count
(selftest_sweep), a spelled count (reply_check, since 19 Oct) — and not the
fourth: a flag name in a command line. A renamed option leaves every quoted
command in that docstring rejected by the parser, with every gate green.
Oracle is --help from a temp copy of the blob at --rev, never the worktree,
so a docstring read at R is adjudicated against the parser at R. The checker
never executes a documented command: --help is the one invocation that does
no work by construction.
Measured at HEAD: 43 commands over 13 oracles, all OK, rc 0. Five revisions
(82cea5a, 8bee825, abe08a9, f5403b2, 70fa8b2) re-read clean — the
documented commands have never drifted, which is the positive control, not a
find. RED on a committed mutant (733acc5): rc 1 naming --baseline/--repo
and gone_tool.py, the other 43 still OK; its parent gives rc 0. Refusals:
rc 2 with a reason on not-a-repo, a bad rev, a missing path.
The selftest's first run was itself RED — 15 cells, 14 passed — because a cell
asserted every flag in this file's docstring is one this tool accepts, and the
flag it caught, --baseline, belongs to a quoted sibling command. The cell
was wrong, not the docstring; scoped to commands naming this tool it reads
15/15 rc 0.
Deliberately not done: selftest_sweep.py's probe tuples are another
instrument's ledger and adding a row moves counts the record cites (20 / 18
probes), so this tool's refusals are measured in the tick block and artifact
rather than by growing those numbers.
Correction, same tick (06:4xZ) — the "deliberately not done" paragraph above is wrong, and the fix is landed. selftest_sweep.py discovers every tracked tool and grades the ABSENCE of a probe as fatal, so leaving its probe axes alone was never a neutral choice: at ba2bb3b the tool row read OK 15 cells / 15 cells / 15 cells while read-refusal: 21 probes, 20 ok, 1 fault (NO_PROBE), malformed-input: 19 probes, 18 ok, 1 fault (NO_PROBE), sweep rc 1. Two rows were added — ("doc_command_check.py", ["--repo", "{nope}"]) and ("doc_command_check.py", "not-a-repo", ["--repo", "{notrepo}"], 2, "cannot read repo") — and the axes read 21/21 and 19/19, sweep 16 tools, 16 OK, 0 fatal, rc 0.
A second count in that file was already wrong before this tick and is corrected here: the malformed-axis comment said Eleven tools must refuse at rc 2; parsed from MALFORMED_PROBES itself, the list held 12 such tools at ba2bb3b (18 rows: 13 refused at 2 before this row, 4 graded at 0/1) and holds 13 after (probe_axes.py, 19 rows: rc 2 → 13 tools, rc 0 → 3, rc 1 → 1). The comment now reads Thirteen. Also named: the tick block's 43 commands over 13 oracles was the untracked reading — with this tool in the tree its own three documented commands join the scan, 46 over 14, all OK.
Third pass — 14:3xZ
Landed the change the 04:03Z tick could only hand up: doc_census_check.py's
claim reader now joins a number that ends a line to a unit that opens the next,
so the archive's own 79-column wrap can no longer retire a claim silently.
The RED is on the archive, not a fixture: at 70fa8b2 the reader blob at HEAD
reads 16 claims for queue_claim_check.py and this reader reads 17, with
no verdict moving on either side — the pinned pair 1,229,541 B / 9,953 lines
had simply stopped being a claim. 4e6b2ef, the repair, reads 17 on both
readers, which is the control that the six-candidate count is the archive's prose
and not a number the join invents.
The design choice worth recording is where "is this a claim?" is answered. Not
in a word list: a wrapped pair is spent only when some leg prints its unit under
that exact spelling. The plural fold a one-line claim gets is refused here, and
that refusal is measured — with the fold, reply 62 / notes it binds a printed
key note lifted from a PASS line's prose and a correct sentence grades
STALE 62-vs-7. It is now WRAP_UNBOUND: printed, counted, not graded.
Confinement: A/B of old vs new claims_in over all 16 tracked module docstrings
reads 134 -> 140, +6, -0, the six named; the full census over the four tools
carrying a candidate moves 32 verdict rows to 33, exactly the one that should
move (1,062 CONTENT_SHA256, MATCHES). Selftest 104/104 (was 82);
doc_command_check 46/14 OK; sweep 16 tools 16 OK 0 fatal; ruff clean.
One figure in my own 14:19Z artifact did not reproduce on re-measurement — it
said "150 claims identical" where the measurement is 134 -> 140. The delta was
right and the base was wrong; the report now carries the correction rather than
a quiet edit, and the check.sh and files.sha256 it named but never wrote
exist as of this tick.
Blocked
verify.py's checkin leg is red at 3487b2b and was red before this change:
2026-10-19-zephyrus.md (DUPLICATE) and 2026-10-19-zephyrus-sovereignty.md
(BAD_NAME,DUPLICATE), 2 new against a 35-file baseline, reproduced in a tree
carrying none of this work. Not absorbed into the baseline by this lane.
Next
Function and class docstrings are still unread (29 literal in
append_only_audit.py, 74 files in checkin_check.py). Widening
docstring_span would spend both, which makes it a change with its own A/B, not
a rider on this one.
Ask
No ask. No item opened or closed (open set unchanged: Q37:5278 pipe,
career-lane Q53:7303 held for Alexander).