Files
troupe-standup/wizard-work/volt/q65-2026-10-25-c4.md
T

9.3 KiB
Raw Blame History

Q65 residual, cycle 4 — 2026-10-25 (volt, at 25b04d0)

Census red → green in one tick: three committed verifiers were unrowed and one row had outlived its bytes. Two of the three were not orphans at all — a committed line already invokes them, so they belong in the census as wired-invoke, not in the runner ledger. The third was graded by execution. The census now reads 106 of 106, q65: 0 fault(s), bash wizard-work/volt/CHECK rc 0.

Three things are recorded and not repaired here, because they are other lanes' files: wizard-work/ledger/verify_dates.py exits 0 on any input including deliberately impossible dates (a printer, not a verifier); the ledger lane's verify_wizards.sh is rc 1 at HEAD for three separate reasons; and both files I classified wired-invoke sit behind scripts that nothing invokes.

1. Red, reproduced — not relayed

At 25b04d0, in this worktree, verbatim in q65-2026-10-25-c4-red.txt:

bash wizard-work/volt/CHECK                                    rc 1
q65_runner --check: 87 rows (PASS 63, FAIL 24), 3 unclassed of 106, 1 DRIFT,
                    q65: 4 fault(s)
q63_verify_scan.py: 103 of 106 covered, NEW_UNWIRED 1, q63: 1 fault(s)   rc 1

The four runner faults were three UNCLASSED rows (wizard-work/ledger/verify_dates.py, wizard-work/ledger/verify_wizards.py, wizard-work/sol/verify_sol_profile_triage.py) and one DRIFT (wizard-work/forge/verify_scan_dry_refactor.py, rc measured against blob d3543efa42, tree at HEAD holding 6fb7aa14b9).

2. Two of the three were wired, and the census says so

q63_verify_scan.py --emit-baseline was run before anything was graded, so the classification is the scan's own reading of the tree, not a label I chose (census.diff = the emitted diff against the committed file):

wired-invoke  wizard-work/ledger/verify_wizards.py
              HEAD:wizard-work/ledger/verify_wizards.sh:9:exec python3 "$OUT/verify_wizards.py" "$@"
wired-invoke  wizard-work/sol/verify_sol_profile_triage.py
              HEAD:wizard-work/sol/gen_and_verify.sh:20:python3 verify_sol_profile_triage.py
undeclared    wizard-work/ledger/verify_dates.py
              no invocation, no declaration, no graded run

So two rows went into the census as wired-invoke and one into the runner ledger. That is the class definition applied, not a shortcut: wired-invoke = "a committed line invokes it (the ref is the evidence)", and both refs are committed lines at HEAD.

And both invoking scripts are themselves dead ends. Measured at 25b04d0:

$ git grep -l -F "verify_wizards.sh" HEAD           -> 0 files
$ git grep -l -F "gen_and_verify.sh" HEAD -- '*.py' '*.sh' '*CHECK*' '*.yml' '*.yaml'
  -> wizard-work/sol/build_solo_triage.py    (:88, inside an f-string the report prints)

verify_wizards.sh is named by no committed path at all; gen_and_verify.sh appears only as prose about the gate inside the report builder. Neither script is run by cron, by a CHECK, or by any gate. The census class is satisfied and the reachability gap is untouched — that is Q63's open item, and this cycle does not pretend otherwise.

3. The third was graded by execution

$ python3 wizard-work/volt/q65_runner.py --repo . --class undeclared --emit --merge \
    --only wizard-work/ledger/verify_dates.py
PASS  0.13s wizard-work/ledger/verify_dates.py
q65_runner: 88 row(s) in 0.5s -> wizard-work/volt/q65_runner_baseline.tsv

Row: undeclared wizard-work/ledger/verify_dates.py PASS 0 0.13 <note> dd3f643441c9 L6:/root/troupe-standup — true rc, blob bound to HEAD, and host-pinned at :6 (REPO = "/root/troupe-standup", then a second absolute path for the JSON at :20), so it is a PASS* and adds nothing to graded-clean.

4. That PASS is vacuous, and this is the measurement

verify_dates.py has no verdict. It prints six lines and falls off the end of main(); grep for a failure path in the file returns sys.exit/raise SystemExit/assert /FAIL — none. Control run in a scratch clone at 25b04d0 (q65-2026-10-25-c4-controls.txt):

  • A. clone's JSON corrupted (latest = 1999-01-01, earliest = 2099-12-31, row 0's date = 1999-01-01), clone's verifier run unmodified → rc 0, and it prints the host's values, because it reads /root/troupe-standup. The host pin, demonstrated.
  • B. same corruption, the file's 2 absolute path occurrences rewritten to the clone → rc 0, printing script_latest : 1999-01-01… and script_earliest : 2099-12-31… beside live values. An impossible date makes it print, not fail. No verdict exists.
  • C. host run, unmodified → rc 0, same six lines.

Why the census did not catch it: q63_verify_scan.py's STRIPPED_ASSERT heuristic looks for _check/raise/a non-zero exit and scores this file exit_safe on subprocess.run(..., check=True) — so the scan reports 0 of 106 stripped-assert while a file with no assertion at all is counted as covered. That heuristic blind spot is Q63's finding to widen; the row here is honest (PASS, rc 0) and says nothing about substance.

5. DRIFT cleared by forge's fix, not by bookkeeping

b4720ab (forge) moved REPO_ROOT in wizard-work/forge/verify_scan_dry_refactor.py to resolve from __file__. Re-run through the runner at the new blob:

PASS  2.10s wizard-work/forge/verify_scan_dry_refactor.py

-undeclared  … verify_scan_dry_refactor.py  PASS 0 2.48  d3543efa421d  L38:/root/troupe-standup
+gate-run    … verify_scan_dry_refactor.py  PASS 0 2.10  6fb7aa14b96e  <no host pin>

The host column is now empty, so the row moved from PASS* to graded-clean: graded-clean 9 → 10 of 88. That is the only row in this ledger whose grade improved because its author changed the file rather than because a label changed.

6. Numbers, reconciled rather than restated

q63_verify_scan.py prints run by q65_runner : 86 (FAIL 24, PASS 62) while the ledger holds 88 rows (PASS 64, FAIL 24). Not a defect: the scan counts ran = in gate AND not wired by name, and exactly 2 files satisfy both — wizard-work/sphinx/archive-lcmm-metadata-2026-10-25/verify_lcmm_dossier.py (CHECK.sh:23) and wizard-work/sphinx/archive-mmlongcite-2026-10-25/verify_mmlongcite.py (CHECK.sh:26). 88 − 2 = 86, 64 − 2 = 62 (q65-2026-10-25-c4-overlap.txt, which re-derives the sets). The census file itself reads 88 q65:PASS/24 q65:FAIL — counted with grep -c, not read off the prose.

7. Green, measured at 25b04d0 (q65-2026-10-25-c4-green.txt)

q63_verify_scan.py --repo .   committed 106; run by runner 86 (PASS 62, FAIL 24);
                              covered 106 of 106; NEW 0; q63: 0 fault(s)      rc 0
q65_runner.py --check --class gate-run,undeclared
                              88 population / 88 rows; graded 88 of 88;
                              graded-clean 10 of 88; host-pinned 54;
                              tree audit 0 unclassed of 106; q65: 0 fault(s)  rc 0
bash wizard-work/volt/CHECK   selftest 22/22; CHECK PASS                        rc 0
python3 tools/verify.py --repo .   8 legs, 8 pass, 0 fault, 0 ungradable        rc 0

Census composition: 88 + 10 + 8 = 106 (gate-run / wired-invoke / declared-one-off), against 106 committed wizard-work/**/verify_*.py at HEAD. host-pinned stays 54 across the change by coincidence worth naming: forge's row left that column (§5) and verify_dates.py joined it (§3). Instruments changed: q63_unwired_baseline.tsv 4 1, q65_runner_baseline.tsv 3 2 (git diff --numstat). No verifier was edited by this lane.

8. What is open, and whose

  • verify_dates.py has no verdict (wizard-work/ledger/…) — a file committed today (98987b7) that passes on impossible dates. Owner: ledger. Ask: reply 17.
  • verify_wizards.sh is rc 1 at HEAD, three causes, one of them structural: latest declared 11:12:53 vs live 11:36:19 (a point-in-time artifact re-derived against live git goes red on every later commit — the gate cannot stay green); :100's chained equality earliest == json['earliest'] == csv_rows[0]['date'] compares a date-sorted minimum to a churn-sorted first row, so it can never hold, and its message prints two of the three operands (which is why it reads declared='…10:30:11' observed='…10:30:11' yet FAIL); :122 raises IndexError before sys.exit(1), so rc 1 arrives as a traceback. Owner: ledger. Ask: reply 17.
  • Both new wired-invoke rows sit behind scripts nothing invokes — see §2. The class is honest as defined; the reachability question is Q63's and stays open.
  • 24 FAIL rows and 53 PASS* rows remain Q62/Q65's per-lane populations, unchanged by this cycle. The census is still not a tools/verify.py leg — the operator's call at reply 93 §4; this cycle is the fourth reopening in two days that nothing outside this lane's own CHECK would have noticed.

Evidence

q65-2026-10-25-c4-red.txt, -green.txt, -controls.txt, -counts.txt, -overlap.txt, -emit.txt, -census.diff (each carries its provenance line); git diff --numstat on the two ledgers (4 1, 3 2); replies/2026-10-25-to-ledger-17.md for the two findings in other lanes' files. Nothing from inbox/ is quoted. No other lane's file was edited.