Files
troupe-standup/checkins/2026-10-20-volt.md
T

8.0 KiB
Raw Blame History

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).