8.0 KiB
Row 164 round 2
Addresses Dewey B1, #1661 comment 28980 (rev 1814), and sage-0846.
Base remains 850484a7d2. The candidate differs from r1 only by one assertion in packages/cli/tests/channel-cli.test.mjs: the off/absent/other-only loop now requires Pass --business "demo" to both commands. for every operation. No product code changes. All three approved parity fixture hunks are byte-identical to r1, including the Mos mos-0789 line-47 exception.
N6 remains a non-blocking follow-up: no existing channel-config scenario in this file allows a one-line exit-code assertion.
Verification
Sage approved the narrow plan in sage-0848 and granted the slot in sage-0850. Busy check CLEAR; only pid 2175820 was authorized to be ignored (no match occurred). Run span 2026-10-18T19:03:30Z to 19:03:49Z. channel-cli.test.mjs: 2 tests, 2 passed, 0 failed/cancelled/skipped, parsed from the runner summary. D1 was killed by the new assertion, with the failing assertion printed in its log. No suites, Docker, browser, live paths or units. Scratch TMPDIR=/mnt/storage/scratch/rocko-164/tmp; DOCKER_HOST=unix:///nonexistent.sock. Mutant runner uses start_new_session, a 180-second timeout, process-group termination and finally restores bytes. All 21 staged/worktree blobs match the manifest and reconstruct from base plus patch; cwd process sweep empty. Slot returned at 19:03:49Z.
The 50 prior mutant results and package counts (plugins 77, CLI 247, bus 369, WebUI 182; 875/875) are historical r1 evidence, not round-2 reruns. See ../r1/BUILD.md and ../r1/mutants.txt. The complete table below carries those 50 as r1-only evidence and adds D1 as round-2 evidence. No prior mutant or suite is claimed as a round-2 rerun.
Cut-over
Unchanged: in Mos's re-pin window, Jason enables both channels with mosaic plugins set right after activate, then smokes CLI thread list and Console chat. No agent runs these steps. See ../r1/BUILD.md for the complete accepted cut-over and proof baselines.
Mutant table
| Check | Killing test | Evidence | Result |
|---|---|---|---|
| 01-kind-version | packages/plugins/tests/channel.test.mjs — channel registry requires | r1 only | KILLED |
| 02-kind-switch | packages/plugins/tests/channel.test.mjs — channel registry requires | r1 only | KILLED |
| 03-cli-forward-verb | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 04-webui-forward-verb | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 05-cli-forward-args | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 06-webui-forward-args | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 07-cli-filter | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 08-webui-filter | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 09-cli-result | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 10-webui-refusal | packages/plugins/tests/channel.test.mjs — channel shipped modules load | r1 only | KILLED |
| 11-bad-name | packages/plugins/tests/channel.test.mjs — channel guards refuse bad names | r1 only | KILLED |
| 12-directory-check | packages/plugins/tests/channel.test.mjs — channel guards refuse symlinked module, index and kind directories | r1 only | KILLED |
| 13-index-check | packages/plugins/tests/channel.test.mjs — channel guards refuse bad names | r1 only | KILLED |
| 14-symlink-check | packages/plugins/tests/channel.test.mjs — channel guards refuse symlinked | r1 only | KILLED |
| 15-realpath-check | packages/plugins/tests/channel.test.mjs — channel last realpath check | r1 only | KILLED |
| 16-export-check | packages/plugins/tests/channel.test.mjs — channel guards refuse bad names | r1 only | KILLED |
| 17-function-check | packages/plugins/tests/channel.test.mjs — channel guards refuse bad names | r1 only | KILLED |
| 18-version-check | packages/plugins/tests/channel.test.mjs — channel guards refuse bad names | r1 only | KILLED |
| 19-snapshot-pair | packages/plugins/tests/channel.test.mjs — channel snapshot is | r1 only | KILLED |
| 20-snapshot-array-freeze | packages/plugins/tests/channel.test.mjs — channel snapshot is | r1 only | KILLED |
| 21-snapshot-entry-freeze | packages/plugins/tests/channel.test.mjs — channel snapshot is | r1 only | KILLED |
| 22-snapshot-unknown | packages/plugins/tests/channel.test.mjs — channel snapshot is | r1 only | KILLED |
| 23-constructor-name | packages/plugins/tests/channel.test.mjs — channel caller refuses invalid core | r1 only | KILLED |
| 24-constructor-call | packages/plugins/tests/channel.test.mjs — channel caller refuses invalid core | r1 only | KILLED |
| 25-settings-verb | packages/plugins/tests/channel.test.mjs — channel caller re-reads settings | r1 only | KILLED |
| 26-settings-shape | packages/plugins/tests/channel.test.mjs — channel caller malformed settings | r1 only | KILLED |
| 27-kind-isolation | packages/plugins/tests/channel.test.mjs — channel caller malformed settings | r1 only | KILLED |
| 28-named-selection | packages/plugins/tests/channel.test.mjs — channel caller re-reads settings | r1 only | KILLED |
| 29-absent-is-off | packages/plugins/tests/channel.test.mjs — channel caller re-reads settings | r1 only | KILLED |
| 30-empty-is-off | packages/plugins/tests/channel.test.mjs — channel caller re-reads settings | r1 only | KILLED |
| 31-settings-reread | packages/plugins/tests/channel.test.mjs — channel caller re-reads settings | r1 only | KILLED |
| 32-last-good | packages/plugins/tests/channel.test.mjs — channel caller uses last good | r1 only | KILLED |
| 33-dispatch-bypass | packages/plugins/tests/channel.test.mjs — channel caller invokes the selected loaded module | r1 only | KILLED |
| 34-module-operation-filter | packages/plugins/tests/channel.test.mjs — channel caller keeps the selected module operation filter | r1 only | KILLED |
| 35-cli-project | packages/cli/tests/channel-cli.test.mjs — CLI off, absent | r1 only | KILLED |
| 36-cli-threads | packages/cli/tests/channel-cli.test.mjs — CLI off, absent | r1 only | KILLED |
| 37-cli-thread | packages/cli/tests/channel-cli.test.mjs — CLI off, absent | r1 only | KILLED |
| 38-cli-talk | packages/cli/tests/channel-cli.test.mjs — CLI off, absent | r1 only | KILLED |
| 39-core-recovery | packages/cli/tests/channel-recovery.test.mjs — both channels off recover | r1 only | KILLED |
| 40-cli-exit | packages/cli/tests/channel-cli.test.mjs — CLI off, absent | r1 only | KILLED |
| 41-webui-bypass | packages/webui/tests/channel-chat.test.mjs — WebUI channel off returns | r1 only | KILLED |
| 42-webui-error-envelope | packages/webui/tests/channel-chat.test.mjs — WebUI channel off returns | r1 only | KILLED |
| 43-webui-status | packages/webui/tests/channel-chat.test.mjs — WebUI channel off returns | r1 only | KILLED |
| 44-webui-reflection | packages/webui/tests/channel-chat.test.mjs — WebUI channel-disabled recovery text | r1 only | KILLED |
| 45-proof-admission | packages/bus/tests/channel-proof.test.mjs — channel recovery still requires | r1 only | KILLED |
| 46-proof-path | packages/bus/tests/channel-proof.test.mjs — channel recovery still requires | r1 only | KILLED |
| 47-proof-bytes | packages/bus/tests/channel-proof.test.mjs — channel conversion preserves the four | r1 only | KILLED |
| 48-dispatch-lock | packages/plugins/tests/channel.test.mjs — channel dispatch holds no selection lock | r1 only | KILLED |
| 49-cli-recovery-text | packages/cli/tests/channel-cli.test.mjs — CLI off, absent | r1 only | KILLED |
| 50-webui-recovery-text | packages/webui/tests/channel-chat.test.mjs — WebUI channel off returns | r1 only | KILLED |
| D1: delete CLI business-selector recovery sentence | packages/cli/tests/channel-cli.test.mjs — CLI off, absent and other-only channel selections refuse every project/thread flow before any effect | r2 mutants/D1-business-selector-recovery.log | KILLED |