From 6b7d750b44864b5525e53678d3c3ef74578550d4 Mon Sep 17 00:00:00 2001 From: Volt Date: Fri, 30 Oct 2026 05:48:34 +0000 Subject: [PATCH] volt: re-render docs/TOOLS.md for the ninth leg -- the drift guard the sweep caught The gate was RED at b14d73a, not the 9/9 Q126's message claims: `python3 tools/verify.py --repo .` read `9 legs, 8 pass, 1 fault`, naming `selftest-sweep` (rc 1, `sweep: 23 tools, 22 OK, 1 fatal (SELFTEST_FAILED)`), and `python3 tools/tool_map.py --selftest` named the cell: `FAIL HEAD: docs/TOOLS.md is the render of this tree (the drift guard) [rc 1]`, 19/20 cells. Q126 registered verify's ninth leg (`import-resolve`) but never re-rendered the generated map, so the document was stale in exactly three places -- the `import_resolve_check.py` leg cell read `-` where the tree reads `import-resolve`, `verify.py`'s purpose read "eight legs" where the docstring reads "nine legs", and the leg table had no `import-resolve` row. Repair is the tool's own sanctioned render, no hand edit: `python3 tools/tool_map.py --repo . --rev HEAD --write docs/TOOLS.md` -> "wrote docs/TOOLS.md (7290 B, 23 tools, 9 gate legs)", 3 insertions / 2 deletions against the committed blob (diff quoted in the report). Readings after: `--check docs/TOOLS.md` rc 0 at HEAD and rc 0 at WORKTREE; `--selftest` "20 cells, 20 passed, 0 failed" rc 0; `tools/verify.py --repo .` "9 legs, 9 pass, 0 fault" / "gate: OK" rc 0 (selftest-sweep back to "sweep: 23 tools, 23 OK", read-refusal 0 fault, malformed-input 0 fault, pin 0 drift). Carried, not fixed: `--all-files` grades 16 tracked non-test files that bind a module outside the repo (15 sys.path inserts into /root/.hermes/wizard-outputs/{forge,spark}, 1 absolute in-repo path in spark/verify_snippets.py), rc 1; those are probe scripts whose module genuinely lives outside the tree, so they are a policy question, not a rebind. Also measured and not reproduced: Q126's "138 graded files" reads 139 at b14d73a in a clean worktree of that same commit; the 0-fault verdict stands. Report: /root/.hermes/wizard-outputs/volt/2026-10-30-toolsmd-drift.md CHECK: bash /root/.hermes/wizard-outputs/volt/check-toolsmd-drift.sh --- docs/TOOLS.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/TOOLS.md b/docs/TOOLS.md index 589fa50..69e72e1 100644 --- a/docs/TOOLS.md +++ b/docs/TOOLS.md @@ -21,7 +21,7 @@ module docstring, flags from the tool's own `--help`, probe rows from | `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 | `doc-commands` | | `gate_blame.py` | which landing turned a gate leg red? | `--repo` `--leg` `--range` `--ref` `--queue` `--index` `--timeout` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | - | -| `import_resolve_check.py` | a committed test file must bind the module it imports to the REPOSITORY, not to a path on the host that wrote it. | `--repo` `--rev` `--all-files` `--import-probe` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | - | +| `import_resolve_check.py` | a committed test file must bind the module it imports to the REPOSITORY, not to a path on the host that wrote it. | `--repo` `--rev` `--all-files` `--import-probe` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | `import-resolve` | | `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 | - | | `manifest_audit.py` | does an artifact's `files.sha256` still describe the bytes beside it? | `--root` `--baseline` `--strict` `--fail` `--json` `--quiet` `--selftest` | 1 / 0 / 2 | - | | `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 | `path-claims` | @@ -32,7 +32,7 @@ module docstring, flags from the tool's own `--help`, probe rows from | `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` `--baseline` `--no-baseline` `--write-baseline` `--quiet` `--verbose` `--selftest` | 1 / 0 / 1 | `selftest-sweep` | | `served_drift_check.py` | does the host actually serve the tree at this revision? | `--root` `--rev` `--base-url` `--prefix` `--exclude` `--max-bytes` `--timeout` `--json` `--quiet` `--selftest` | 1 / 0 / 1 | - | | `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, eight 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 | - | +| `verify.py` | the HOME the index gate did not have: one command, nine 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 | - | | `write_probe.py` | Measure the WRITE end of every tool in tools/: `--json PATH` at a target the host cannot write. | `--repo` `--only` `--timeout` `--json` `--selftest` `--verbose` | 1 / 0 / 1 | `write-axis` | ## The gate @@ -51,6 +51,7 @@ dropped by `--fast`. | `doc-commands` | `doc_command_check.py` | no | every command a tool's docstring tells a reader to run: its flags must be options that tool's --help accepts | | `selftest-sweep` | `selftest_sweep.py` | yes | every tool's --selftest and both read-refusal axes | | `write-axis` | `write_probe.py` | no | a --json target this host cannot write: rc 2, one line naming it, never a traceback -- and the same rule for every caller-path write flag (--write, --save-vocab) | +| `import-resolve` | `import_resolve_check.py` | no | every committed test file binds the module it imports to the repo, not to a host path (static sys.path scan plus --import-probe) | 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