Files
jason.woltjeandClaude Opus 5.5 8b4cad1f2a agents: Dewey row 136 round 2 packet, rebased onto 277d1fa21 with the pre-121 thread test (#1630)
Candidate db463a7b…ab89 (5 files) on 277d1fa21. Adds the note-2 test for a thread
decision raised before row 121; mutants 6 of 6 killed after fixing the test to
supersede an open decision (first run left M6 alive, recorded). Owner's gate exit 0;
gate.sh now sets COMPOSE_PROJECT_NAME=dewey-r136 and removes its network at exit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 18:51:15 -05:00

3.5 KiB

Row 136 (#1630) mutants

One mutant per new check, plus one for the role check that the run check used to back up. mutants.py applies each to packages/bus/src/broker.mjs in ~/dewey-scratch/r136/wt and runs approval-binding, single-use and broker tests (33 tests). It restores the file afterwards, and the run ended with restored True.

There is no separate control step in the harness. The control is the single-file runs on the unmutated candidate before it, all 0 fail: approval-binding 5, single-use 12, broker 16.

Round 1

Run 2026-10-15T22:23:02Z to 22:23:12Z, on e37d6e583. Its logs and console were in the round 1 packet, commit 8e2c5c2d0; round 2's run replaced them here.

Mutant Fault Result Killed by
M1-authority-thread #checkAuthority drops #raisedThread(d) !== s.thread KILLED, 1 of 33 failed approval-binding: a thread approval is consumed only by a run holding the same thread
M2-supersede-role supersede drops old.raised_by_role !== s.role KILLED, 1 of 33 failed approval-binding: a later run of the same instance supersedes an open decision; another instance cannot
M3-supersede-thread supersede drops #raisedThread(old) !== s.thread KILLED, 1 of 33 failed approval-binding: a thread decision is superseded only from the same thread
M4-authority-role #checkAuthority drops d.raised_by_role !== s.role KILLED, 1 of 33 failed approval-binding: another instance of the same definition cannot consume an approval

Round 2

On base 277d1fa21 with the round 2 candidate. The same harness runs the same three files, now 34 tests, with M5 and M6 added for Filbert's note 2. Each mutant's target string occurs exactly once in the rebased broker.mjs (the harness asserts it).

First run, 2026-10-15T23:44:24Z to 23:44:40Z (mutants-run-first.log): M6 survived. The pre-121 test superseded the approved decision, and #closed refuses that before the thread matters. I changed the test to supersede an open pre-121 decision (BUILD.md, round 2). approval-binding then passed 6/6 unmutated.

Rerun, 2026-10-15T23:45:09Z to 23:45:24Z (mutants-run.log, logs in mutants/): 6 of 6 killed, restored True.

Mutant Fault Killed by (approval-binding)
M1-authority-thread #checkAuthority drops #raisedThread(d) !== s.thread a thread approval is consumed only by a run holding the same thread; the pre-121 test
M2-supersede-role supersede drops old.raised_by_role !== s.role a later run of the same instance supersedes an open decision; another instance cannot
M3-supersede-thread supersede drops #raisedThread(old) !== s.thread a thread decision is superseded only from the same thread; the pre-121 test
M4-authority-role #checkAuthority drops d.raised_by_role !== s.role another instance of the same definition cannot consume an approval
M5-authority-null-any-thread #checkAuthority reads a null raised thread as the run's thread the pre-121 test
M6-supersede-null-any-thread supersede reads a null raised thread as the run's thread the pre-121 test

Round 1 notes

M4's check is not new. Before this row the run check also refused another instance, so the role check had no test of its own. Now it is the only thing between coder2 and coder's approval, so I added the mutant to show a test holds it.

Single use needs no new check. #consumeAuthority already refuses decision-consumed once an action.allowed row exists for the decision, whichever run wrote it. The restart test and the single-use test cover it across runs.