volt: Q65 addendum -- two new lane verifiers graded, census 88 -> 90 at 1e9d3fb

b293175 (forge) and a24e531 (spark) added committed verify_*.py after the census
was read, so CHECK went rc 1 / 2 UNCLASSED. Re-emitted the census (90 rows:
gate-run 73, wired-invoke 4, declared-one-off 8, undeclared 5) and graded both new
files with the runner: smell_scan_refactor PASS rc 0 0.51s, skill_system FAIL rc 1
0.14s ModuleNotFoundError hermes_tools (runtime-only module; held open for spark).
Ledger 76 -> 78 rows, PASS 54 / FAIL 19 / TIMEOUT 5. CHECK rc 0, 0 unclassed of 90;
q63 scan coverage 90 of 90, 0 faults; tools/verify.py --fast 7 pass 0 fault 1 skip.
This commit is contained in:
volt committed 2026-10-24 23:44:32 +00:00
1 parent 1e9d3fb3df
commit db10a3a75c
3 files changed
+61 -2

No files matched your search

+3 -1
View File
@@ -1,6 +1,6 @@
# Q63 verifier census -- one row per COMMITTED verify_*.py at the rev the # Q63 verifier census -- one row per COMMITTED verify_*.py at the rev the
# scan read, class plus the evidence the class rests on. # scan read, class plus the evidence the class rests on.
# rev: 2843d50 (the tree these classes were read at) # rev: 1e9d3fb (the tree these classes were read at)
# row: <class> TAB <path> TAB <evidence> (three tab-separated columns) # row: <class> TAB <path> TAB <evidence> (three tab-separated columns)
# class gate-run = q65_runner.py executed it and recorded an rc (Q65); # class gate-run = q65_runner.py executed it and recorded an rc (Q65);
# class wired-invoke = a committed line invokes it (the ref is the evidence); # class wired-invoke = a committed line invokes it (the ref is the evidence);
@@ -35,6 +35,7 @@ gate-run wizard-work/forge/verify_roundtrip_refactor.py q65:PASS
gate-run wizard-work/forge/verify_selftest_sweep_dry_refactor.py q65:FAIL gate-run wizard-work/forge/verify_selftest_sweep_dry_refactor.py q65:FAIL
undeclared wizard-work/forge/verify_selftest_sweep_refactor.py no invocation, no declaration, no graded run undeclared wizard-work/forge/verify_selftest_sweep_refactor.py no invocation, no declaration, no graded run
gate-run wizard-work/forge/verify_served_drift_summarise_dry.py q65:PASS gate-run wizard-work/forge/verify_served_drift_summarise_dry.py q65:PASS
gate-run wizard-work/forge/verify_smell_scan_refactor.py q65:PASS
gate-run wizard-work/forge/verify_tool_map_dry_refactor.py q65:PASS gate-run wizard-work/forge/verify_tool_map_dry_refactor.py q65:PASS
gate-run wizard-work/forge/verify_write_probe_dry_refactor.py q65:FAIL gate-run wizard-work/forge/verify_write_probe_dry_refactor.py q65:FAIL
gate-run wizard-work/ledger/verify_arxiv_csai.py q65:PASS gate-run wizard-work/ledger/verify_arxiv_csai.py q65:PASS
@@ -81,6 +82,7 @@ gate-run wizard-work/spark/verify_python_env.py q65:PASS
gate-run wizard-work/spark/verify_report.py q65:PASS gate-run wizard-work/spark/verify_report.py q65:PASS
gate-run wizard-work/spark/verify_result.py q65:PASS gate-run wizard-work/spark/verify_result.py q65:PASS
gate-run wizard-work/spark/verify_scratch_analysis.py q65:PASS gate-run wizard-work/spark/verify_scratch_analysis.py q65:PASS
gate-run wizard-work/spark/verify_skill_system.py q65:FAIL
gate-run wizard-work/spark/verify_skills.py q65:PASS gate-run wizard-work/spark/verify_skills.py q65:PASS
gate-run wizard-work/spark/verify_skills2.py q65:PASS gate-run wizard-work/spark/verify_skills2.py q65:PASS
gate-run wizard-work/spark/verify_skills3.py q65:PASS gate-run wizard-work/spark/verify_skills3.py q65:PASS
1 # Q63 verifier census -- one row per COMMITTED verify_*.py at the rev the
2 # scan read, class plus the evidence the class rests on.
3 # rev: 2843d50 (the tree these classes were read at) # rev: 1e9d3fb (the tree these classes were read at)
4 # row: <class> TAB <path> TAB <evidence> (three tab-separated columns)
5 # class gate-run = q65_runner.py executed it and recorded an rc (Q65);
6 # class wired-invoke = a committed line invokes it (the ref is the evidence);
35 gate-run
36 undeclared
37 gate-run
38 gate-run
39 gate-run
40 gate-run
41 gate-run
82 gate-run
83 gate-run
84 gate-run
85 gate-run
86 gate-run
87 gate-run
88 gate-run
+55
View File
@@ -124,3 +124,58 @@ belongs to the lane that owns the file.
- Commits `d669515` (the uncited Q63 record), `ff8b4da`, `b5cc930`, `0e413bc`, `2843d50`, `d00a103` - Commits `d669515` (the uncited Q63 record), `ff8b4da`, `b5cc930`, `0e413bc`, `2843d50`, `d00a103`
- `python3 tools/verify.py` at `d00a103`: **8 legs, 8 pass, 0 fault, 0 ungradable, 0 skipped** - `python3 tools/verify.py` at `d00a103`: **8 legs, 8 pass, 0 fault, 0 ungradable, 0 skipped**
(before this tick: 8 legs, 7 pass, 1 fault — `path-claims`) (before this tick: 8 legs, 7 pass, 1 fault — `path-claims`)
## Addendum — 2026-10-24 (late): the population moved, and the gate caught it
Two lane commits landed after the census was read at `2843d50`: `b293175` (forge)
added `wizard-work/forge/verify_smell_scan_refactor.py`, and `a24e531` (spark) added
`wizard-work/spark/verify_skill_system.py`. Neither was named by a class row or a
runner row, so `wizard-work/volt/CHECK` — rc 0 when it was committed — returned
**rc 1, 2 UNCLASSED** against HEAD `1e9d3fb`:
tree audit : 2 unclassed of 90 committed verifier(s) <-- named by neither ledger
UNCLASSED wizard-work/forge/verify_smell_scan_refactor.py: committed verify_*.py ...
UNCLASSED wizard-work/spark/verify_skill_system.py: committed verify_*.py ...
q65: 2 fault(s)
That is the gate working, not failing: a verifier in no ledger is exactly what Q65
exists to make loud. The fix is to grade the two files, not to widen a tolerance.
$ python3 wizard-work/volt/q63_verify_scan.py --repo . --emit-baseline
census written: .../q63_unwired_baseline.tsv
(90 rows: gate-run 73, wired-invoke 4, declared-one-off 8, undeclared 5)
$ python3 wizard-work/volt/q65_runner.py --emit --merge --class gate-run --only <file>
PASS 0.51s wizard-work/forge/verify_smell_scan_refactor.py
FAIL 0.14s wizard-work/spark/verify_skill_system.py
q65_runner: 78 row(s) PASS 54, FAIL 19, TIMEOUT 5
Both ledgers now pin `1e9d3fb`, the tree they were read at; the commit that carries
them is its child, and the rev column is the measurement, not the carrying commit.
| instrument | before this tick | now |
|---|---|---|
| census rows | 88 at `2843d50` | **90 at `1e9d3fb`** |
| gate-run / wired / one-off / undeclared | 71 / 4 / 8 / 5 | **73 / 4 / 8 / 5** |
| runner ledger | 76 at `b01ec0e` (PASS 53, FAIL 18, TIMEOUT 5) | **78 rows (PASS 54, FAIL 19, TIMEOUT 5)** |
| `q65_runner.py --check` | rc 1, 2 UNCLASSED | **rc 0, 0 unclassed of 90** |
| `q63_verify_scan.py --repo .` | coverage 88 of 88, 0 faults | **90 of 90, 0 faults** |
| `wizard-work/volt/CHECK` | rc 1 | **rc 0** |
### The 19th FAIL is a structural finding, not a flake
`spark/verify_skill_system.py` returns rc 1 in 0.14 s with
`ModuleNotFoundError: No module named 'hermes_tools'`. The runner executes a
verifier the way any gate would — `python3 -B <file>`, cwd = the file's directory —
and `hermes_tools` exists only inside the Hermes agent's code-execution sandbox:
`find / -name 'hermes_tools*'` returns no module on disk, only
`wizard-work/spark/hermes_tools_check.py` and unrelated MCP transport files under
`/root/secure-otp-repair/`. So the verifier can pass only when a human pastes it
into the agent — "the verdict is whatever its author last saw by hand" in a new
costume, and the case for running it in the ledger rather than trusting the file.
Held open, and it belongs to spark's lane: either the file must run standalone
(skip + rc 2 "not in a Hermes runtime" is a refusal the runner can grade) or it
must declare itself a one-off in-file. Rewriting another lane's verifier from this
one would put a PASS on a file whose author never saw the change.
The 5 TIMEOUT rows and the three residuals in the body above are unchanged.
+3 -1
View File
@@ -10,7 +10,7 @@
# a --merge cannot leave a stale single figure standing for rows run # a --merge cannot leave a stale single figure standing for rows run
# under a different one (the defect this line replaces). # under a different one (the defect this line replaces).
# Regenerate: q65_runner.py --emit # Regenerate: q65_runner.py --emit
# rev: b01ec0e rows: 76 emitted: q65_runner.py # rev: 1e9d3fb rows: 78 emitted: q65_runner.py
undeclared wizard-work/forge/verify_append_only_owners_dry_refactor.py PASS 0 0.32 undeclared wizard-work/forge/verify_append_only_owners_dry_refactor.py PASS 0 0.32
undeclared wizard-work/forge/verify_census_row_delta_exit_contract.py PASS 0 1.23 undeclared wizard-work/forge/verify_census_row_delta_exit_contract.py PASS 0 1.23
undeclared wizard-work/forge/verify_check_lint_dry_refactor.py FAIL 1 1.34 undeclared wizard-work/forge/verify_check_lint_dry_refactor.py FAIL 1 1.34
@@ -31,6 +31,7 @@ undeclared wizard-work/forge/verify_roundtrip_refactor.py PASS 0 0.78
undeclared wizard-work/forge/verify_selftest_sweep_dry_refactor.py FAIL 1 0.52 undeclared wizard-work/forge/verify_selftest_sweep_dry_refactor.py FAIL 1 0.52
undeclared wizard-work/forge/verify_selftest_sweep_refactor.py TIMEOUT 90.09 no finish in 90.0s undeclared wizard-work/forge/verify_selftest_sweep_refactor.py TIMEOUT 90.09 no finish in 90.0s
undeclared wizard-work/forge/verify_served_drift_summarise_dry.py PASS 0 11.92 undeclared wizard-work/forge/verify_served_drift_summarise_dry.py PASS 0 11.92
gate-run wizard-work/forge/verify_smell_scan_refactor.py PASS 0 0.51
undeclared wizard-work/forge/verify_tool_map_dry_refactor.py PASS 0 54.48 undeclared wizard-work/forge/verify_tool_map_dry_refactor.py PASS 0 54.48
undeclared wizard-work/forge/verify_write_probe_dry_refactor.py FAIL 1 27.08 undeclared wizard-work/forge/verify_write_probe_dry_refactor.py FAIL 1 27.08
undeclared wizard-work/ledger/verify_arxiv_csai.py PASS 0 0.19 undeclared wizard-work/ledger/verify_arxiv_csai.py PASS 0 0.19
@@ -71,6 +72,7 @@ undeclared wizard-work/spark/verify_python_env.py PASS 0 0.07
undeclared wizard-work/spark/verify_report.py PASS 0 0.06 undeclared wizard-work/spark/verify_report.py PASS 0 0.06
undeclared wizard-work/spark/verify_result.py PASS 0 0.06 undeclared wizard-work/spark/verify_result.py PASS 0 0.06
undeclared wizard-work/spark/verify_scratch_analysis.py PASS 0 0.07 undeclared wizard-work/spark/verify_scratch_analysis.py PASS 0 0.07
gate-run wizard-work/spark/verify_skill_system.py FAIL 1 0.14 ModuleNotFoundError: No module named 'hermes_tools'
undeclared wizard-work/spark/verify_skills.py PASS 0 0.07 undeclared wizard-work/spark/verify_skills.py PASS 0 0.07
undeclared wizard-work/spark/verify_skills2.py PASS 0 0.07 undeclared wizard-work/spark/verify_skills2.py PASS 0 0.07
undeclared wizard-work/spark/verify_skills3.py PASS 0 0.08 undeclared wizard-work/spark/verify_skills3.py PASS 0 0.08
1 # Q65 runner ledger -- one row per committed verify_*.py the runner
10 # a --merge cannot leave a stale single figure standing for rows run
11 # under a different one (the defect this line replaces).
12 # Regenerate: q65_runner.py --emit
13 # rev: b01ec0e rows: 76 emitted: q65_runner.py # rev: 1e9d3fb rows: 78 emitted: q65_runner.py
14 undeclared
15 undeclared
16 undeclared
31 undeclared
32 undeclared
33 undeclared
34 gate-run
35 undeclared
36 undeclared
37 undeclared
72 undeclared
73 undeclared
74 undeclared
75 gate-run
76 undeclared
77 undeclared
78 undeclared