8.7 KiB
Q65 residual cycle 7 — four unrowed verifiers, one drifted row, census 114 of 114
Record, volt lane, 2026-10-26. Red reproduced from the committed ledgers, not from a
worktree; four classes decided by a committed invocation (or by its measured absence); one
rc-sensitivity row re-probed because its file changed after it was measured. Ledgers:
3a72bac. Green measured with bash wizard-work/volt/CHECK at that commit.
1. Red at dedc771, reproduced from the blobs git holds
Both ledgers were git shown out of dedc771 into
/root/.hermes/profiles/volt/cache/scratch/q65c7/ (head_q63.tsv, head_q65.tsv,
head_rcprobe.tsv) and the instruments were pointed at those copies with their own flags, so
the fault cannot be a dirty-worktree artifact:
$ python3 wizard-work/volt/q63_verify_scan.py --repo . --baseline head_q63.tsv --gate head_q65.tsv
census coverage : 110 of 114 committed verifier(s) carry a census row
unwired, NEW (fault) : 1 NEW_UNWIRED wizard-work/forge/verify_triage_dump_pending_refactor.py
q63: 1 fault(s) rc=1
$ python3 wizard-work/volt/q65_runner.py --check --q63 head_q63.tsv --ledger head_q65.tsv \
--class gate-run,undeclared
rows at emit : 91 (PASS 67, FAIL 24)
content-bound : 1 row(s) not bound to the tree at HEAD (DRIFT/UNBOUND)
tree audit : 4 unclassed of 114 committed verifier(s)
DRIFT wizard-work/spark/verify_lwc.py: rc measured against blobs 0ca330355e, tree at HEAD has cc8ed2b419
q65: 5 fault(s) rc=1
Five faults, two instruments, one cause: the census is a snapshot and four verifiers landed
after it was read. Transcript: scratch/q65c7/c7-red.txt.
2. The four, each decided by a committed line
The census rule is an invocation, not a mention — Q63's own correction. Each of the three wired files was read at the line that runs it; the fourth was given the class the absence of such a line earns.
| path | class | evidence read |
|---|---|---|
wizard-work/ledger/verify_commits_table.py |
wired-invoke |
ledger/CHECK:17 — python3 "$OUT/verify_commits_table.py" \ (Q71's hermetic leg) |
wizard-work/ledger/verify_tree_census.py |
wired-invoke |
ledger/verify.sh:5 — exec python3 wizard-work/ledger/verify_tree_census.py |
wizard-work/sphinx/archive-lcmm-token-ledger-2026-10-26/verify_ledger.py |
wired-invoke |
mutation_battery.py:40 — subprocess.run([sys.executable, str(ROOT / "verify_ledger.py"), str(root)] (Q72's batter) |
wizard-work/forge/verify_triage_dump_pending_refactor.py |
gate-run |
nothing: git grep -F -n <basename> HEAD -- '*.py' '*.sh' ':(glob)**/CHECK' ':(glob)**/CHECK.txt' '*.yml' '*.yaml' → 0 hits |
The forge file was run by hand before it was classed, so the row is a verdict and not a guess:
9/9 checks passed, rc 0 — then executed again through the runner so the ledger row is an
execution (PASS, rc 0, 0.46 s, blob aa6a37d22bb8). Its gate-run class is Q65's contract:
a verifier nothing invokes is graded by the runner, which is why the class exists.
3. The drift, and why re-binding without re-running was refused
spark/verify_lwc.py was rewritten by d4e5668 (this lane's Q62 leg (b) — exact whole-output
comparison against the tracked fixture) after its Q65 row was measured, so the ledger held a
PASS rc 0 bound to blob 0ca330355e while the tree held cc8ed2b419. q65_runner --rebind
would have rewritten the blob in place and left the old rc standing — that is the laundering the
blob column exists to stop. The row was re-emitted instead: PASS rc 0, 0.18 s, blob
cc8ed2b419, host column empty (the rewritten verifier resolves its counter and fixture from
__file__, so it is no longer a PASS*).
The rc-sensitivity ledger carried the same stale binding and failed independently
(FAULT STALE wizard-work/spark/verify_lwc.py: row graded blob 0ca330355ed9, tree holds cc8ed2b41906). Re-probed with q65_rc_probe.py --emit --merge --only verify_lwc.py:
sensitive rc=0 sites=6 tried=1 valid=1 moved_at=43 — one inverted comparison at L43
moves the exit code, so the file's PASS is a grade and not a printer.
4. One defect of mine, measured before it was published
The first emit used --class all, and population() returns class ungated for every path
under that flag: the row landed as ungated wizard-work/forge/verify_triage_dump_pending_refactor.py,
contradicting the census row written for the same file one minute earlier. The class column is
copied from the class the emit ran under, never re-derived from the census, so --class all is
safe for execution and unsafe for labelling. Re-emitted under --class gate-run; the published
row is gate-run. The same slip put ungated on the verify_lwc.py row and it was re-emitted
under its own class too. Both are in the diff of 3a72bac as ordinary additions because the
committed ledger only ever carried the corrected rows — the wrong ones existed for seconds in a
worktree file and are not claimed as measured.
5. Green at 3a72bac
$ python3 wizard-work/volt/q63_verify_scan.py --repo .
committed verify_*.py : 114 (spark 36 forge 31 ledger 22 sphinx 16 sol 6 null 2 beam 1)
stripped-assert : 0 of 114
wired by name (invoke) : 16 of 114
run by q65_runner : 90 (FAIL 24, PASS 66)
unwired (code-grep) : 8 of 114
unwired, ledger-tolerated : 8 (q63_unwired_baseline.tsv: 8 declared-one-off)
census coverage : 114 of 114 committed verifier(s) carry a census row
unwired, NEW (fault) : 0
q63: 0 fault(s) rc=0
$ bash wizard-work/volt/CHECK
selftest: 22 cells, 22 passed, 0 failed
q65_runner -- rev HEAD, 92 population file(s), 92 ledger row(s) [ledger rev dedc771]
rows at emit : 92 (PASS 68, FAIL 24)
graded (has rc): 92 of 92
graded-clean : 12 of 92
host-pinned : 56 PASS row(s) excluded as PASS*
tree audit : 0 unclassed of 114 committed verifier(s)
q65: 0 fault(s)
q65_rc_probe: 0 fault(s) -- every row content-bound and consistent with its class
CHECK PASS rc=0
Transcript: scratch/q65c7/c7-green.txt.
The arithmetic closes, and the two counters that look wrong are the scan's own. Classes:
114 = 8 declared-one-off + 92 gate-run + 14 wired-invoke. The census gate-run path set and
the runner ledger path set are equal — 92 each, no path in one and not the other
(scratch/q65c7/diff_sets.py). The scan prints run by q65_runner : 90 because that column
excludes files a committed line also names by basename (tagged wired in --verbose): 16 files
are wired by name, 14 of them classed wired-invoke and 2 classed gate-run and graded twice;
90 + 2 = 92. Both figures are the instruments', neither is a tally of mine.
6. One finding returned, not repaired
wizard-work/ledger/verify.sh is red at dedc771, and nothing runs it:
$ python3 wizard-work/ledger/verify_tree_census.py
FAIL repo_tree rows == directory groups got 149, expected 157
FAIL repo_files data rows == git ls-tree rows got 3354, git ls-tree 3436
result: FAIL rc=1
$ git grep -F -n "ledger/verify.sh" HEAD
WORK-QUEUE.md:11446, replies/2026-10-25-to-zephyrus-101.md:18, replies/..-103.md:36,
wizard-work/ledger/README-file-tree-census.md:39 # prose, not an invocation
The census artifact was last regenerated at f6469e1 (2026-10-25 19:38) and the tree has grown
82 paths since; verify_tree_census.py:13 is REPO = "/root/troupe-standup", so the gate grades
the live tree from any checkout (Q69's class) and its red is a staleness reading, not a wrong
byte in the artifact. It is ledger's file and ledger's artifact, so this cycle records the
reading and does not edit either. It is also not in the runner population: a wired-invoke file
is, by the census's own rule, someone else's gate's business.
7. What changed, what stays open
Changed in 3a72bac: wizard-work/volt/q63_unwired_baseline.tsv (+11, an addendum block and
four class rows), q65_runner_baseline.tsv (3 insertions / 2 deletions — the rev line, the new
row, and the re-bound verify_lwc.py row), q65_rc_probe.tsv (3 / 3 — the rev line and that
row's re-probe). No other lane's file was edited.
Stays open, unchanged: 56 PASS* rows remain Q62's class one per owning lane; 24 FAIL
rows remain per-lane findings; the census is still not a tools/verify.py leg — nothing in
the 8 legs noticed dedc771's four unrowed verifiers and nothing will notice the fifth — which
is the operator's call at reply 93 §4, not re-argued here.