From 6b80fdf2d5a8c762673bbb234b2ba45ea40217a7 Mon Sep 17 00:00:00 2001 From: Volt Date: Fri, 23 Oct 2026 13:41:16 +0000 Subject: [PATCH] =?UTF-8?q?volt:=20queue=20record=20=E2=80=94=20tracked=20?= =?UTF-8?q?residue=20(19=20.pyc,=20105,528=20B)=20untracked=20+=20first=20?= =?UTF-8?q?.gitignore;=20residue=5Fcheck.py=2020/20=20cells,=206/6=20mutat?= =?UTF-8?q?ions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WORK-QUEUE.md | 13 +++++++++++++ docs/queue-index.md | 22 +++++++++++----------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 1623d7b..0acb656 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -10642,3 +10642,16 @@ Artifact `/root/.hermes/wizard-outputs/volt/2026-10-22-count-pin/` — `REPORT.m 5. **What it does not claim.** The pin proves a count, not a corpus: the four cells `c3d7056` added are taken as the printed count says, and this repair does not audit them. The class stays open by construction — a printed count and its ledger row live in different files, so a commit can move one without the other and nothing goes red until the sweep is next run against that tree; the row was stale across four commits (`c3d7056`, `a5d2e73`, `311aae8`, `b2d4d98`) before this tick read it. Nothing here decides anything Alexander holds, and no tool's grading changed: the pinned number is the tool's own printed count. — Volt + +**Tracked residue 2026-10-23 (volt, Workhorse) — the archive tracked nineteen `.pyc` files (105,528 B) and carried no ignore rule anywhere, so every run inside the checkout re-added the class; the blobs are off the index, the repo has its first `.gitignore`, and an instrument now grades the class at any revision.** 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 red, measured at `a7f70cd` before any edit.** `residue_check.py --repo . --rev a7f70cd` → **rc 1**, `19 tracked in the archive (BYTECODE 19); source marks: SOURCE 19, ON_DISK 0, ORPHAN 0`, `ignore: 1 of 7 canonical samples covered, 6 gap(s)`, `untracked: 23 residue path(s) git would offer to commit`, `verdict: FAULT 25`. Bytes, from the tree rather than from prose: `git ls-tree -r -l HEAD` over `*.pyc` → **105,528 B over 19 files**, in four `__pycache__` directories (`wizard-work/forge` 3, `wizard-work/spark` 14, `sphinx/archive-memgallery-2026-10-21` 1, `sphinx/figure-label-audit` 1), against **2,614** tracked paths. Not one was orphaned — every `.py` it was compiled from is at that same revision (`_chc_fast_check.py`, `array_intersection.py`, `audit.py` and the rest), so these were redundant binaries sitting beside their own reviewable text. +2. **The fault had already been returned and was not repaired.** `replies/2026-10-23-to-forge-14.md:23` asks for three of these (`_chc_fast_check`, `verify_citation_hash_class_portable_default`, `verify_write_probe_dry_refactor`) to be removed and for `__pycache__/` to be ignored; all three were still tracked at `a7f70cd`, and `test -e .gitignore` was false for the whole repository. The single covered ignore sample was not a repo rule at all: `git check-ignore -v .ruff_cache/0.17.1/entry` → `.ruff_cache/.gitignore:2:*`, a file ruff writes inside its own cache. In a fresh clone of the same rev, **all seven** samples read `NOT-IGNORED` — which is why the tool grades the checkout it reads and says so in its own docstring. +3. **The fix is two objects and touches no lane's content.** A repo-root `.gitignore` (new file, 18 rules) and `git rm --cached` over the nineteen paths: commit **`ab0d96a`**, `20 files changed, 23 insertions(+)`, every removal a `Bin N -> 0 bytes` line — **no line of prose or code was deleted from any file**, and no `.py` was edited. The blobs stay readable in history at `a7f70cd` and every parent (`git cat-file -e a7f70cd:wizard-work/spark/__pycache__/todo.cpython-314.pyc` → rc 0); untracking is not destruction, and the record says so rather than leaving a reader to infer it. +4. **Measured after, same instrument, one variable.** At `ab0d96a`: `0 tracked in the archive (none)`, `ignore: 7 of 7 canonical samples covered, 0 gap(s)`, `untracked: 0`, `verdict: CLEAN`, **rc 0**; tracked paths **2,614 → 2,596** (nineteen out, `.gitignore` in — 18 net, and the arithmetic is stated because a reader will check it). `path_claim_check.py --repo . --fail-on-missing` → **1,199 distinct paths, 13 missing, 0 new against the baseline**, rc 0, so no document cited a removed blob by path; `verify.py --repo .` at that worktree → **7 legs, 7 pass, 0 fault, 0 ungradable, 0 skipped**, gate OK, rc 0. +5. **The instrument was watched going red, one leg at a time, on clones of the commit** (`wizard-outputs/volt/2026-10-23-tracked-residue/mutate.sh`; each case a `git clone --shared`, so the graded tree is the mutated one and the shared checkout is never touched): CTL unmutated → `CLEAN` rc 0; M1 the two bytecode rules deleted from `.gitignore` → `5 of 7 covered`, `FAULT 2`, **rc 1**; M2 a force-added tracked `.pyc` with no source beside it → `TRACKED ORPHAN`, `FAULT 1`, **rc 1**; M3 one untracked `.cache/hit` → advisory, `CLEAN` rc 0; M3b the same tree under `--strict` → `FAULT 1`, **rc 1**; M4 that `.pyc` tracked under a *covering* `.gitignore` → still `FAULT 1`, which is the point of two legs: the ignore rule and the tracked-tree leg do not substitute for each other. `--selftest` → **20 cells, 20 passed, 0 failed**, including both rc-2 preconditions (not a repository; an unresolvable `--rev`). +6. **What it does not claim.** The instrument ships in the artifact, not in `tools/`: `selftest_sweep.py` grades any `tools/` entry its probe tables never name as `NO_PROBE`, which is fatal, and `tools/selftest_sweep.py` currently carries forge's uncommitted `Counter` refactor (the subject of reply 14) — registering a new tool there would mean committing another lane's work-in-progress or reverting it, so the follow-on is a `verify.py` leg in a tree where that file is clean. The `IGNORE_GAP` leg grades the checkout, not the revision, because ignore rules are read from the worktree. `UNTRACKED` is advisory by default by design — a lane's local scratch is not an archive fault, and a gate that fails on every scratch is a gate people learn to skip — with `--strict` as the grading mode. The classifier names classes, never intent: a deliberately committed `.orig` (a captured patch, say) is indistinguishable from residue to it, and that argument belongs in prose, not in a regex. + +Artifact `/root/.hermes/wizard-outputs/volt/2026-10-23-tracked-residue/` — `REPORT.md`, `check.sh`, `residue_check.py`, `mutate.sh`, `queue-record.md`, six transcripts (`before`, `before-measure`, `after`, `selftest`, `mutation`, `verify-gate`), and a `files.sha256` over its own files (`sh check.sh` → `CHECK: PASS`, rc 0). + +— Volt diff --git a/docs/queue-index.md b/docs/queue-index.md index 903ae6d..f87660c 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-10644 | 555094 | 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-10657 | 560722 | 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 | 156 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 157 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q63 | 9918 | 9909 | 17 | Q45 | BULLET+BOLD | BOLD-LEAD | -| Q64 | 10308 | 10308 | 19 | Q45 | BULLET+BOLD | BOLD-LEAD | +| Q64 | 10308 | 10308 | 20 | 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": 156, + "refs": 157, "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": 19, + "refs": 20, "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": 1447355, - "queue_lines": 10644, - "queue_sha256": "c0d70545436dab4070cecd1016044c1be8ba625740ad62c7155bd4b12c1bf6e2", + "queue_bytes": 1452983, + "queue_lines": 10657, + "queue_sha256": "854f0b92831e488537a7ad20e75ce06938324e79a0470131fdfa741958475c36", "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": 555094, - "end_line": 10644, + "bytes": 560722, + "end_line": 10657, "id": "Q45", "line": 7594, - "lines": 3051, + "lines": 3064, "role": "opening", "role_detail": "", "status": "OPEN \u2014 awaiting Alexander's zoom/whole-shop answer; build is the pipe's.",