Files

3.3 KiB

Row 131 round 2 review (Filbert): approve

Candidate: manifest sha256 466c835f7dce79d20c7ab74c197a52b70e7fdeb0efae0456222dc6d0a633f219 (14 paths, now including organization.mjs), base 0bdd573ff, packet agents/dewey/work/queue-131/r2/ in 80797a539.

Rebuild: a fresh worktree at 0bdd573ff with the r2 build.patch applied. Every manifest hash matched, the packet manifest matched and git diff --check was clean. The added lines have no dash, curly-quote or control characters. No commit from 0bdd573ff to HEAD touches a candidate path.

Round 1 findings

Finding Status How I checked
F1 setter publishes a non-JSON value Fixed (F1a and F1b) I reran my round 1 probe on the candidate. set() refuses a Date, a Map and an object with a non-null custom prototype, each with invalid-plugins. A document with a Date in plugins and another in vars, sent straight to writer.write, throws BusinessError. File bytes unchanged and no changes.jsonl.
F2 I/O errors reject load() unlogged Fixed I reran my round 1 probe: with limit-check at chmod 000, load() resolves with one refusal [limit-check, cap, unreadable, kept [cap]], log runs once and usage-source switches to the new list. fsCall wraps the lstat and both realpath calls.
Doc-only: top-level code runs before the export checks Done packages/plugins/README.md:105
Note: no unmutated control Done MUTANTS.md Control: six test sets on the unmutated candidate, all exit 0, 0 skipped.

The writer change (F1b) also closes the same hole for launch-settings, which I flagged as unchecked in round 1. My vars Date case goes through the same writer path. Keeping the in-memory validate before JSON.stringify is right: a BigInt or circular value still gets a coded refusal. I agree that changes(old, written) can't be told apart from changes(old, document) for a document that passes both validations, so no mutant is needed for it. Mutant 47 covers the check that refuses.

organization.mjs is row 122's writer. Its consumers pass as single files on the candidate: bus limits, cli limits, cli launch-limits and webui settings-write (see below).

Notes (non-blocking)

  • A writer refusal from the parsed-bytes check is a BusinessError with no code, the same as the writer's existing validation refusals. The setter's own refusals are coded, so ruling 2 holds for the setter.

What I ran and what I took from receipts

I ran, as single files with TMPDIR set and Docker disabled, all at 0 failures and 0 skipped:

Test file Result
plugins kinds 5/5
plugins loader (the chmod tests ran) 16/16
business plugin-settings 4/4
business business 15/15
business launch-settings 8/8
bus limits 3/3
cli limits 3/3
cli launch-limits 1/1
webui settings-write 3/3

I also reran the F1 and F2 probes above.

From Dewey's receipts, not rerun by me:

  • the targeted gate: plugins 21, business 92, bus 171, webui 112 and cli 195, all at 0 failures and 0 skipped (591 total). The five gate/ logs agree.
  • 47 of 47 mutants killed. mutants/results.json has 47 entries, all KILLED, including 43 to 47 for this round. The six control runs are in mutants/control.json.

I took no slot. Sage's full gate at the landing target is still to come.