From 028e2d9ec02cde051966dfabfbe916cf3e5e77a9 Mon Sep 17 00:00:00 2001 From: volt Date: Tue, 20 Oct 2026 22:19:18 +0000 Subject: [PATCH] =?UTF-8?q?volt:=20queue=20=E2=80=94=20path=5Fclaim=5Fchec?= =?UTF-8?q?k=20tick=20block;=20TOOLS=20map=20(20=20tools)=20and=20queue=20?= =?UTF-8?q?index=20re-rendered=20in=20the=20same=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WORK-QUEUE.md | 21 +++++++++++++++++++++ docs/TOOLS.md | 3 ++- docs/queue-index.md | 22 +++++++++++----------- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 394f4e1..dad3a3a 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -10355,3 +10355,24 @@ Verification at this commit: `gate_blame.py --selftest` **21/21 rc 0**; `selftes Verification at this commit: `served_drift_check.py --selftest` **22/22 rc 0**; live leathermint **23/23 OK rc 0**; `selftest_sweep.py --repo .` **19 tools, 19 OK, 0 fatal rc 0**; `doc_command_check.py` **58/58 rc 0**; `tool_map.py --check` **rc 0**. `verify.py`'s check-in leg reads RED for the reason recorded at `a013842` -- zephyrus's two 2026-10-19 files, unchanged by this landing and not this lane's to rename. — Volt + + +**path_claim_check 2026-10-20 22:2xZ (volt, Workhorse) — the archive's third citation axis is now graded: a path it names must exist at the revision it is named against.** No item opened or closed; the open set is unchanged (`Q37:5278` pipe, career-lane `Q53:7303` held for Alexander, `Q64`'s design question Alexander's). Appended at the foot with `docs/queue-index.md` re-rendered in the same commit. + +1. **The gap, as an ungraded axis rather than a wish.** `citation_resolve_check.py` grades `:`; `citation_hash_class.py` grades a hex token's family. A path named with NO line — "`recoveries/foo.md`", "the record `docs/bar.md`" — is the same kind of claim with one field missing, and nothing here graded it. The defect is already on the record: this lane's own 19 Oct artifact (queue `:10145`, check-in `2026-10-19-volt.md`) **named `check.sh` and `files.sha256` and never wrote them**, and the ledger's rule is that a reader must be able to go and look. A path a reader cannot open is a citation that fails the only test a stranger can run. + +2. **What landed — `tools/path_claim_check.py`** (23,510 B / `b9047124…` / 501 lines), with its reviewed ledger `tools/path_claim_baseline.tsv` (1,859 B / `eb3a9bc4…`). One verdict per distinct path: `EXISTS`, `MISSING`, `EXTERNAL` (the first component is not a top-level entry this repo tracks — a scratch tree, a host path, a URL, another repo: counted, never graded), `TEMPLATE` (a placeholder, not a claim about one file). Fenced blocks are skipped as quoted material, on the rule `queue_index.py`, `checkin_check.py` and `citation_resolve_check.py` already apply. Occurrences are printed beside distinct paths, because one wrong path cited 16 times is one defect and 16 chances to trip. + +3. **The census, and the measurement that bounded the tool.** At `64dee6b`, 420 markdown files, **1,036 distinct path tokens / 4,346 occurrences**: **300 EXISTS, 7 MISSING, 720 EXTERNAL, 9 TEMPLATE**; **2,303 fenced lines skipped**. The 720 are the reason this tool is not a `grep`: they begin with a component this repo does not track (`after/verify.txt`, `/root/crucible/...`, `forge.alexanderwhitestone.com/...`), and grading them would have been 720 false defects. What is left is small enough to read, and every one of the 7 is in the ledger with the class that explains it: `career-lane/ats-gate-census-draft.md` (RENAMED — history at `f29425a`..`e1426e9`, the artifact at HEAD is `career-lane/ats-gate-census.md`), `inbox/pending.json` (NOT_ADDED — the queue states it was never added on any ref), `recoveries/summary-fidelity-full.md` (SHORT_NAME — the artifact is the `-full-clauses` file), `docs/release-engine-spec.md` (FOREIGN_TREE — relative to a tree whose `src/` and `tests/` are not tracked here), and the three PLANTED clones (`checkins/2026-10-19-volt-02.md`, `checkins/2026-10-02-volt-b.md`, `replies/2026-10-19-to-volt-99.md`). A baseline row is a stated reading, not an exemption: every row is printed with its class on every run, a row whose path later appears is reported `CLEARED`, and a row the census no longer produces is reported `DEAD`. + +4. **RED then GREEN on one tree, not argued.** In a detached worktree of `64dee6b` I added one prose file naming `docs/never-written.md`: `--fail-on-missing --baseline tools/path_claim_baseline.tsv` → **rc 1**, `FAIL: 1 missing path(s) the baseline does not name`, the row tagged `[NEW -- not in the baseline]`. Writing that file and committing it, same tree, same ledger → **rc 0**, `1037 distinct paths, 7 missing, 0 new`. The worktree was removed after the measurement. + +5. **Two defects in my own first draft, both caught by instruments rather than by reading.** (a) The matcher did not allow a leading `/`, so every absolute host path was recorded as `root/crucible/...` — the verdict `EXTERNAL` was right and the path was silently corrupted; cell `c4` failed on exactly that. (b) The fix moved every census figure in the docstring (1,024 distinct tokens → 1,036), and `doc_census_check.py` named it at HEAD: **`path_claim_check.py:21 missing claimed 8 at HEAD -- printed 7`, STALE 1**. The paragraph was replaced with count-free wording that records the correction, and the tool now reads **0 INTERNAL SPLIT, 0 STALE, 0 leg failure, 1 MATCHES** at HEAD. A number in a docstring has no reader; this file's own print is where those numbers live. + +6. **Integration.** `path_claim_check.py --selftest` **17 cells, 17 passed, 0 failed, rc 0**. Both probe axes carry a row — read-refusal (`--repo {nope}` → rc 2 naming "no such directory") and malformed (`not-a-repo` → rc 2 naming "not a git work tree") — so `selftest_sweep.py` reads **20 tools, 20 OK, 0 fatal, rc 0**, `read-refusal` **25/25**, `malformed-input` **23/23**. `doc_command_check.py` **61 commands over 18 oracles, OK 61, rc 0**; `tool_map.py --write docs/TOOLS.md` **20 tools, 5 gate legs**, `--check` rc 0. + +7. **What it does not claim.** Existence is not content and not correctness: the tool settles whether the file a sentence points at is there, never whether it says what the sentence says. A path relative to another tree reads `EXTERNAL` by construction, so a true claim about a host file looks identical to a false one — out of scope is printed as out of scope, never as a pass. A file no revision tracks is invisible here, the untracked-file blindness this archive has already paid for once. And the seven tolerated rows are exceptions a reader can now see, not a clean bill. + +Verification at this commit: `path_claim_check.py --selftest` **17/17 rc 0**; census at `64dee6b` **1,036 distinct / 7 missing / 720 external / 9 template**, `--fail-on-missing --baseline` **rc 0, 0 new**; RED **rc 1** and GREEN **rc 0** measured on one cloned tree; `selftest_sweep.py` **20 tools, 20 OK, 0 fatal** with both axes **25/25** and **23/23**; `doc_command_check.py` **61/61**; `tool_map.py --check` **rc 0**; `doc_census_check.py --tools tools/path_claim_check.py` **0 STALE**. `verify.py`'s check-in leg still reads RED for the reason recorded at `a013842` — zephyrus's two 2026-10-19 files, unchanged by this landing and not this lane's to rename. + +— Volt diff --git a/docs/TOOLS.md b/docs/TOOLS.md index 162b668..6730d37 100644 --- a/docs/TOOLS.md +++ b/docs/TOOLS.md @@ -7,7 +7,7 @@ disagree). Every cell below is derived, never typed -- purpose from the module docstring, flags from the tool's own `--help`, probe rows from `selftest_sweep.py`'s tables, the gate leg from `verify.py`'s `LEGS`. -**19 tools, 19 with a `--help` oracle.** Probes are read as `read-refusal / not-utf8 / malformed-input` rows; a `-` means that axis does not name the tool. +**20 tools, 20 with a `--help` oracle.** Probes are read as `read-refusal / not-utf8 / malformed-input` rows; a `-` means that axis does not name the tool. | tool | what it grades | flags | probes | gate leg | |---|---|---|---|---| @@ -22,6 +22,7 @@ module docstring, flags from the tool's own `--help`, probe rows from | `doc_command_check.py` | a command a docstring tells you to run must be a command the tool still accepts. | `--repo` `--rev` `--tools` `--json` `--fail` `--selftest` | 1 / 0 / 1 | - | | `gate_blame.py` | which landing turned a gate leg red? | `--repo` `--leg` `--range` `--ref` `--queue` `--index` `--timeout` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | - | | `landing_check.py` | is every file at this revision actually served by the forge? | `--repo` `--rev` `--branch` `--base-url` `--path` `--max-bytes` `--timeout` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | - | +| `path_claim_check.py` | does every in-namespace path this archive names exist at this revision? | `--repo` `--rev` `--corpus` `--json` `--only` `--context` `--fail-on-missing` `--baseline` `--selftest` | 1 / 0 / 1 | - | | `queue_append_audit.py` | was the queue's index current IN THE TREE of every commit that touched the queue? | `--repo` `--queue` `--index` `--from` `--to` `--all` `--guard` `--timeout` `--json` `--selftest` | 1 / 0 / 1 | `append-audit` | | `queue_claim_check.py` | the claim check for `WORK-QUEUE.md`, shipped with its tests. | `--queue` `--json` `--git` `--validate` `--selftest` `--fail-on-stale` `--explain` `--census` | 1 / 1 / 1 | - | | `queue_index.py` | the work queue's table of contents, and the gate that it is current. | `--repo` `--queue` `--index` `--json` `--write` `--check` `--outside` `--selftest` | 1 / 1 / 1 | `index-current` | diff --git a/docs/queue-index.md b/docs/queue-index.md index bcde39a..941ceb3 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-10357 | 479934 | 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-10378 | 486124 | 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 | 142 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 143 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q63 | 9918 | 9909 | 17 | Q45 | BULLET+BOLD | BOLD-LEAD | -| Q64 | 10308 | 10308 | 5 | Q45 | BULLET+BOLD | BOLD-LEAD | +| Q64 | 10308 | 10308 | 6 | 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": 142, + "refs": 143, "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": 5, + "refs": 6, "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": 1372195, - "queue_lines": 10357, - "queue_sha256": "357a2dd252bd5deffc419aaf50abf40bdf152cc8f1eab745b2eabd11798331c1", + "queue_bytes": 1378385, + "queue_lines": 10378, + "queue_sha256": "c6c026156a649cee87360284f45524d4bf92336a6d62d535875f3ec053035148", "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": 479934, - "end_line": 10357, + "bytes": 486124, + "end_line": 10378, "id": "Q45", "line": 7594, - "lines": 2764, + "lines": 2785, "role": "opening", "role_detail": "", "status": "OPEN \u2014 awaiting Alexander's zoom/whole-shop answer; build is the pipe's.",