row 264a r13 (#1769): BUILD.md writes M2's four edits before phase 4 reruns: the receive filter, delivery_same_session dropped from 3k-3l.sql and schema.sql, and store.mjs's SCHEMA_SHA256 set to the mutated schema; a kill counts only as a receive-test assertion; doc only (mos-1279, sage-2688, sage-2690, duckworth-0143, duckworth-0144)

This commit is contained in:
jason.woltje committed 2026-10-22 09:08:25 -05:00
1 parent 2cc34aef87
commit 84f53540dd
1 file changed
+18 -2
+18 -2
View File
@@ -201,11 +201,27 @@ Each runs on a copy of the candidate tree with one edit, and the named test must
run's fence entirely, so the kill shows the refusal is tested, not that generations add a check.
A mutant that puts back `h.holder_run !== s.run` survives by equivalence. That isn't a coverage
gap.
- M2. In `message.receive`, drop the `mt.session=?` filter (the session clause and its argument).
Killed by sessions.test T1, where a1 would take the second session's message.
- M2 (mos-1279, sage-2688, sage-2690). Four edits, and the restore sha check covers all four files:
1. broker.mjs:5251, in `message.receive`: drop the `mt.session=?` filter (the session clause and
its argument).
2. 3k-3l.sql: drop the `delivery_same_session` trigger.
3. schema.sql: drop the same trigger.
4. store.mjs:16: set `SCHEMA_SHA256` to the sha256 of the mutated schema.sql, with the replace
sessions.test:432 uses. store.mjs:94 checks schema.sql against it at import (duckworth-0144).
`LEGACY_SHA256` stays. The chain check at :117 holds because both SQL files drop the trigger.
Without edits 2-4, the trigger refuses #delivery's INSERT first. request() then returns
storage-refused before any assertion runs. That happened at r13 (duckworth-0143).
A kill counts only as an assertion in a test that exercises receive: sessions.test T1 :89, T7 :422,
or another receive assertion the log names. A failure only at the trigger's own pin (:164-170)
doesn't count, and neither does a thrown error. The killing test is expected to be T1, where a1
would take the second session's message.
- M3. In 3k-3l.sql, count every claim row for `generation` instead of `op='claim'` rows only.
Killed by sessions.test T7, generations 1, 1, 1, 2, 2.
Phase 4 rerun on r13 (mos-1279, sage-2688). The r13 gate's phases 1-3 carry. M1-M4 rerun whole on
2cc34aef8 plus this note, each under `timeout -k 10 300` (Run limits). Any survivor, throw or
non-receive kill goes to Mos unplaced.
### Dry run
Before writing any node test, I ran 3j-3k.sql in an in-memory Python sqlite3 on a 3j fixture