diff --git a/checkins/2026-10-18-volt.md b/checkins/2026-10-18-volt.md index e76aa19..f21c8a2 100644 --- a/checkins/2026-10-18-volt.md +++ b/checkins/2026-10-18-volt.md @@ -340,3 +340,86 @@ Artifact: `/root/.hermes/wizard-outputs/volt/2026-10-18-doc-census/` (`census-head.txt`/`.json` pre-fix, `census-head-tightened.txt`/`.json` post-fix, `diff.txt` row-by-row, `vocab-before.txt`/`vocab-after.txt`, `sweep-after.txt`). + +# Check-in — Volt, 2026-10-18 (07:0x–07:4xZ, appended; the blocks above stand) + +## Did + +Closed the gap this file named at 04:55Z — *"it has no `--fail` … a gate cannot +fail on the class this tool exists to catch without parsing its text."* +`tools/doc_census_check.py` now carries the gate: `26056d2`, +147/−3, blob +`sha256 731d9073a99f5cf56c70fef4d6ac204248964f7f1e77ed1e40b752993987e332`. + + rc 0 ran, graded no fault rc 1 ran, graded a STALE or a SPLIT + rc 2 could not grade (usage, --tools matches nothing, unreadable) + +A leg failure is reported in its own column and never spent as a claim defect: +a leg that produced no census adjudicated no claim. `--selftest` 41 → 52 cells; +four of the new cells pin the **process** exit code on stub repos, because a +helper returning 1 proves nothing about a gate. + +**The gate's first armed run went red — on a false claim, not a defect.** +`queue_claim_check.py`'s axis list says `39 ACS-only lines`, `12 ACS-only +lines`, `1 ACS-only line` — three sub-counts of one population of 52 — and the +token read as a unit was the adjective `ACS` in `ACS-only`, splitting 39/12/1: + + SPLIT ACS [no rev named] (LABEL_ONLY): 39@83, 12@86, 1@87 # rc 1 + (no-run.txt) + +Fixed in the same commit: a unit immediately followed by `-` is a compound +adjective, not a unit — the refusal the reader already made for `120-char`. +Same rev after: `0 INTERNAL SPLIT`, `OK` (no-run-after.txt). + +**The cost is measured, not asserted.** Row-level `--json` diff before/after +(`diff_claims.py`): 6 claims no longer read — `queue_claim_check` 23 → 19, +`checkin_check` 8 → 7, `queue_index` 10 → 9; 5 NOT_PRINTED + 1 REV_UNCHECKED; +every lost token is the first half of a compound (`ACS-only`, `check-in`, +`self-test`, `follow-on`). The invariant that licenses it: **MATCHES 26 before +and 26 after, identical rows**. One real count is caught in the net — +`69 check-in files` at `checkin_check.py:12` — whose unit word (`files`) was +already being misread, and which was REV_UNCHECKED anyway. A genuinely +hyphenated unit (`citations-per-block`) is now unread; stated in the docstring. + +**A second defect the two runs exposed, named not repaired:** on the pre-hyphen +build the gate's verdict depended on the mode. HEAD, one tool: run mode +`--fail` printed `(not flagged: 1 split(s) in units NOT_A_CENSUS_UNIT)` and +**rc 0**; `--fail --no-run` printed the split and **rc 1** (mode-*.txt in the +artifact). The gate passed in the mode that spends the verdict and failed in +the mode that only labels it. Both modes agree at 0 after the fix, because the +false claim is no longer read — the asymmetry itself is unrepaired and said so. + +**Gates re-run after the change:** `--selftest` 52/52 rc 0; `--fail` at HEAD — +12 tools, 0 INTERNAL SPLIT, 0 STALE, **rc 0** (gate-HEAD-full.txt, ~6 min); +negative tooth `fca3f2e --tools tools/citation_resolve_check.py --fail` — 1 +split + 1 STALE, **rc 1**, and the STALE is a real pre-existing docstring +defect (`UNRESOLVED claimed 441 at babdadc — printed 471`), not a fixture; +`sweep` 12 tools OK (52 claimed / 52 printed), read-refusal 17/17, +malformed-input 15/15, rc 0. The pre-tightening build at `4ce1aed` still +reproduces rc 0 with 2 STALE (historical-stale-pretightening.txt) — cited with +its build, never as current behaviour. + +Artifact: `/root/.hermes/wizard-outputs/volt/2026-10-18-census-fail-gate/` +(REPORT.md, before/after census `--json`, the two mode runs, the tooth runs, +the sweep log, SHA256SUMS). + +## Blocked + +Nothing blocks. Two limits stated rather than discovered later: the full gate +run is ~6 minutes over 12 tools, and nothing in the repository invokes `--fail` +yet — the gate is armed, not wired. + +## Next + +- Wire `--fail --no-run` (fast, ~0.2 s) into whatever runs + `selftest_sweep.py`, so the sweep's 12/12 and the census's 0/0 are one + command. That is a one-line change to a runner nobody owns yet; propose it + rather than take it. +- The `NOT_A_CENSUS_UNIT` vocabulary is the next precision question (see Ask). + +## Ask + +- Should `--fail` in **run** mode spend a split in a unit outside the census + vocabulary? Today run mode calls it advisory (`not flagged`) and `--no-run` + calls it fatal, which is the asymmetry measured above. Repaired the false + positive that surfaced it; the policy is a human decision, not mine to make + in a tool default.