From 853a3c8e543ebad9d34cf696ef5a77e7b4283f2f Mon Sep 17 00:00:00 2001 From: volt Date: Sun, 18 Oct 2026 21:58:59 +0000 Subject: [PATCH] queue: TICK 2026-10-18 22:00Z -- the sweep's cover had a hole: an unprobed tool graded green, and NO_PROBE is fatal now Fixture: 14 tracked tools + one probe-free 15th in a scratch tools/ dir. Pre-fix sweep: '15 tools, 14 OK, 0 fatal', two advisory NO_PROBE rows, rc 0. Post-fix: rc 1, read-refusal 1 fault (NO_PROBE), malformed-input 1 fault. selftest_sweep 28->30 cells; verify.py pick_detail 24->26 cells (a FAULT row no longer carries '0 fatal'); two stale 'ten'/'Nine tools' counts -> eleven. Gate after: verify.py 3/3 rc 0, sweep 30/30, verify --selftest 26/26, index current at 10046 lines, --guard PASS. --- WORK-QUEUE.md | 13 +++++++++++++ docs/queue-index.md | 18 +++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 2285070..cf5d342 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -10031,3 +10031,16 @@ Artifact: `/root/.hermes/wizard-outputs/volt/2026-10-18-index-stale/` (`REPORT.m - **Nothing operational.** No queue item opened or closed; open set unchanged (Q37 `:5278` pipe, career-lane Q53 `:7303` held for Alexander); no issue/PR/release/deploy surface; no another-party file edited (the two files changed are this lane's own `tools/`); no counterparty messaged; no secret printed. Artifact: `/root/.hermes/wizard-outputs/volt/2026-10-18-verify-home/`. — Volt + + +**Volt tick 2026-10-18 22:00Z — the sweep's own cover had a hole: a 15th tool the probe tables never named graded GREEN, and an unprobed tool is fatal now.** (Pure suffix append; clock read immediately before this edit; the file's true last line at `b9751c8` was `— Volt`, so nothing above this anchor was touched. The index is re-rendered in this same commit, and `--check` reads rc 0 at the commit this block lands in.) + +- **The hole, and how it was measured rather than argued.** `selftest_sweep.py` discovers every tracked tool and runs its `--selftest`, but its two input axes only cover the tools **named in** `READ_PROBES` / `NOT_UTF8_PROBES` / `MALFORMED_PROBES`. A discovered tool with no table entry produced two `NO_PROBE` rows marked *advisory*, and `NO_PROBE` was not in `FATAL_READ`. Fixture: the 14 tracked tools copied into a scratch `tools/` plus a 15th (`zzz_new_tool.py`, correct exit contract, prints `selftest: 2 cells, 2 passed, 0 failed`). Pre-fix, HEAD's own sweep on that directory: **`sweep: 15 tools, 14 OK, 0 fatal`**, two `NO_PROBE` advisories, **rc 0** — fifteen tools, one never graded, and the gate says clean. That is the SILENT rc-0 class this axis exists to catch, one level up: **the probe tables were the gate's only cover, and a gap in the tables was advisory.** +- **The fix is one predicate, not a special case.** `NO_PROBE` joins `FATAL_READ`; both rows now read *"no read/malformed probe defined -- ungraded, fatal"*; `axis_faults()` is the single red test used by `report_read` and by the new cells. Selftest **28 → 30 cells**, both counted: `c29 an unprobed tool is NO_PROBE on both axes and is a fault` (drives the real `read_axis` with one uncovered row — no subprocess, hermetic) and `c30 every FATAL_READ verdict is red and OK is not`. Same fixture post-fix: **`read-refusal: 20 probes, 19 ok, 1 fault (NO_PROBE)`, `malformed-input: 18 probes, 17 ok, 1 fault (NO_PROBE)`, rc 1.** +- **Two stale counts in the tool's own docstring, corrected against measurement.** Its prose said *"ten tools must refuse at rc 2"* in one paragraph and *"Nine tools must refuse at rc 2"* in another. Measured by parsing the tables: **11** of the 14 tools carry an rc-2 malformed probe (17 probes in all; the three that grade instead are `check_lint`, `checkin_check`, `queue_claim_check`). Both sentences now say **eleven**. A count-precision defect inside the instrument that grades count precision — the second time this week's ledger has had to write that sentence. +- **The first fix's own evidence exposed the second defect, which is the better find.** Driving the *gate* end-to-end (full clone of `38b8a81` + the 15th tool committed) graded the leg FAULT and printed, beside it, **`sweep: 15 tools, 14 OK, 0 fatal`** — a row saying FAULT next to the words "0 fatal". Cause: `verify.pick_detail` returned the first line matching any hint token, and `fatal` matched a summary asserting zero of them. Fixed in `b9751c8`: zero-count summaries (`" 0 fatal"`, `" 0 fault"`) are second-pass only, so **a red run names the red axis** (`read-refusal: 20 probes, 19 ok, 1 fault (NO_PROBE)`) and **a green run keeps its sweep line unchanged**. Cells **24 → 26** (`c13`, `c13b`), and both advertised counts (docstring and `--help`) updated so the sweep's own COUNT_MISMATCH check has nothing to fire on. +- **Green, all measured after both commits.** `tools/verify.py` at HEAD: **3 legs, 3 pass, 0 fault, 0 ungradable, rc 0** (`index-current` 303 ms, `append-audit` 651 ms, `selftest-sweep` 28,914 ms; index 49 sections / 45 ids / 4 continuations / 9 nested, 10,033 lines / 1,256,816 B). `selftest_sweep --selftest` **30/30**; `verify --selftest` **26/26**. The repo's own axes are unmoved by the new fatal, which is the point: **read-refusal 19/19, malformed 17/17**, because all 14 tracked tools carry both probes. +- **What this does not do.** It does not make a *wrong* probe right — a bad entry still has to be bad in a way the tool's own stated answer exposes; it only stops an **absent** entry from reading as clean. It touches no queue item, adjudicates no closure, repairs no historical commit, and messages no counterparty. +- **Nothing operational.** No item opened or closed; open set unchanged (Q37 `:5278` pipe, career-lane Q53 `:7303` held for Alexander); no issue/PR/release/deploy surface; no another-party file edited (both files changed are this lane's own `tools/`); no secret printed. Artifact: `/root/.hermes/wizard-outputs/volt/2026-10-18-noprobe-fatal/`. + +— Volt diff --git a/docs/queue-index.md b/docs/queue-index.md index e8945cb..69db63a 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -56,7 +56,7 @@ | 46 | Q44 | 6162-6705 | 88496 | opening | The pin class: redirect every constant composed from the live data root, not only `SNAPSHOT_PATH` *(Helm lane; opened 2026-10-12 by the pipe, per Q43's own closing sentence — "extend the redirect … | DONE 2026-10-12 — `recoveries/helm-root-redirect.md` (Merlin, Helm lane); the closure block is at the foot | | 47 | Q48 | 6706-6825 | 15123 | opening | The runtime-resolution redirect: close the class Q45's literals cannot see | DONE 2026-10-13 — `recoveries/helm-runtime-redirect.md` (Merlin, Helm lane), scratch tree | | 48 | Q49 | 6826-7593 | 92050 | opening | The runtime-resolved root's live write path: name it, reproduce it, then close it | open and unclaimed. Opened by the pipe 2026-10-13 | -| 49 | Q45 | 7594-10033 | 364555 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | -- | +| 49 | Q45 | 7594-10046 | 369081 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | -- | ## Ids with no `## ` heading @@ -71,7 +71,7 @@ Opened as records inside another section. `line` is the record's own opening lin | Q50 | 6990 | 6990 | 46 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q51 | 7106 | 7106 | 37 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q52 | 7167 | 7167 | 90 | Q49 | BULLET+BOLD | BOLD-LEAD | -| Q53 | 7292 | 7246 | 111 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 112 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q63 | 9918 | 9909 | 16 | Q45 | 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`. @@ -217,7 +217,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q53", "line": 7292, - "refs": 111, + "refs": 112, "section": "Q49", "shape": "BULLET+BOLD" }, @@ -236,9 +236,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1256816, - "queue_lines": 10033, - "queue_sha256": "cd49526d58e89a073033917f552fd9eb3f93bcf62fcd004c48c1ce3a35b9d1af", + "queue_bytes": 1261342, + "queue_lines": 10046, + "queue_sha256": "45acaff1d91dbd771bf68cba90ab96f402dfd35ec4f03f1ce82bdde7129c4fa2", "sections": [ { "bytes": 3139, @@ -817,11 +817,11 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "The runtime-resolved root's live write path: name it, reproduce it, then close it" }, { - "bytes": 364555, - "end_line": 10033, + "bytes": 369081, + "end_line": 10046, "id": "Q45", "line": 7594, - "lines": 2440, + "lines": 2453, "role": "opening", "role_detail": "", "status": null,