tool_map (volt): the seventeen instruments get a rendered map -- purpose from the module docstring, flags from each tool's own --help cut to its usage paragraph, probe rows from selftest_sweep's tables via ast, gate leg from verify's LEGS; drift guard is the selftest's currency cell (rc 1 on two committed mutants, rc 0 on their parent); 16 cells 16 passed, sweep 22/22 + 20/20, doc_command 50 commands / 15 oracles

This commit is contained in:
volt committed 2026-10-20 14:51:39 +00:00
1 parent 723a852dcb
commit 9b2be3915e
5 files changed
+584 -10

No files matched your search

+48
View File
@@ -0,0 +1,48 @@
# The instruments
Generated by `tools/tool_map.py` from the tree it is asked to read. Do not
edit by hand: `python3 tools/tool_map.py --repo . --write docs/TOOLS.md`
re-renders it, and `--check` grades it (rc 1 when the document and the tree
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`.
**17 tools, 17 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 |
|---|---|---|---|---|
| `append_only_audit.py` | measure the repo-wide append-only invariant from git objects. | `--repo` `--json` `--selftest` `--progress` | 1 / 0 / 1 | - |
| `append_only_owners.py` | the SECOND instrument for the append-only invariant: was a replaced line ANOTHER party's line? | `--json` `--selftest` | 1 / 1 / 2 | - |
| `census_row_delta.py` | row-level diff of two doc_census_check.py censuses. | `--key` `--keys` `--verbose` `--selftest` `--json` | 1 / 1 / 2 | - |
| `check_lint.py` | grade a Ralph-loop `CHECK:` line before it is run. | `--selftest` `--ralph-dir` `--log` `--check` `--json` `--quiet` `--verbose` `--all` `--fail-on-fault` | 1 / 0 / 2 | - |
| `checkin_check.py` | the gate on the check-in contract, which nothing measured. | `--repo` `--dir` `--roster` `--today` `--gaps` `--since` `--json` `--baseline` `--emit-baseline` `--fail` `--selftest` | 1 / 1 / 1 | `checkin` |
| `citation_hash_class.py` | resolve every hex token in a corpus to its hash family, and flag the tokens that carry no stated class. | `--repo` `--rev` `--corpus` `--json` `--window` `--min-len` `--only` `--context` `--siblings` `--selftest` | 1 / 0 / 1 | - |
| `citation_resolve_check.py` | does every `<file>:<line>` citation in this archive's prose actually resolve, and to which file? | `--repo` `--rev` `--corpus` `--json` `--only` `--context` `--selftest` | 1 / 0 / 1 | - |
| `doc_census_check.py` | does a tool's own docstring census match the census that tool PRINTS? | `--repo` `--rev` `--tools` `--json` `--no-run` `--fail` `--vocab` `--save-vocab` `--selftest` | 1 / 0 / 1 | - |
| `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 | - |
| `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 | - |
| `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` |
| `reply_check.py` | does every reply file's own header agree with its own name? | `--repo` `--dir` `--roster` `--head-lines` `--json` `--baseline` `--emit-baseline` | 1 / 0 / 1 | `reply-headings` |
| `selftest_sweep.py` | every instrument proves itself, in one command, and the number it advertises is the number it prints. | `--repo` `--tools-dir` `--timeout` `--json` `--quiet` `--verbose` `--selftest` | 1 / 0 / 1 | `selftest-sweep` |
| `tool_map.py` | the instruments get a map, and the map is generated from the tree. | `--repo` `--rev` `--write` `--check` `--json` `--selftest` | 1 / 0 / 1 | - |
| `verify.py` | the HOME the index gate did not have: one command, five legs, one exit code, and a row per leg so a partial run cannot look like a clean one. | `--repo` `--queue` `--index` `--checkin-day` `--fast` `--timeout` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | - |
## The gate
`python3 tools/verify.py --repo .` runs the legs below and prints one line
each; a leg resolves its tool inside the repo it grades. The `slow` legs are
dropped by `--fast`.
| leg | tool | slow | what it grades |
|---|---|---|---|
| `checkin` | `checkin_check.py` | no | grade the newest day's check-ins against the naming and duplicate rules |
| `reply-headings` | `reply_check.py` | no | grade every reply's heading against its own filename |
| `index-current` | `queue_index.py` | no | render the index and byte-compare it with the document |
| `append-audit` | `queue_append_audit.py` | no | grade the newest queue-touching commit in its own tree |
| `selftest-sweep` | `selftest_sweep.py` | yes | every tool's --selftest and both read-refusal axes |
A tool that appears in no leg is still graded by `selftest-sweep`, which runs
every tracked tool's `--selftest` and both read-refusal axes -- so the
`probes` column above is also the sweep's cover of that tool.
+9 -9
View File
@@ -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-10280 | 455748 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | -- |
| 49 | Q45 | 7594-10295 | 461809 | 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 | 138 | Q49 | BULLET+BOLD | BOLD-LEAD |
| Q53 | 7292 | 7246 | 139 | Q49 | BULLET+BOLD | BOLD-LEAD |
| Q63 | 9918 | 9909 | 17 | 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": 138,
"refs": 139,
"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": 1348009,
"queue_lines": 10280,
"queue_sha256": "cd51315f3a4ee29ccbbf915dad2c79771c5ed49ecbe145fa431777ebe253c5e0",
"queue_bytes": 1354070,
"queue_lines": 10295,
"queue_sha256": "2efbcb8224a3f0d96d24296fe0af9668926bb11a2b85f940831a5d55dc0b1bc6",
"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": 455748,
"end_line": 10280,
"bytes": 461809,
"end_line": 10295,
"id": "Q45",
"line": 7594,
"lines": 2687,
"lines": 2702,
"role": "opening",
"role_detail": "",
"status": null,