sage: row 163 r2 BUILD.md round 2 section (Filbert F1-F3 and N1, tests R14 R15, mutants K34-K41)

This commit is contained in:
jason.woltje committed 2026-10-20 10:11:27 -05:00
1 parent 2a5f3a3a0d
commit 2c090eefda
1 file changed
+28
+28
View File
@@ -117,3 +117,31 @@ a read-only Registry never writes and refuses add().
(bus-status pid), K21 (scratch store linked to the backup), K27 (ticker under --no-launch) and
K31 (cli drops launches); each got a test and the rerun killed all four. K21 now dies on
FAIL backup-unchanged, the check it exists for.
## Round 2 (Filbert r1, comment 29445: F1-F3 changes, N1)
Filbert's six mutants M1-M6 survived the R tests. Each named a check that worked but that no test
drove to FAIL. Round 2 adds those tests. stack-release.sh is unchanged (blob 0053f35d1360).
- F1 (M1, M2): R14. A new fixture fault, host-touches, has the host append to a file it lists.
Three cases (the live config, the live business file, the backup's bus.sqlite) each give exactly
one FAIL, live-config-unchanged or backup-unchanged, after the gate passed and the host stopped.
- F2 (M3): R9 gains a pm gitea reference left on env REHEARSAL_GITEA_TOKEN, which fails
credential-ref-live with "pm gitea is env REHEARSAL_GITEA_TOKEN" before the host starts.
- F2 (M4): R11 gains a scratch config whose dataRoot is another existing directory ("resolves to
X, not R/data") and one whose dataRoot is not there ("X does not exist"). Both fail
data-root-scratch before the host starts.
- F2 (M5): R4 gains host-launches-dir, a host that makes data/launches, which fails no-session
with "found launches under".
- F3 (M6): R15 sends TERM, INT and HUP to a rehearsal whose gate is still waiting on /healthz.
Each gives FAIL signal, then console-stopped, host-stopped, host-released-store,
backup-unchanged and live-config-unchanged all PASS, REHEARSAL_FAIL, exit 1, and the host's pid
is gone. rehearse() gained an e.during hook that gets the child process.
- N1: Registry.remove() wrote sessions.json under readOnly. #write() now returns at once when the
registry is read-only, so the constructor, add() and remove() share one rule. The session test
calls remove() on a read-only registry and checks that the file is unchanged.
Mutants K34-K41, one per finding and N1, are all killed (r2/mutants-run.log beside this file):
K34 backup-unchanged always passes, K35 live-config-unchanged always passes, K36 env ref
accepted, K37 data-root-scratch mismatch dropped, K38 missing root dropped, K39 launches dir
ignored, K40 no INT/TERM/HUP trap, K41 read-only Registry writes.