Files
troupe-standup/wizard-work/volt/q65-2026-10-26-c7.md
T

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.