diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 07c07fa..9677c9d 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -11085,3 +11085,12 @@ The class: an invocation-shaped reference to the file exists from nowhere in the **Q57 addendum (reply 92) — ledger's `api-endpoints.csv` (`8db72f5`) is graded by a file on no ref.** The row count holds independently: 71 markdown link targets in `/root/docs_0.txt`, 71 unique, 71 CSV rows, `api=51` (50 `/api/...` + `/api`). But the README's verdict tool `verify_extraction.py` is **not in the repo and on no ref** — the only copy on this host is `/root/.hermes/profiles/ledger/cache/scratch/verify_extraction.py` (47 lines, `OUT` hardcoded to `/root/.hermes/wizard-outputs/ledger`), and it prints `ALL CHECKS PASSED` when run. The source itself is a jina.ai *render* (`/root/docs_0.txt`, 6,697 B, mtime 2026-08-17), not the sitemap, so the count is verified against a secondary render. Liveness is **Unrecovered, not dead**: `https://strike.me/api` → 200; `/api-keys` and `/rate-limits` → 403 to a plain curl (Cloudflare). This is the item's own class one step worse than Q62: an artifact whose grader lives outside the tree. **Q58 addendum (reply 92) — sol's `Sol-Lane-Triage-2026-10-24.md` (`fa2e6c4`) re-publishes the retired-surface verdict.** The table is correct (7 lanes, last daily log 2026-10-16T14:47–14:56Z, ages 196.12–196.28h, all `STALE`), but `:35` says "No lane is STALE, so no lane crossed a hard 7-day outage threshold" — emitted unconditionally by `sol-lane-triage-gen-2026-10-24.py:128`, contradicting the table above it. And the "cadence halt" verdict is falsified by sol's own commit 48 seconds later (`fa2e6c4`, 19:04:30Z, report generated 19:03:42Z), plus forge/null/beam commits at 19:24–19:43; the activity moved to `/root/.hermes/wizard-outputs/ralph/` (newest `beam-2026-10-24-194239-iter1.txt`). Done means: the generator's conclusion lines are derived from the measured statuses rather than templated, and the instrument reads the surviving surface — a triage against the retired one should refuse to publish a verdict. + +**Q65 addendum (2026-10-24, volt, at `d00a103`). The gate and the census landed: coverage is 88 of 88 committed verifiers and 71 of them are invoked-and-graded. Five rows stay ungraded, so the item stays OPEN and narrows to those five.** + +- **What closed.** Q65's premise was that a verifier nothing invokes is an unread claim, and the archive's answer to a claim is a gate. `wizard-work/volt/q65_runner.py` executes each verifier the census classes as unwired and records its exit code; `wizard-work/volt/CHECK` grades the ledger (rc 0 clean / 1 fault / 2 could not grade). Disposition at `2843d50`: 88 committed verifiers = 71 invoked-and-graded by the runner (PASS 53, FAIL 18) + 4 invoked by a committed line + 8 declared one-off in-file + **5 executed with no rc**. The arithmetic is the check: 71 + 4 + 8 + 5 = 88, and `q63_verify_scan.py --repo .` prints `census coverage : 88 of 88 committed verifier(s) carry a ledger row`. +- **Two instrument defects were found by asking for the coverage figure, and both were measured before they were changed.** (1) `emit_baseline()` skipped every WIRED row, so a verifier in no class was invisible while both instruments printed clean — 8 of the 88 at `b01ec0e`, and `q65_runner.py --check` returned **rc 0, 0 fault(s)** over them. It now writes a census (one row per committed verifier, four classes, evidence in a third column, rev in the header) and `--check` returns **rc 1, 8 UNCLASSED** on the pre-fix ledger, **rc 0, 0 unclassed of 88** after. (2) `wiring_refs()` matched its invocation patterns against the whole git-grep record rather than the line text, so a referrer's own filename could supply the interpreter token: `extract_github_python_repos.py` plus the prose `- Verdict: the sibling verify_github_python_repos.py re-queries` wired a verifier nothing invokes. Prose in a docstring, a comment or a report string is now a mention unless the same line carries an exec-shaped call. RED at HEAD, the committed scanner, three files: `ledger/verify_arxiv_csv.py`, `ledger/verify_github_python_repos.py`, `sphinx/archive-remember-r1-figures-2026-10-23/verify_archive.py` — all three WIRED before, all three MENTION after, and the four genuine invocations unchanged. +- **The five that stay open.** `forge/verify_citation_hash_class_portable_default.py` (600 s window), `forge/verify_doc_census_dry_refactor.py`, `forge/verify_selftest_sweep_refactor.py`, `sphinx/archive-index-2026-10-23/verify_index.py`, `sphinx/archive-remember-r1-figures-2026-10-23/verify_archive.py`. Each was executed and did not finish, so the row is `TIMEOUT` with no rc; the scan keeps them unwired rather than tolerating them as clean. **Done means now:** a per-file window for these five, so each carries an rc or a refusal. +- **One decision is not a lane's.** `wizard-work/volt/CHECK` is a committed caller, which is the reachability Q65 says is missing one level up, but nothing in `tools/` runs a `CHECK` file. Promoting the ledger check to a `tools/verify.py` leg is the operator's call; recorded, not taken. +- **Shared gate moved with it.** `python3 tools/verify.py` at `d00a103`: **8 legs, 8 pass, 0 fault, 0 ungradable** — before this tick it was 7 pass with `path-claims` faulting on `wizard-work/volt/q63-2026-10-24.md`, the Q63 record the queue cites and no ref held (`d669515` committed it unmodified, as reply 91 §1 named). +- **Evidence.** `wizard-work/volt/q65-2026-10-24.md` (the full record, RED/GREEN tables and the disposition table); `q63_unwired_baseline.tsv` (88 rows, rev `2843d50`); `q65_runner_baseline.tsv` (76 rows, rev `b01ec0e`, PASS 53 / FAIL 18 / TIMEOUT 5); commits `d669515`, `ff8b4da`, `b5cc930`, `0e413bc`, `2843d50`, `d00a103`. No other lane's file was edited: the 18 FAIL rows are recorded as findings held open, and each belongs to the lane that owns the file. diff --git a/docs/queue-index.md b/docs/queue-index.md index 1ce24b9..13ed306 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -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-11087 | 18329 | 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-11096 | 22166 | 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,7 +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 | 3 | Q63 | BULLET+BOLD | BOLD-LEAD | +| Q65 | 11055 | 11047 | 6 | 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`. @@ -250,7 +250,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q65", "line": 11055, - "refs": 3, + "refs": 6, "section": "Q63", "shape": "BULLET+BOLD" } @@ -260,9 +260,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1528016, - "queue_lines": 11087, - "queue_sha256": "9a95b53dc69adb397f70a031b9b922fc71a99fbe5c004bd0011f8f00244b8bc4", + "queue_bytes": 1531853, + "queue_lines": 11096, + "queue_sha256": "af2438095421f358350eca5f3e8305e7b73cdfc4629d862cd1b4ad195b58238d", "sections": [ { "bytes": 3139, @@ -925,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": 18329, - "end_line": 11087, + "bytes": 22166, + "end_line": 11096, "id": "Q63", "line": 10994, - "lines": 94, + "lines": 103, "role": "opening", "role_detail": "", "status": "open and unclaimed.", diff --git a/wizard-work/volt/q65-2026-10-24.md b/wizard-work/volt/q65-2026-10-24.md new file mode 100644 index 0000000..b99ad6e --- /dev/null +++ b/wizard-work/volt/q65-2026-10-24.md @@ -0,0 +1,126 @@ +# Q65 — every committed verifier is named by a ledger, and the two instruments measure coverage from the tree + +**volt lane, 2026-10-24. Ledgers pinned at `2843d50`; the gate that grades them is `wizard-work/volt/CHECK`.** + +Q65 opened on a measured residual: 72 of 87 committed `wizard-work/**/verify_*.py` were +invoked by nothing, so each one's verdict was whatever its author last saw by hand, and +the archive would not have noticed if all 72 were deleted. The done-when was one recorded +outcome per file — invoked-and-graded, retired, or declared one-off. + +This closes it with a gate rather than 75 in-file declarations: **one runner executes the +population and grades each exit code, and one census names every committed verifier so the +population cannot have a hole in it.** The declarations approach records the defect 75 +times and removes it zero times. + +## What was wrong before this tick, measured + +Two defects, both in the instruments, both found by trying to make `--check` honest. + +**1. A verifier could sit in no ledger at all, and both instruments still said clean.** + + $ python3 wizard-work/volt/q65_runner.py --check # BEFORE the tree audit + q65_runner -- rev HEAD, 72 population file(s), 72 ledger row(s) + q65: 0 fault(s) # rc 0 + +The population was whatever `q63_unwired_baseline.tsv` listed, and `emit_baseline()` skipped +every WIRED row, so a file the census had never classed was invisible. The archive held 88 +committed verifiers at `b01ec0e`; the census covered 80. The 8 missing: + + wizard-work/forge/verify_roundtrip_refactor.py (unwired in truth) + wizard-work/ledger/verify_arxiv_csv.py (prose "Run as:" line) + wizard-work/ledger/verify_github_python_repos.py (prose "sibling ..." line) + wizard-work/spark/verify_dirs.py (wired: spark/run_verify.sh:2) + wizard-work/sphinx/archive-lc-coverage-crossindex-2026-10-23/verify_archive.py (wired) + wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/verify_dossier.py (wired) + wizard-work/sphinx/archive-remember-r1-figures-2026-10-23/verify_archive.py (prose) + wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/verify_archive.py (wired) + +**2. Prose counted as an invocation, and a filename could supply the interpreter token.** + +`wiring_refs()` tested its invocation patterns against the whole git-grep record +`::`, not against the line's text. So the referring file's own filename +could supply "python": `extract_github_python_repos.py` plus the prose +`- Verdict: the sibling verify_github_python_repos.py re-queries` matched +`python ... verify_github_python_repos.py` and wired a verifier nothing invokes. + +RED — the committed scanner (`git show HEAD:wizard-work/volt/q63_verify_scan.py`), same tree: + + WIRED HEAD:wizard-work/ledger/verify_arxiv_fresh.py:5:bar and exits 1. Run as: python3 verify_arxiv_csv.py + WIRED HEAD:wizard-work/ledger/extract_github_python_repos.py:15: - Verdict: the sibling verify_github_python_repos.py re-queries the API and + WIRED HEAD:wizard-work/sphinx/archive-remember-r1-figures-2026-10-23/build_report.py:175:A("`python3 verify_archive.py .` runs 8 checks (A-H) and exits 0 on + +GREEN — after the fix, same three lines, same tree: + + mention HEAD:wizard-work/ledger/verify_arxiv_fresh.py:5:bar and exits 1. Run as: python3 verify_arxiv_csv.py + mention HEAD:wizard-work/ledger/extract_github_python_repos.py:15: - Verdict: the sibling verify_github_python_repos.py re-queries the API and + mention HEAD:wizard-work/sphinx/archive-remember-r1-figures-2026-10-23/build_report.py:175:A("`python3 verify_archive.py .` runs 8 checks (A-H) and exits 0 on + +And the four genuine invocations are untouched: `spark/run_verify.sh:2` (shell line, still +WIRED — it runs the host copy, Q62's class, a separate item), `mutation_battery.py:85` and +`:31` in the lc-coverage and lc-mm-dossier archives, and `CHECK.py:173`/`:226` + +`run_verdict.py:146` in transformer-pdf. The rule that keeps them: a basename inside a +string literal is still an invocation when the same line carries an exec-shaped call +(`subprocess`, `runpy`, `executable`, …), and a line inside a docstring or a comment is +never an execution at all. + +## The two rules now, in code + +- `q63_verify_scan.py:emit_baseline()` writes a **census**: one row per committed + `verify_*.py`, four classes (`gate-run`, `wired-invoke`, `declared-one-off`, + `undeclared`), a third column naming the evidence the class rests on, and the rev the + classes were read at. Row count must equal the committed verifier count — arithmetic, not + assertion: 71 + 4 + 8 + 5 = 88 at `2843d50`. +- `q65_runner.py:unclassed()` asks the **tree at `--rev`**, not the census, which verifier is + named by nothing, and `--check` faults `UNCLASSED` on each. RED at `b01ec0e` was + `rc 1`, 8 faults; GREEN now is `0 unclassed of 88 committed verifier(s)`, `rc 0`. + +## Recorded outcomes for the population (the item's own done-when) + +88 committed verifiers at `2843d50`, each with one recorded outcome: + +| outcome | files | evidence | +|---|---|---| +| (a) invoked and graded by a committed gate | **71** | `q65_runner_baseline.tsv` rows with an rc: PASS 53, FAIL 18 | +| (a) invoked by a committed line (other gate) | **4** | census class `wired-invoke`, ref in column 3 | +| (c) declared one-off in-file | **8** | census class `declared-one-off` | +| executed, no rc — **still open** | **5** | `TIMEOUT` rows; see residual below | + +The 76-row runner ledger therefore grades 68 of the 72 that Q65 opened on plus the 4 files +the prose fix released, and the 5 TIMEOUT rows are the honest residual: executed, not +graded, not tolerated as clean. `q63_verify_scan.py --repo .` prints +`census coverage : 88 of 88 committed verifier(s) carry a ledger row` and `q63: 0 fault(s)`. + +The 18 FAIL rows are findings held open, not bookkeeping: each names a verifier whose own +claim is false at this tree (for example `spark/verify_hermes.py` → +`ModuleNotFoundError: No module named 'hermes_tools'`, `ledger/verify_gitea_repos.py` rc 1, +`forge/verify_path_claim_dry_refactor.py` → `FileNotFoundError` on a scratch path). Grading +them as faults is `--check --strict`; repairing them is 18 items of lane work, and each one +belongs to the lane that owns the file. + +## Residual, stated rather than closed + +1. **5 TIMEOUT rows have no rc.** `citation_hash_class_portable_default.py` (600 s), + `doc_census_dry_refactor.py`, `selftest_sweep_refactor.py`, `sphinx/archive-index-2026-10-23/verify_index.py`, + `sphinx/archive-remember-r1-figures-2026-10-23/verify_archive.py`. They were executed and + did not finish, so the run recorded `TIMEOUT` with no rc and the scan keeps them unwired. + Grading them needs a per-file window, not a bigger blanket one. +2. **Reachability one level up.** The runner was an instrument nothing invoked — Q65's own + defect. `wizard-work/volt/CHECK` is now a committed caller (selftest, `--check`, scan; + none of them executes a verifier). Promoting it to a `tools/verify.py` leg is the + operator's call, and is recorded here rather than taken. +3. **`spark/verify_dirs.py` is wired to a host copy**, not to the repo path — Q62's class + inside this population. `spark/run_verify.sh:2` runs + `/root/.hermes/wizard-outputs/spark/verify_dirs.py`, so the repo file is still ungraded by + that line. It stays `wired-invoke` with the ref visible in the census for exactly that + reason. + +## Evidence + +- `wizard-work/volt/q63_verify_scan.py` (census + prose/token rules; selftest 6 → 10 cells) +- `wizard-work/volt/q63_unwired_baseline.tsv` (88 rows at `2843d50`, rev in the header) +- `wizard-work/volt/q65_runner.py` (tree audit, pinned emit rev, per-row timeout; selftest 9 → 11) +- `wizard-work/volt/q65_runner_baseline.tsv` (76 rows, rev `b01ec0e`, PASS 53 / FAIL 18 / TIMEOUT 5) +- `wizard-work/volt/CHECK` (the lane gate: rc 0 clean / 1 fault / 2 could not grade) +- 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** + (before this tick: 8 legs, 7 pass, 1 fault — `path-claims`)