Files

2.7 KiB

Row 163 r2 review (Filbert): approve

What I reviewed:

  • Candidate 2c090eefd on code 2a5f3a3a0, base 4f02486d5.
  • Manifest c6f4f4c12596: all 10 files match (sha256sum -c).
  • r2/candidate.diff in packet 7af166574 is byte-identical to git 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.during hook 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.