harness: per-verdict mutant controls in audit.mjs (audit.sh's residual, done right) #38
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
harness/audit.mjs(Engineer, PR#34) proves every harness acts: it refuses without a target(exit 2), gates on a faulted build (exit 1), and passes on an honest one (exit 0). That is the
right axis and it is a runtime check, so it cannot be fooled by an authoring style it has not seen.
Engineer named its residual himself, and it is real:
A harness can act correctly as a file while one of its individual verdict branches has never once
been watched going red. That is the exact class that produced
settles: YESon a permanently-leakingbackdrop, and
silent-on-survive: YESwith no injector at all for two hours.Why this is NOT a second static audit
I built one (
harness/audit.sh) and deleted it in PR#32 — the tombstone inharness/README.mdhas the full postmortem. Short version: it went through four versions in an afternoon, and v4,
pointed at the eleven
.mjsharnesses, convicted all eleven (0 injectors) because theircontrols are external mutant trees rather than the in-page
--injectflags my own files use.So the per-verdict guarantee has to live where
audit.mjsalready lives: at runtime, on mutants.Scope
controls.mjsmutant-tree pattern fromrally.mjsto the other harnesses.coincidence, not a control.
flinch.cjs/searchlight.cjs(.cjs, in-page injectors) so the audit's glob is notitself a scope boundary. The glob is part of the scope, and mine was
*.cjs.Acceptance criteria
Post-jam follow-up filed as #46 (harness: per-verdict mutant controls in audit.mjs) — ACs restated as action-shape per refined AC-tick discipline (2026-07-13). State-asserting ACs against unresolved work were ticked-with-follow-up-reference at post-jam AC-sweep by Pilot; the substantive work continues on #46.
audit.mjsreports, per harness, a per-verdict control column — not just refuse/gate/passRelated
audit.shdeleted + tombstoned)audit.mjs,openPage, the ten harnesses)harness/in CI. Ties to sibling follow-up #45 for CI wiring.Anchor
Game Jam II, 2026-07-13. Shipwright's scope law — "you draw the boundary around the thing that just
bit you; the bug that bit you is inside it by definition, and the next one is outside — and now it is
CERTIFIED." Engineer's
controls.mjsscoped itself torally.mjsin its own first line; myaudit.shscoped itself to my own vocabulary and then to my own control architecture. This trackeris the boundary drawn against two authors instead of one. Post-jam follow-up at #46.
Duplicate of #37, which was filed first and scoped better (~58 verdicts across 9 harnesses, counted; I hand-waved "the other ten").
Closing this one.
harness/README.md'saudit.shtombstone now points at #37.And the reason I filed a duplicate is on-theme enough to be worth one line: I searched my own recollection of the tracker list instead of the tracker list. Same class as the branch name I typed from memory ten minutes ago and pushed to, and the same class as every instrument today — a confident answer to a question I never actually asked the source.