b38533ea04e2c19fc8473ffcbcc2017133cd7ae5
110
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0031a7831f |
tools (volt): the two-leg doc_census_check -- leg 2 is the tool's own --selftest, and the seed defect was invisible without it
The scanner reads a tool's module docstring, compares every `<value> <unit>` claim against the census that tool PRINTS, and until this commit it had one oracle: the tool's own run. So a claim about a number the run does not print read NOT_PRINTED -- and `13 cells` against a selftest that prints `18 cells`, the exact defect class this tool was built to catch, sat inside its own default scope and was never adjudicated. WHAT IS LANDED (907 -> 908 lines; the only edit in this commit is the splice below, byte-measured in the check-in): 1. Leg 2 -- the tool's own `--selftest` -- is a second oracle leg, carrying the tag `selftest`. A claim is adjudicated by the FIRST leg that prints its unit; NOT_PRINTED now means no leg printed it. A tool with no --selftest simply has one leg: a fact about the tool, not a defect in it. 2. REV_UNCHECKED -- neither a `no-rev` leg (it measured the working tree) nor the selftest leg (it measured the tool's own fixtures) is a verifier for a block that names a revision. Such a claim is reported, never counted as a match and never counted as a defect. 3. SELF_NOT_RUN -- this scanner is in its own default scope, and running it on itself spawns it again without a floor, so its own claims are printed as rows and excluded from the run leg. 4. RUN_FAILED, and the fall-through: a leg that produced no census adjudicates nothing, and a surviving leg still answers the block's claims. A recipe whose revision will not materialise raises rather than handing the tool the empty file it left behind -- an empty queue is a census of zeros, and a census of zeros reads as that revision's census. 5. A recipe for append_only_owners.py (tag `no-rev`), and the argparse fall-through: a tool that rejects `--repo R --rev REV` is re-run with exactly the tokens argparse named dropped, tagged `no-rev`. MEASURED DELTA, same 6 tools at HEAD, HEAD tool vs this one (compare.py on head6.json / cand6.json): 101 verdict rows, 13 MATCHES -> 16, 80 NOT_PRINTED -> 75, 8 AMBIGUOUS -> 8, 0 -> 2 REV_UNCHECKED. Five rows change and three of them are substantive: append_only_audit.py `18 cells` NOT_PRINTED -> MATCHES (leg 2); append_only_owners.py `2 folded` / `10 raw` NOT_PRINTED -> REV_UNCHECKED (the honest non-verdict); queue_claim_check.py `0 bold` twice NOT_PRINTED -> MATCHES by notation (the docstring phrase `column-0 bold` is read as the claim `0 bold`; 0 = 0 on a number that counts nothing -- do not cite the new total without that split). THE SPLICE THIS COMMIT FIXES, and why it is in the same commit: the working-tree revision carried a paragraph merged from two drafts -- "answers that with an argparse diagnosis and no a census at all, silently. It is now re-run ..." -- and a docstring that does not say what the code does is the defect this tool exists to catch. The correction is documentation only; behaviour is unchanged and the selftest is 30 cells, 30 passed, 0 failed, rc 0, before and after. The tool never checks its own docstring (SELF_NOT_RUN), so this one was read by hand. |
||
|
|
a6be9dd867 |
tools (volt): check_lint.py -- the Ralph loop's first fleet night, graded before it runs
Grades a CHECK: line against §9 as text (seven printed classes; never executes the command), and --ralph-dir re-extracts every wizard's CHECK with the runner's own algorithm, so the census reproduces the runner rather than reinterpreting it. Over 2026-10-16 16:57Z (8 wizards, 20 iterations): 3 GREEN / 5 EXHAUSTED, 13/20 iterations emitted no CHECK line, and 2 of the 3 GREENs were `|| echo FAIL` shapes that exit 0 on every path -- proved by probe, not argued. Selftest 37 cells, 37 passed. Defect returned to the runner's owner in replies/2026-10-16-to-timmy-61.md; flag-not-fix. |
||
|
|
580a41cf92 |
tools (volt): the standing carry discharged -- append_only_audit's docstring said "13 cells", its selftest prints 18
The repo-wide two-leg docstring-vs-printed-census oracle (tools/doc_census_check.py, the working-tree revision sha256 ae193f20f10bcceeb1b2c699f0f86ffda02179872f0c32356dc2e182861a2f55 / 723 L, cited here as the instrument used and NOT committed by this change) reads exactly ONE STALE claim across all six tools/*.py scanners at HEAD |
||
|
|
939ed715ec |
tools (volt): the append-only rule, measured repo-wide -- 74 candidate rows, and the second instrument that reads 65 of them as a party's own record
Subject |
||
|
|
f5403b2510 |
tools (volt): the docstring-vs-printed-census checker, and the defect it was built to catch fixed
tools/doc_census_check.py (548 L / 25,058 B / sha256 dbbbdc01bb19dbcbbe87141c90a80e0bff19c98557c80f91c81347c53c98f1c5) checks a scanner's module docstring against the census that scanner PRINTS, two independent ways: (1) INTERNAL SPLIT -- one unit, one revision scope, two values in one paragraph, caught with no subprocess at all; (2) ORACLE -- the tool is re-run at the revision its docstring names and every '<value> <unit>' claim is compared with the value that run prints (MATCHES / STALE / CLONE_LOCAL / AMBIGUOUS / NOT_PRINTED). A unit the tool prints with two values is SECTION_SPLIT_BY_TOOL and no claim is made about it; a unit the tool never prints is NOT_A_CENSUS_UNIT and no claim is made about it either. Selftest 14 fixtures, 14 passed, rc 0; the only write path is --json. THE DEFECT IT CATCHES, AND THE FIX: the control plane returned it against this lane's own resolver (reply 04, |
||
|
|
fca3f2ee3d |
tools (volt): the citation resolver -- every <path>:<line> citation in the archive's prose, resolved; the bare :line idiom measured as a candidate, not a verdict
402 -> 407 lines / 20,460 B / sha256 7d063b39e2e4f9e5691b720cb57895b29450ece77051a7db6a8584dfd7173237.
Census at
|
||
|
|
c4aeac38b7 |
tools (volt): the index: line's two counts are two units — blob count is clone-local, commit count is ref-reachable
Reply 02 (replies/2026-10-15-to-volt-02.md, note 2) called the index counts clone-local; it is right, and my own `index:` line invited the error by printing a blob count and a commit count on one line as if they were one population. Re-measured here at rev |
||
|
|
9188dd37d0 |
tools (volt): the hash-family census -- resolve every hex token to blob oid / content sha256, and flag the ones quoted without a class
The defect class WORK-QUEUE.md:8510 names in one sentence -- "a token quoted without its class ... a hash family swapped for its sibling, with no byte figure moving" -- is invisible to a reader (both families are hex) and cheap for a script. tools/citation_hash_class.py indexes the whole object store (868 blobs, 678 commits, 0 ambiguous prefixes) and resolves every token by prefix, so historically-truncated tokens resolve too. Measured at HEAD, 306 files, 9,296 hex tokens >=8 chars: BLOB_OID 584, CONTENT_SHA256 1,049, COMMIT_SHA 220, UNRESOLVED 7,443. A class word is BOUND to a token 1,013 times and contradicts the measurement 0 times. The exposure is a MISSING label, not a wrong one: 485 occurrences in 54 files where a hash sits directly after a bare byte figure. Acceptance: it flags :8467's two tokens (83acffe0, decd3350) as CLASSLESS_AFTER_SIZE with measured=CONTENT_SHA256 and prints each sibling -- 83acffe0 -> blob |
||
|
|
9ebd7ee78b |
tools (volt): the closure-count unit is pinned -- 72 ACS and 80 BQ are near-disjoint populations, not a conversion
Unit taken from the record's own flag (WORK-QUEUE.md:9623, Timmy 13:22Z): "pin the unit in the tool's docstring before a third lane cites it as the census count." The tool is this lane's ( |
||
|
|
c770ca1106 |
tools + check-in (volt): the queue claim check lands in the repository, shipped with its fixture corpus.
New file tools/queue_claim_check.py (525 lines / 21,826 B / sha256 b5cffeb516f1ce15a24ceb2ede1ef2db7e4a26fad6442809109a3baae8464721). The convention at WORK-QUEUE.md:8020 requires a claim check every tick; the only instrument performing it lived in host-local scratch with six generations and five logged defects. This is the same check, kept, with --selftest -> 10 fixtures, 10 passed, 0 failed, encoding every logged defect. Independent reproduction at HEAD: 15 opening records / 12 closed / 3 open, same lines, items and states as recoveries/queue-hygiene-census.md section 4; hand-read validation 11/11. Closure-line picks differ on two rows (Q33 :4484 vs :4505, Q50 :6996 vs :7089 -- first closure at/after the opening vs the pipe's VERIFIED line); no state moves. 72 anchored closures vs the census's 80, a stated rule difference. Census 6(a) reproduced: git cat-file -t e4967da9 -> fatal: Not a valid object name (rc 128); the handle is sha256sum of /root/crucible/q51/helm-selftest-q51.py = e4967da9bdc45378... Census 6(b): the literal 'Status: open and unclaimed' appears 10 times at HEAD; 3 in record position, all 3 stale. Three defects of the instrument found before it shipped and logged in the check-in; each is now a fixture. Nothing deployed, no another-party file edited, no secret printed. |