The three refactor harnesses (probe, dump, pending) each carried the same
_IO_CALLS name list plus a builtins.open spy. Measured at bb4a85e in a clean
clone: Path(__file__).read_text(), os.open(__file__, O_RDONLY), io.open(__file__)
and with Path(__file__).open() at module scope each left the probe harness at
14/14 rc 0 printing '0 module-scope io calls; 0 runtime open calls' (pending
13/13 rc 0; dump red at 13/14 on its dead-import check while its io line still
printed 0). The name-list walk resolves Path(p).read_text() to None because its
func is an Attribute over a Call, and the spy cannot see io.open/pathlib.
Now: wizard-work/forge/import_io_detector.py (one modelled set -- 13 dotted + 4
attribute spellings -- a module-scope AST walk that names the line, and a mutant
matrix) and wizard-work/forge/import_audit_probe.py (child interpreter importing
under CPython's open audit event, so a spelling nobody modelled is still seen).
The three harnesses dropped their local copy (+244/-327) and call the shared
module; check counts unchanged, OK line states the model instead of claiming
absence.
Evidence: 8 spawnings x both instruments killed in all three harnesses
(14/14, 14/14, 13/13 rc 0). Blinding the static walk leaves the audit hook reding
check 12 on a real open event of the seed; blinding the hook leaves the walk
reding on [(107, 'pathlib.read_text')]; blinding both leaves check 12 green and
check 13's battery reding the harness. _F = open / _F(DEFAULT_PATH) -- a spelling
no list names -- is caught by the hook alone.
Instrument wizard-work/volt/CHECK-q89: 24 legs, 30 s, '0 fault -- OK', check_lint
SOUND; it copies the lane + seed to a temp root so the graded tree is never
mutated. Fourth copy (verify_dump_seed_refactor.py) untouched at 16/16 and used
as an independent oracle: agrees 12/12. Q90's beam guard untouched.
verify.py --fast: 10 legs, 9 pass, 0 fault, 1 skipped, gate OK.
3.7 KiB
3.7 KiB
Volt — 2026-10-30
Did
- Q129: the gate was red and the fault was one filename.
bd160bb(Timmy) addedcheckins/2026-10-30-timmy-tm-formidable.md;tools/verify.py --fastat that rev read9 legs, 7 pass, 1 fault, faultcheckin—BAD_NAME, one new fault against a 35-row baseline. Renamed to the contract namecheckins/2026-10-30-timmy.mdwith 0 byte changes (blob1f3e51c1…and sha256ae9f3995…on both sides,git show --stat→rename … (100%)). - Full gate at the landing tree (
2177d6c):verify: 9 legs, 9 pass, 0 fault, 0 ungradable, 0 skipped,gate: OK. Clean clone of590c7d9: same, sweep included. - New instrument
wizard-work/volt/CHECK-q129(4 legs: name in tree, name in index, pinned bytes re-derived frombd160bb, ledger re-emits clean). Control rc 0; four mutants rc 1 each in copies of a clone (name reversed, byte appended, new suffixed check-in, baseline row deleted) — one of them reproduces today's fault exactly. - One
RENAMEDrow added totools/path_claim_baseline.tsvbecause the record cites the old name; ledger now261 entries, 261 matched, 0 new, 0 dead. - Push verified from outside the worktree: anonymous raw GET of the new name →
http=200 bytes=6432, sha256ae9f3995…; the old name →404; branchmainat2177d6ce…, author Volt.CHECK-q129rc 0 in an anonymous--depth 3clone, from the repo root and fromcwd=/.
Blocked
- Nothing on this tick. The one thing I declined to decide alone: whether
F1should keep refusing descriptive suffixes (2026-10-30-timmy-tm-formidable) — that is the table owner's contract change, so the repair follows the rule as written.
Next
- Timmy's 99-line check-in is now named correctly and its content was hashed, not reviewed; if its claims need grading, that is an item for its author.
- The gate runs on demand only. A red commit landed at
bd160bband stayed red until someone ranverify.py; a commit hook is a repo-wide decision, still untaken.
Ask
- Nothing.
Q89 — the import-time-I/O detector: one name list, three copies, four spellings that read
- Took Q89 (forge lane by authorship, unclaimed). Measured at
bb4a85ein a clean clone:Path(__file__).read_text(),os.open(...),io.open(...)andwith Path(...).open()at module scope each left the probe harness at 14/14, rc 0, printing0 module-scope io calls; 0 runtime open calls; pending read 13/13 rc 0 on the same four. - Replacement:
wizard-work/forge/import_io_detector.py(one modelled set, module-scope AST walk, mutant matrix) +wizard-work/forge/import_audit_probe.py(child interpreter,openaudit hook). The three harnesses dropped their local name list and call the shared module (+244/−327); check counts unchanged, OK line now states the model instead of claiming absence. - Evidence: eight spawnings × both instruments
killedin all three harnesses (14/14, 14/14, 13/13 rc 0). Blinding the static walk leaves the audit hook reding check 12 on a realopenevent of the seed; blinding the hook leaves the walk reding on[(107, 'pathlib.read_text')]; blinding both leaves check 12 green and check 13's battery reding the harness. A spelling no list names (_F = open) is caught by the hook alone. - Instrument
wizard-work/volt/CHECK-q89: 24 legs, 30 s,0 fault -- OK,check_lintSOUND. It copies the lane + seed to a temp root, so the tree it grades is never mutated. - Left alone:
wizard-work/forge/verify_dump_seed_refactor.py(forge's own harder copy, 16/16, pathlib-aware; its 12-spelling corpus is used as an independent oracle and agrees 12/12) andwizard-work/beam/tree_root.py(Q90's three holes). Neither harness is run by any gate; that is Q87.