diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 0a6ef00..619be15 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -10668,3 +10668,21 @@ Artifact `/root/.hermes/wizard-outputs/volt/2026-10-23-tracked-residue/` — `RE Nothing else moved: `ab0d96a` still carries zero tracked `.pyc` and the first `.gitignore`, the tracked paths are 2,614 → 2,596 across it, and `sh check.sh` at this state reads **CHECK: PASS**, nine checks, rc 0. No item opened or closed. — Volt + +**Manifest audit 2026-10-23 (volt, Workhorse) — nineteen checksum manifests sit in this lane's artifact root and no instrument re-read one against the bytes beside it: the question "is this manifest still true for this directory, today?" now has a 17-cell tool, and the answer at this tick is 18 verify, 2 broken (both the pair the 2026-10-21 claims record already ledgered), 250 entries still matching.** No item opened or closed; the open set is unchanged (`Q37`'s pipe span, the career-lane `Q53` decision held for Alexander, `Q64`'s design question Alexander's). Appended at the foot; `docs/queue-index.md` re-rendered in the same commit. + +1. **The gap, as an absence rather than a suspicion.** `tools/` grades whether a cited path resolves (`path_claim_check.py`), whether a tool's own count moved (`selftest_sweep.py`), and whether the served bytes match a revision (`served_drift_check.py`); nothing grades whether an artifact's `files.sha256` still describes the artifact. `artifact_claim_check.py` (2026-10-21) grades which **base** a manifest pins and was never shipped into `tools/`; `sha256sum -c` verifies one manifest when a reader remembers to run it from the right directory. So the class was measured by hand or not at all, and 86 directories under `/root/.hermes/wizard-outputs/volt` stood behind that. + +2. **What landed, as an instrument with a stated base.** `manifest_audit.py` walks the artifact root, and for every directory presenting a `files.sha256` re-hashes each entry at **the manifest's own directory**, the only base a manifest has: `VERIFIED`, `STALE` (bytes changed), `MISSING_ENTRY`, `FOREIGN_BASE` (an entry resolving outside the directory — absolute or climbing `../` — which pins another tree and cannot verify this artifact whatever its hashes say), `EMPTY`. A directory with no manifest is `NO_MANIFEST`, printed and counted, never faulted: an artifact that never claimed checksums has not broken a claim. Exit codes follow the house contract — **0** graded with no new fault, **1** `--fail`/`--strict` and an unledgered fault, **2** could not grade (missing root, unreadable ledger; an audit that graded nothing did not pass). + +3. **The measurement, at the state before this artifact's own manifest existed.** `19 presented, 67 without one`, `VERIFIED 17, FOREIGN_BASE 1, STALE 0, MISSING_ENTRY 1, EMPTY 0`, **255 entries parsed, 250 hashed and matching**, two faults: `2026-10-19-lint-fclass` (2 entries, both repo-relative `tools/` paths that resolve to no file at the manifest's own base) and `2026-10-19-reply-leg` (3 absolute `/root/troupe-standup/tools/` paths, 2 of whose hashes had drifted at the 2026-10-21 reading). Both are the pair the claims record already found and left unrepaired for the reasons it states; **no new defect appeared in the two days between**, and 17 manifests covering 250 entries still verify. At the artifact's own final state the same command reads `20 presented, 66 without one`, `VERIFIED 18`, **263 entries, 258 matching**, rc 0. + +4. **The one class disagreement with the 2026-10-21 reading is stated, not smoothed.** That record called `lint-fclass`'s 2 entries `FOREIGN_BASE` because it resolves a token at the repo root; this tool calls them `MISSING_ENTRY` because it resolves at the manifest's own directory. Both agree the manifest names no file it can verify, and the ledger row's note carries the difference, so a reader meets the disagreement instead of a silently chosen side. + +5. **The ledger proves itself in both directions on the same tree, minutes apart.** `--baseline baseline.tsv --fail` → `2 known, 0 new, 0 cleared`, **rc 0**; `--strict --fail` → `0 known, 2 new`, **rc 1**. Suppression is of the exit code and never of the finding: every known row prints with its class on every run, and a row that stops reproducing prints `CLEARED`. `--selftest` reads **17 cells, 17 passed, 0 failed**, planting every class in a throwaway root and exercising both rc-2 preconditions, the four suppression directions and `--json`. Two cells failed on the first run: `c7`'s expected hash count was the fixture's arithmetic being wrong, and `c16` was a real gap in the shipped exit contract (`--strict` did not imply grading) — the tool was fixed for `c16`, the cell was not relaxed. + +6. **What it does not claim.** Directory-level, not intent: `STALE` says bytes changed after the manifest was written, never why, and `--json` carries the per-entry lists. A `FOREIGN_BASE` entry is never hashed, so the verdict is about the base. `realpath` settles the inside/outside test, so an in-artifact symlink pointing out grades `FOREIGN_BASE` — deliberate. The census counts directories, so a manifest kept in a subdirectory reads as absent; none does today. The two faults are **not repaired here**, for the reason the claims record gives: regenerating a manifest over a 2026-10-19 artifact proves 2026-10-23. And the tool ships in the artifact, not in `tools/`: a gate leg means editing `selftest_sweep.py`'s probe tables and re-pinning `selftest_baseline.tsv`, and this worktree still carries another lane's uncommitted edits to `census_row_delta.py` and that pin file, which this tick did not touch. + +Artifact `/root/.hermes/wizard-outputs/volt/2026-10-23-manifests/` — `REPORT.md`, `check.sh`, `manifest_audit.py`, `baseline.tsv`, four transcripts (a pre-manifest reading, captured before the manifest and never rewritten after it), and a `files.sha256` over its own eight files (`sh check.sh` → `CHECK: PASS`, six checks, rc 0). + +— Volt diff --git a/checkins/2026-10-23-volt.md b/checkins/2026-10-23-volt.md new file mode 100644 index 0000000..6e51f5f --- /dev/null +++ b/checkins/2026-10-23-volt.md @@ -0,0 +1,13 @@ +# 2026-10-23 — volt + +**Did:** +- **Gate re-read at this worktree, before any edit this tick.** `python3 tools/verify.py --repo .` → `7 legs, 7 pass, 0 fault, 0 ungradable, 0 skipped`, `gate: OK`, **rc 0** (351 s wall). Per-leg: `checkin 71 ms` (85 files, 0 new faults, 35 known-faulting in the baseline), `reply-headings 920 ms` (307 files, 0 new), `index-current 923 ms` (10,670 lines / 1,455,982 B), `append-audit 2,075 ms`, `doc-commands 14,974 ms` (67 commands over 19 oracles, OK 67), `selftest-sweep 281,607 ms` (`pin: 21 pinned, 21 agree, 0 drift`), `write-axis 22,002 ms`. +- **Queue census, same tick.** `python3 tools/queue_claim_check.py` → `16 opening records; 13 closed; 3 open`, `open set: Q37:5278, Q53:7303, Q64:10320`, 73 anchored closure statements (ACS), `fenced skipped: 7 line(s) in 1 block(s)`. All three open items are already Alexander's or a named lane's; nothing unowned, so nothing was claimed by inventing one. +- **Shipped the missing instrument on the lane's checksum manifests.** A new tool, `/root/.hermes/wizard-outputs/volt/2026-10-23-manifests/manifest_audit.py`, re-reads every artifact directory's `files.sha256` at **the manifest's own base**: `19 presented, 67 without one (census, not a fault)`, `VERIFIED 17, FOREIGN_BASE 1, STALE 0, MISSING_ENTRY 1, EMPTY 0`, **255 entries parsed, 250 hashed and matching**. The 2 faults are the pair the 2026-10-21 claims record already ledgered (`2026-10-19-lint-fclass` 2 entries, `2026-10-19-reply-leg` 3 absolute `tools/` paths); **no new break in two days**. Both directions measured on one tree: `--baseline … --fail` → `2 known, 0 new`, **rc 0**; `--strict --fail` → `0 known, 2 new`, **rc 1**. `--selftest` **17 cells, 17 passed, 0 failed**. `sh check.sh` → `CHECK: PASS`, six checks, rc 0. Record appended to the queue in this same tick. +- **A candidate tool was measured and rejected instead of built.** Before choosing the above, the markdown-link class was probed on the tracked set: `545` link targets in 671 tracked `.md` files, **433 absolute URLs, 6 relative**, of which 5 do not resolve — 4 are untracked figure paths inside `wizard-work/sphinx/transformer-archive/` (images deliberately not committed) and 1 is the prose token `*args` matched by `](...)`. Three real targets would not carry a tool, so the class was dropped on the measurement. + +**Blocked:** nothing new this tick. The two manifest faults stay unrepaired on purpose — a manifest regenerated over a 2026-10-19 artifact proves 2026-10-23, and the pair is ledgered and printed on every run rather than silenced. `manifest_audit.py` stays in the artifact rather than `tools/`: a gate leg means editing `selftest_sweep.py`'s probe tables and re-pinning `selftest_baseline.tsv`, and this worktree carries another lane's uncommitted edits to `census_row_delta.py` and that pin file. Career-lane `Q53` and `Q64` remain Alexander's, not re-raised. + +**Next:** graduate `manifest_audit.py` into `tools/` as a gate leg once the pin file is clean and the probe axes are written for it (read-refusal, non-UTF-8, malformed manifest); re-read the lane manifest census after the next artifacts land, since this tick's figure is a snapshot of 86 directories; re-run today's rejected link probe only if the archive ever starts committing relative links in volume. + +**Ask:** nothing this tick. diff --git a/docs/queue-index.md b/docs/queue-index.md index e4472b0..74e24a4 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-10670 | 563721 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | OPEN — awaiting Alexander's zoom/whole-shop answer; build is the pipe's. | +| 49 | Q45 | 7594-10688 | 569261 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | OPEN — awaiting Alexander's zoom/whole-shop answer; build is the pipe's. | ## Ids with no `## ` heading @@ -71,9 +71,9 @@ 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 | 158 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 159 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q63 | 9918 | 9909 | 17 | Q45 | BULLET+BOLD | BOLD-LEAD | -| Q64 | 10308 | 10308 | 21 | Q45 | BULLET+BOLD | BOLD-LEAD | +| Q64 | 10308 | 10308 | 22 | 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`. @@ -218,7 +218,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q53", "line": 7292, - "refs": 158, + "refs": 159, "section": "Q49", "shape": "BULLET+BOLD" }, @@ -236,7 +236,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q64", "line": 10308, - "refs": 21, + "refs": 22, "section": "Q45", "shape": "BULLET+BOLD" } @@ -246,9 +246,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1455982, - "queue_lines": 10670, - "queue_sha256": "2bf1d8c31f277da5478ba3bf7dac46965a9b31bd776bd6d035a0ee871ecd2e6d", + "queue_bytes": 1461522, + "queue_lines": 10688, + "queue_sha256": "dc69c890f67edfaed102c1f2d80a668f309695658cb76a8b6c9040b9c501a436", "sections": [ { "bytes": 3139, @@ -827,11 +827,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": 563721, - "end_line": 10670, + "bytes": 569261, + "end_line": 10688, "id": "Q45", "line": 7594, - "lines": 3077, + "lines": 3095, "role": "opening", "role_detail": "", "status": "OPEN \u2014 awaiting Alexander's zoom/whole-shop answer; build is the pipe's.",