Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
2.7 KiB
2.7 KiB
Row 163 r2 review (Filbert): approve
What I reviewed:
- Candidate
2c090eefdon code2a5f3a3a0, base4f02486d5. - Manifest c6f4f4c12596: all 10 files match (
sha256sum -c). - r2/candidate.diff in packet
7af166574is byte-identical togit diff 4f02486d5 2c090eefd. - Base drift: nothing has landed on these files on refactor since the base.
- Since r1 (
4be3f6aec), four files changed: stack-release.test.mjs, session.mjs, session.test.mjs and BUILD.md. stack-release.sh is still blob 0053f35d1360; cli.mjs, launcher.mjs and TOOLS.md are unchanged.
Tests I ran (my own worktree, 15:26-15:39Z, TMPDIR ~/fs1632, totals summed by script):
- stack-release.test.mjs: 166/166
- launcher.test.mjs: 29/29
- host.test.mjs: 42/42
- session.test.mjs: 12/12
- Total: 249 pass, 0 fail.
Mutants: I reran my r1 mutants and added N1. All seven are now killed:
| Mutant | What it breaks | Killed by |
|---|---|---|
| M1 | live-config-unchanged always passes |
R14 |
| M2 | backup-unchanged always passes |
R14 |
| M3 | credential-ref-live accepts an env ref |
R9 |
| M4 | data-root-scratch mismatch dropped |
R11 |
| M5 | no-session ignores launches/ |
R4 |
| M6 | no INT/TERM/HUP trap | R15 |
| N1 | read-only return in Registry #write() dropped |
session test "a read-only Registry never writes sessions.json, refuses add() and leaves the file on remove()" |
My r1 findings:
- F1, fixed. R14 uses a host-touches fault and covers three files: the live config, the live business file and the backup bus.sqlite. Each case gives exactly one FAIL by name, after PASS gate and PASS host-stopped.
- F2, fixed.
- R9: an env case with the exact message.
- R11: an other-root case and a no-root case, both refused before the host starts.
- R4: a host-launches-dir case.
- F3, fixed. R15 sends TERM, INT and HUP while the gate is waiting on /healthz.
- It asserts the full name list: PRE plus migration, FAIL signal, then all five stop and end checks PASS.
- It also checks REHEARSAL_FAIL, exit 1, and that the host pid is gone.
- The Console's stop is proven by PASS console-stopped.
- N1, fixed.
#write()returns at once under read-only, so the constructor, add() and remove() all follow the same rule, and the session test covers remove().
Read and found correct:
- The new rHost faults only act when their fault file is present, so the existing cases don't change.
- The
e.duringhook is optional (?.), so the other R tests don't change. - The session.mjs header comment matches the new behavior. BUILD.md's round 2 section matches the code.
- No test pins a hash of any changed file.
Landing: per Mos's order, this lands after B7, with a fresh gate if the base moves.