The UNITS section states 11 figures for revision abe08a9 and every one of them
is true there (verified against `git show abe08a9:WORK-QUEUE.md`). Nothing
compared them to the queue the tool prints: at 03c1465 four of the eleven had
moved (BQ 85->86, BQ-only 64->65, symmetric difference 116->117, lead axis
46->47) while every command exited 0 and doc_census_check reported 0 STALE,
because the moved figures land in its AMBIGUOUS bucket.
--census now re-reads the prose (doc_figures), measures the same 11 figures on
the queue it just read (computed_figures), and prints a docstring-pin block
naming each figure that moved. Exit code unchanged: a queue that grows is not a
fault. Measured both ways -- live queue names four moves, the pinned revision's
own queue reads "moved: none".
Cells 20 -> 24 (4 doc-pin). Mutant returning [] from doc_drift: 22/24, rc 1,
naming doc pin 2 and 4. Landed: 24/24, rc 0. The tool's plain report is
byte-identical before and after (diff rc 0). Gate 5/5, sweep 15/15, doc-census
0 STALE, ruff clean.
The repo test was `os.path.isdir(<repo>/.git)`, which is wrong in both
directions. A LINKED worktree's `.git` is a 47-byte FILE (`gitdir: ...`), so
`git worktree add --detach <path>` produced a checkout the gate refused with
rc 2 "not a git repository" -- measured at cf5101f: the committed blob rc 2,
the fixed blob rc 0 with four legs PASS in the same tree, and 5 of 5 legs PASS
with --fast off (selftest-sweep: 15 tools, 15 OK, 0 fatal). An empty directory
named `.git` was the same test's false positive: it passed while git refused
the path.
`resolve_repo()` asks `git -C <repo> rev-parse --show-toplevel`: it succeeds in
every work tree (main, linked, submodule) and fails in a bare repo or a bare
`.git` directory. `--repo` stays the ROOT -- a subdirectory is rc 2 naming the
root it would have graded, because widening it silently would grade a tree
nobody named. Legs, rcs and --queue/--index semantics are untouched.
Selftest: _fixture() now `git init`s a real work tree (it used to create an
empty `.git/`, a repository only to the test being replaced) and takes
commit=True where a cell needs a HEAD to branch from. New cells 23/23b/23c
(a linked worktree is graded, and the row names the worktree -- RED on the old
blob), 24/24b (subdirectory refused, root named), 25/25b (empty .git refused),
26 (bare repo refused). 42 -> 50 cells, 50/50, rc 0.
No queue item opened or closed; no another-party file edited.
Queue block appends at the foot (offset 10080 -> 10094 lines, 1271673 ->
1276470 B): the measured hole (three-leg gate rc 0 on a clone whose
checkin_check --fail is rc 1), the leg's unit and cost (124-153 ms, cheapest,
first), why one day (35 historical faults, 2026-09-24..2026-10-07), the
pick_detail tiering fix found by the first real run, and what it does not do.
Index re-rendered in this same commit: queue_index --check rc 0 (49 sections,
45 ids, 4 continuations, 9 nested, 10094 lines / 1276470 B); Q53 refs 122 -> 123
is this block's own mention. No item opened or closed; open set unchanged
Q37:5278, Q53:7303.
Third tick, appended: measured the open question the previous tick left under
Next, implemented the fence mask in tools/citation_resolve_check.py (efe7ec6),
and published the pre/post witness.
Evidence, all at a2d9bc0 and all reproducing:
probe (imports nothing from the tool): 2,273 citation rows, 6 fenced (0.26%),
UNRESOLVED 5 / AS_SELF 1 / every other class 0; 398 of 7,890 mentions fenced
witness verify_fix.py, pre build from `git show a2d9bc0:...` vs post build on
the same corpus and revision: 6 removed, all fenced; 0 rows added; 0
surviving rows changed verdict, target or multiplicity; census delta is the
fenced rows only; rc 0
selftest 11 -> 14 fixtures, 14/14 rc 0
doc_census --tools ... --fail: 22 claims, 0 split, 0 STALE, rc 0
verify.py: 3 legs, 3 pass, rc 0
Also recorded: the full-corpus doc census started this tick was discarded as a
census over a moving tree, and the inline-quote limitation is unchanged.
The background doc_census_check run finished at 00:30:23Z against fd84b68 on a
clean tree: 123 claims, 26 MATCHES / 54 NOT_PRINTED / 11 AMBIGUOUS /
8 REV_UNCHECKED / 24 SELF_NOT_RUN, rc 0. The earlier 180s kill was a timeout,
not a hang.
headings_missing() scanned every line for ^#{1,6}\s+ with no fence state, so a
check-in that quotes the four-heading contract in a fenced block was graded as
carrying all four headings while carrying none as structure. queue_index.py has
skipped fences since it was written; the check-in reader never did.
Pre-fix on the quoted fixture: headings_missing == [] (false green).
Post-fix: ['next','ask']. Blast radius on the record is zero: over all 74 files
in checkins/ the advisory count is 60 before and 60 after, 0 files change grade.
selftest 27 -> 29 cells (c28 quoted heading, c29 unclosed fence), both advertised
counts updated. verify.py 3/3 rc 0 (sweep 14 tools, 14 OK, 0 fatal).
The old guard cut at the first '**', which is right for '**Status: value**'
and returns '' for '**Status:** value'. Empty is falsy, so the parse stored
None and docs/queue-index.md rendered '--' for Q13:1129, which states
'1 of 8 has a decision and staged correction'. status_value() strips a
leading bold close, then a trailing one, so both forms yield the value.
selftest 54 -> 58 cells (inline fixture, no existing line numbers move).
docs/queue-index.md regenerated: exactly 2 lines (the Q13 cell + its pin).
Independent witness in wizard-outputs: rc 0 on the fixed document, rc 1
naming row 13 on the pre-fix one. verify.py 3/3 rc 0.
index-current (queue_index --check), append-audit (queue_append_audit --guard
--to HEAD), selftest-sweep (skippable with --fast, printed SKIP and counted as
skipped). rc 0 graded clean / 1 graded a fault / 2 could not grade, with 2
outranking 1 so an ungradable leg cannot be read as a certified run; the fault
count is still printed beside it. Tools resolve from --repo, not from this
file's directory, so a worktree is graded with its own instruments.
selftest 24/24 (stub legs through the real CLI: rc mapping incl. retired rc 3,
missing tool, timeout, --fast, --json, missing repo, fixed order). Added to
both sweep probe axes (read-refusal 19/19, malformed 17/17, 14 tools 14 OK) and
the sweep's stale "15 such probes / nine tools" prose corrected to 17 / ten.
Green at 019b75c: 3/3 pass, rc 0. Red paths on a full 785-commit clone:
0 -> 1 (working-tree append, no re-render) -> 0 (--write) -> 1 (committed
stale: both legs faulted) -> 2 (tool absent; index fault still printed).
Queue tick appended and index re-rendered in this same commit.
The block names its HEAD in bullet 1 but not in the scope sentence; this repo's rule is that a claim citing a mutable count names its revision. Appended to the check-in rather than rewritten in the ledger, so history stands and the frame is recorded.
Measured at 69f3b56: queue_index --check -> rc 1, STALE at line 59, Q45 7594-9953/337280 in the document vs 7594-9962/340848 in the queue, pinned queue sha 34f1523c.. vs real 7e222ce2...
Cause by commit: git show --stat 067afdf = WORK-QUEUE.md, 1 file, 9 insertions. The index pins the queue sha256, so any queue write without a same-commit re-render is red by construction.
Controls (detached worktrees, same tool): 067afdf rc 1, ece5228 rc 1, 39312c2 rc 0. Since the index existed at 1423c4d: 6 queue-touching commits, 3 re-rendered, 3 left the pin stale.
Fix: --write, 9 insertions/9 deletions across 5 hunks (git diff -U1) of the generated index; no tool changed.
Also recorded in the ledger block: doc_census_check --fail --no-run grades 0 claims at 69f3b56 (no oracle), so it must not be wired as a gate before a vocabulary cache exists.
The full census at 4ce1aed (the run my 2026-10-18 check-in owed) reported two
STALE claims against checkin_check.py:59 -- "read as UTF-8. Never 1, never a
traceback." -- where the 8 is the tail of UTF-8 and the 1 is an exit code.
Both are false defect claims.
Measured over all 12 committed docstrings: 140 claims read, 95 real. The rest
were welded hex (83acffe0 -> 83 acffe0, 11), ordinals/sentence ends (1.
INTERNAL, 8. Never, 5), compound adjectives (120-char, 5), list markers (0
ran, 4) and trailing commas (1, which -> claim 1 of unit which, 8).
Three rules: sep is one space or a closing delimiter + space; num is
[0-9]+(?:,[0-9]{3})*, so a trailing comma is punctuation; ordinal_at() refuses
a line-leading number followed by 2+ spaces. Six cells: 35 -> 41.
Same revision, same docstrings, after: 145 -> 105 verdict rows, STALE 2 -> 0,
NOT_PRINTED 87 -> 52, and the 26 MATCHES are the same 26 rows (lost: [],
gained: []) -- no adjudicated verification was dropped.
selftest 41/41 rc 0; selftest_sweep 12 tools 12 OK 0 fatal; read-refusal 17/17;
malformed-input 15/15.
Named, not fixed: doc_census_check returns 0 with STALE > 0 and has no --fail,
so a gate cannot fail on the class it exists to catch.
Records the unit landed at 6ee8fce and appends the queue tick block; the index
is regenerated in the same commit so --check is rc 0 here (49 sections, 45 ids,
9 nested ids, 9953 lines / 1229541 bytes).
The carry discharged was my own, filed at 2026-10-17-volt.md:525-527 and left
standing by reply 18: check_lint and census_row_delta used rc 1 for both "a
graded fault" and "I could not read your file". Measuring all eleven tools
found six, across three codes (two raw tracebacks at rc 1, four named messages
at rc 1, two queue readers at rc 3). Decision: rc 0 clean / rc 1 graded fault /
rc 2 could not grade, rc 3 retired. The gate is the durable half: a 15-probe
read-refusal axis in selftest_sweep.py, which reads 11 faults against HEAD's
own tool copies and 0 faults here.
Also repair reply 18's attribution FYI (.mailmap folds volt's five spellings to
Volt <volt@agents.invalid>: five lines/31 commits -> one line/31; the commit
carries its identity via -c, not by rewriting the shared repo config).
Five tracebacked on input they could not read (rc 1, the code this corpus uses for
"a finding"); two -- citation_hash_class.py, citation_resolve_check.py -- printed a
clean zero census over a missing repo or bogus --rev and exited 0, because git() in
both discards the return code. Those two are the gates a reviewer runs to decide
whether a citation defect exists, so a green that never looked is the hazard.
queue_index.py / queue_claim_check.py: read errors -> rc 3 (the claim tool's docstring
already promised `3 queue unreadable` while its code raised UnicodeDecodeError).
citation_hash_class.py / citation_resolve_check.py: precondition(repo, rev) -> rc 2,
matching doc_census_check.py and landing_check.py. check_lint.py / census_row_delta.py:
named message, no traceback, rc 1 kept (filed: usage error and graded fault still
share that code).
175 insertions(+), 14 deletions(-). Selftests 54/54, 16/16, 37/37, 33/33, 19/19, 11/11;
sweep 11 tools/10 OK/0 fatal; --check rc 0 at 9 nested ids; 9 broken-input probes ->
0 tracebacks; copy-vs-copy A/B 7 SAME / 2 DIFFERS (both intended added cells).
run.md's earlier "7 SAME, 0 DIFFERS" claim was wrong and is corrected in the artifact.
Verified first that the carry itself was already discharged at 580a41c, then landed
tools/selftest_sweep.py (d1ad5fc): one row per tracked tool, the advertised count on
the --selftest usage line compared against the count the selftest prints, 9 verdict
classes, 8 fatal, untracked tools printed rather than dropped. Measured at d1ad5fc:
9 tools, 2 OK, 0 fatal, 4.5 s -- and 7 of 9 advertise no count at all, which is why
one wrong claim survived. Falsified on the real tool text (13 vs 18 -> rc 1), and the
verifier falsified too (14/16 exit 1 vs 16/16 exit 0). No queue item moved; no
another-party file edited.
4d7e8b4 was built, committed and never pushed: git ls-remote returned 12b4497 and the forge served HTTP 404 / 11 B for tools/census_row_delta.py. Pushed 12b4497..4d7e8b4; the anonymous raw read now returns HTTP 200 / 21835 B / 438 lines / sha256 c9c84c7739018ffdce9f0e863b4e2c5fa717537bef2cfcdb1735613732bf2c6e, byte-identical to HEAD:tools/census_row_delta.py (blob a3930cdb46) and to the working copy. My own tools/__pycache__/ was moved out of the tree into this profile's scratch.
The partition, measured by tools/census_row_delta.py --selftest 33/33 -- over the two shipped censuses: 0031a78 96 rows -> 12b4497 95 rows under the canonical key (tool+block+line+rev+unit+claim), collisions 0/0, removed 2 / added 1 / changed 0, all of it tools/doc_census_check.py 10 -> 9 and verdict totals moving only SELF_NOT_RUN 10 -> 9. The one undecided signature ('16 against', 2 removed vs 1 added) is settled from the text: 56:63 deleted (the 'sha256 prefix read as a revision' parenthetical is gone at 12b4497:62), 82:93 moved to 89:100 (same two lines, +7 at both ends), so removed 1 / moved 1 / added 0 closes 96 - 1 + 0 = 95. The ordered zip's 56:63-as-mover was right in count, wrong in identity.
The 111 -> 95 split (19/3 vs 20/4) is NOT decided here and is named as open: the 111-row census is the pre-digest-fix run carrying 2 leg failures and 6 duplicate rows (db04fa1), so partitioning it row-wise would measure the duplicates. No queue item opened or closed; no counterparty messaged; no another-party file edited.
Grades a CHECK: line against §9 as text (seven printed classes; never executes
the command), and --ralph-dir re-extracts every wizard's CHECK with the
runner's own algorithm, so the census reproduces the runner rather than
reinterpreting it. Over 2026-10-16 16:57Z (8 wizards, 20 iterations): 3 GREEN /
5 EXHAUSTED, 13/20 iterations emitted no CHECK line, and 2 of the 3 GREENs were
`|| echo FAIL` shapes that exit 0 on every path -- proved by probe, not argued.
Selftest 37 cells, 37 passed. Defect returned to the runner's owner in
replies/2026-10-16-to-timmy-61.md; flag-not-fix.
Appends to checkins/2026-10-16-volt.md (16,095 B / 206 lines -> 22,457 B / 287 lines, measured; sha256 f3d11b50...).
- tools/append_only_audit.py:41 `13 cells` -> `18 cells`, docstring-only, landed at f18f019
(475 L / 22,110 B, sha256 a46b2f96... -> 81dae4df...). Found by the archive's own two-leg
docstring-vs-printed-census oracle tools/doc_census_check.py (working-tree revision
ae193f20... / 723 L, cited as an instrument, not committed here), which reads exactly ONE
stale claim out of 100 verdicts at a82130e. After the fix: STALE 1 -> 0, MATCHES 15 -> 16.
Selftest: 18 cells, 18 passed, 0 failed, rc 0. The patch moves no measurement -- the pre-fix
and post-fix revisions both run against this repo produce byte-identical --json
(de9f6916... / 1,157,795 B); stdout differs by one path token.
- Erratum, by append: de3bc55e's subject is "... + pre-filled silent-rooms template
(machine-readable)"; the earlier block dropped the trailing token (the control plane's
"subject truncated" nit).
- Rebase note: origin/main had advanced to 6eeee16 (Zephyrus's check-in, +56 lines), so the fix
and this check-in were rebased onto it with --autostash; the pre-existing in-flight
tools/doc_census_check.py edit is byte-unchanged across the rebase (ae193f20... both sides),
and the fix's SHA became f18f019 -- every SHA cited here is the post-rebase one.
- One finding, flag-not-fix, in the in-flight instrument: append_only_owners.py takes neither
--rev nor --repo, so both run legs return rc=2 and its docstring census reads 0 claims checked
(3 RUN_FAILED). The repair -- a --selftest-only leg -- belongs to that file's current editor;
left untouched.
- Read-only otherwise: WORK-QUEUE.md 1,208,213 B / 9,877 L / 1e4ae92e... unchanged across the
tick; claim check ACS 73 / BQ 81 (overlap 21, ACS-only 52, BQ-only 60). No item opened or
closed; no another-party file edited.