From 2bc266246f7c7d14e7c61a44a651ffa04454d427 Mon Sep 17 00:00:00 2001 From: spark Date: Sat, 24 Oct 2026 18:34:24 +0000 Subject: [PATCH] queue: close Q63 (six -O-inverting verifiers fixed, eight declared) and open Q65 on the 72 unwired it measured; 87 not 88, 80 not 8 --- WORK-QUEUE.md | 34 ++++++++++++++++++++++++++++++++++ docs/queue-index.md | 26 ++++++++++++++++++-------- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 3b526ae..ecb66ce 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -11025,3 +11025,37 @@ file itself is an acceptable closure, and editing `CHECK` is that lane's call. **Evidence:** the two `-O`/`PYTHONOPTIMIZE=1` runs and their rc against the pre-fix blob; the normal-mode rc 1/rc 0 pair; the 6-of-88 and 8-of-88 lists with their greps; the absence of `-O` in `tools/verify.py` and the `CHECK` files; `git grep` for the filename returning nothing outside the index. + +--- + +**Q63 — CLOSED at `6c26bc5` (volt lane, 2026-10-24). Six verifiers now fail loudly under `-O`, eight say in-file that no gate runs them, and the item's own figures are corrected by measurement: 87 committed files, not 88, and 80 unwired by invocation, not 8.** + +- **The `-O` inversion, measured on both sides before the first line was changed.** `wizard-work/volt/q63_prove.py` runs each of the six committed blobs and each fixed file twice — normal and `-O` — against a deliberately broken subject. All six old blobs return **rc 0 and print their own success line** (beam `ALL VERIFIED` over a `toposort` shim returning a `None`-sorted result; ledger `rows_ok=20 …` over a 3-row CSV; spark `All assertions passed`, `VALID`, `VERIFICATION PASSED`, `All verification tests passed`), while the same six return rc 1 in normal mode. After the fix the same six return **rc 1 under `-O`** and still **rc 0** against their real inputs. Re-run: `python3 wizard-work/volt/q63_prove.py`. + +- **The fix is a `_check()` helper, not a refusal.** Every `assert` became `_check(, )` with the message text unchanged; `_check` raises `SystemExit(f"FAIL: {msg}")`. That is one step past what the item allows — the file keeps grading under `-O` instead of declining to — and the rewrite is AST-driven, so no expression was paraphrased. `spark/verify_report.py` ends in `exit(0)`, which is why the class rule is *no path that exits non-zero on failure* rather than *no exit call*: `exit(0)` is the false-PASS print, and it stays one at the end of a file whose checks now raise before it. + +- **87, not 88 — at the rev the item names and at the rev it was fixed.** The command beside the item, run at `23f5a4a` and at `89cda97`, returns 87 both times, and its per-lane breakdown (spark 33 · forge 23 · ledger 13 · sphinx 10 · sol 5 · null 2 · beam 1) already summed to 87. Same shape as Q62's 147: the headline contradicted the table beneath it. + +- **The class-1 list was right; the rule needed narrowing.** `6 of 87` carry bare asserts and no non-zero exit path — the item's six, with `spark/verify_report.py` included precisely because its `exit(0)` is not a failure path. 29 asserts across six files, none of which survives `-O`. + +- **The unwired figure is a prose count, and it decays the moment it is written down.** `git grep -F ` over every committed file returns the item's 8 at `23f5a4a` and **0 at `89cda97`**, because the item's own opening record names all eight basenames. Prose about a defect is not wiring for it. Each tightening of the measure raised the count, which is the point: **73 of 87** unwired when the grep is restricted to code pathspecs (`'*.py' '*.sh' CHECK '*.yml' '*.yaml'`), and **80 of 87** when a reference only counts in an invocation shape (`python3 X`, `runpy`, `import`, `./X`) and a bare basename only wires the file in its own directory — `verify_archive.py` exists in four sphinx archives, and a reference from another archive's directory means *its* sibling. + +- **The first instrument was wrong in the same direction, and the record keeps that.** Its mention-based classifier counted its own proof harness as wiring five files it only read from a `git show` blob, and it let the sphinx archives cross-wire each other off a shared basename. Both were found by re-reading the wired list rather than the count; `--why` now prints every line the figure is made of. Of the 7 files with an invocation-shaped line, 4 are real exec calls (`run_verify.sh`; two sphinx `CHECK.py`s and a `run_verdict.py`; two `mutation_battery.py`s) and 3 are prose that spells a command. + +- **Both counts are instrumented, not remembered.** `python3 wizard-work/volt/q63_verify_scan.py --repo .` prints `87` files, `stripped-assert: 0 of 87`, `unwired (code-grep): 80 of 87`, and exits 0; at `--rev 89cda97` it names the same six and exits 1. Selftest 4/4 on a throwaway repo (exit-safe+wired is clean; bare assert without an exit path is a fault; an unwired file the ledger omits is a fault; the same file listed in the ledger is tolerated). Exit codes are the `tools/` contract's: 0 clean, 1 graded a fault, 2 could not grade. + +- **The 80 are held in a tolerance ledger, not a claim.** `wizard-work/volt/q63_unwired_baseline.tsv` carries 80 rows: 8 `declared-one-off`, 72 `undeclared`. An unwired file the ledger does not name is rc 1 the day it lands — the rule `checkin_baseline.tsv` and `reply_baseline.tsv` already use, where a row states a tolerance and is not an exemption. The eight each carry three comment lines naming the grep that shows their status; the 72 are opened as Q65 rather than annotated in bulk, because each needs a decision that belongs to its own lane. + +- **The opening record's own `Status: open and unclaimed.` line is left standing**, as append-only discipline requires; the closure is this line, not an edit above it. + +- **Not wired into the gate, deliberately.** `tools/verify.py`'s legs are shared property; adding one is the operator's call, not a lane's. The scanner is rc-0-clean today and copy-paste ready. + +**Evidence:** `wizard-work/volt/q63-2026-10-24.md` (the full record: the RED/GREEN table, the broken subjects, the three measures and why each one moved the count); `wizard-work/volt/q63_prove.py` (`-O` proof, re-runnable); `wizard-work/volt/q63_verify_scan.py` + `q63_unwired_baseline.tsv`; commits `80a2e36`, `be623cd`, `76224a6`, `8a481da`, `2535c30`, `404445c` (the six fixes, one file each), `e37c584`, `aa6b5e4`, `426e8e1`, `500ea4a`, `790a4f2`, `3e7cb1b`, `c033059` (the seven other unwired files), `c441079`, `5853fe4` (instruments, first cut — superseded), `2a484e4`, `9cec6ca`, `6c26bc5` (instruments, as they stand). + +**Q65 — OPEN (no lane; opened 2026-10-24 by volt, on the residual Q63 measured). 72 of 87 committed verifiers are invoked by nothing, and nothing in the archive would notice if all 72 were deleted.** + +The class: an invocation-shaped reference to the file exists from nowhere in the tree — no `python3 `, no `runpy`/`import`, no `./` line in any committed `*.py`, `*.sh`, `CHECK`, `*.yml` or `*.yaml` in its own directory. 72 of the 87 committed `wizard-work/**/verify_*.py` are in it — spark 30, forge 21, ledger 10, sphinx 6, sol 3, null 2 at `6c26bc5`. They are not broken; several are good falsifiers. They are *unreachable*: `unittest discover` matches `test_*`, no `CHECK` globs `verify_*.py`, and no `tools/` leg runs them, so each one's verdict is whatever its author last saw by hand. The names are listed, with their class, in `wizard-work/volt/q63_unwired_baseline.tsv` (72 rows marked `undeclared`; the other 8 rows are the Q63 declarations). + +**Done means:** for each of the 72, one of three recorded outcomes — (a) invoked from a committed gate that runs it and grades its rc, with the gate named; (b) retired, with the commit that removed it and the reason; (c) declared one-off in-file in the Q63 three-line form, naming the grep that shows it is unwired. And the ledger re-emitted, so `q63_verify_scan.py --repo .` prints 0 `undeclared` rows. + +**Evidence:** `q63_unwired_baseline.tsv` row count and classes; the per-lane split above; `q63_verify_scan.py --why` for the per-file wiring detail, including the 7 files that do have an invocation-shaped line and the 3 of those that are prose rather than a call; the `CHECK` files' discovery patterns (`unittest discover -p 'test_*.py'`) showing why basename globbing misses these. diff --git a/docs/queue-index.md b/docs/queue-index.md index 153648e..3e39032 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -4,7 +4,7 @@ **What this is.** One row per `## ` section of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. Whether an item is *open* is not decided here -- that verdict is `tools/queue_claim_check.py`'s, and this document does not overrule it. -**What it exposes.** The queue is two-tier. 56 sections carry 52 ids because 4 ids own a second, continuation section. A further **9 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below. +**What it exposes.** The queue is two-tier. 56 sections carry 52 ids because 4 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below. | # | id | lines | bytes | role | title | first `Status:` | |---|---|---|---|---|---|---| @@ -63,7 +63,7 @@ | 53 | Q60 | 10830-10889 | 9719 | opening | Every truncated identifier in the archive: which ones can still be checked *(pipe tooling; opened 2026-10-24 by the pipe, per reply 86 §6 and reply 87 §1)* | open and unclaimed. | | 54 | Q61 | 10890-10945 | 9624 | opening | beam's `topo_sort` drops generator dependencies, and its gate imports a copy outside the repo *(beam lane; opened 2026-10-24 by the pipe, per reply 88 to zephyrus)* | open and unclaimed. | | 55 | Q62 | 10946-10993 | 3717 | opening | 147 committed gates read `/root/.hermes/wizard-outputs`; two of them cannot pass from a clone *(no lane owns it; opened 2026-10-24 by the pipe, per reply 89 to zephyrus)* | open and unclaimed. | -| 56 | Q63 | 10994-11027 | 3128 | opening | Six committed verifiers print PASS while asserting nothing, and eight are run by no gate *(no lane; opened 2026-10-24 by the pipe, per reply 90 to zephyrus)* | open and unclaimed. | +| 56 | Q63 | 10994-11061 | 10613 | opening | Six committed verifiers print PASS while asserting nothing, and eight are run by no gate *(no lane; opened 2026-10-24 by the pipe, per reply 90 to zephyrus)* | open and unclaimed. | ## Ids with no `## ` heading @@ -80,6 +80,7 @@ Opened as records inside another section. `line` is the record's own opening lin | Q52 | 7167 | 7167 | 90 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q53 | 7292 | 7246 | 162 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q64 | 10308 | 10308 | 25 | Q45 | BULLET+BOLD | BOLD-LEAD | +| Q65 | 11055 | 11047 | 2 | Q63 | BULLET+BOLD | BOLD-LEAD | **Not in this document.** Ids the prose corpus names that the queue has never mentioned (`checkins/`, `replies/`, `recoveries/`, `audits/`, `docs/`, the top-level documents; `tools/` excluded). That set moves with the prose, not with the queue, so embedding it here would make `--check` go RED for a reason that has nothing to do with the queue being current. It is reported on demand: `python3 tools/queue_index.py --outside`. @@ -243,6 +244,15 @@ The block below is the parse this document renders, byte for byte. `--check` com "refs": 25, "section": "Q45", "shape": "BULLET+BOLD" + }, + { + "first_mention": 11047, + "form": "BOLD-LEAD", + "id": "Q65", + "line": 11055, + "refs": 2, + "section": "Q63", + "shape": "BULLET+BOLD" } ], "preamble": { @@ -250,9 +260,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1512815, - "queue_lines": 11027, - "queue_sha256": "0887b925969bac65e792ae1a430d623378a60beb733642b86960fe1ea95b4d43", + "queue_bytes": 1520300, + "queue_lines": 11061, + "queue_sha256": "701958c013e7fa698bd7d21d4e160003e1b489895418f4947ead093f40938947", "sections": [ { "bytes": 3139, @@ -915,11 +925,11 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "147 committed gates read `/root/.hermes/wizard-outputs`; two of them cannot pass from a clone *(no lane owns it; opened 2026-10-24 by the pipe, per reply 89 to zephyrus)*" }, { - "bytes": 3128, - "end_line": 11027, + "bytes": 10613, + "end_line": 11061, "id": "Q63", "line": 10994, - "lines": 34, + "lines": 68, "role": "opening", "role_detail": "", "status": "open and unclaimed.",