Files

3.7 KiB

Filbert review: row 109 round 3 (#1603): approve

Candidate manifest sha256 0a62225ee6adcff0b2f581758e873fa135073d9ad900a2a835ff2bad9248ec16 (11 files). I rebuilt it in my own worktree at BASE 02fe2d9d5 with row109.patch from packet 875c515e9. All 11 hashes match, git diff --check is clean, and no manifest path has drifted from 02fe2d9d5 to HEAD. The added lines have no dashes, bidi or control characters.

What changed since round 2

I applied the round 2 patch (55c6cec73) to the same base in a second worktree and diffed the two trees. Five files differ, and only in these places:

  • broker.mjs: the N1 comment now reads "role, reader and human sessions". The code is unchanged.
  • state.test.mjs: two N2 tests. One checks that a human read deep-equals the role's read, with cap 50 and total 52. The other counts the rows in every table before and after a state read by a role, a reader and a human session, after a revoke and two snapshots so events and task_snapshots aren't empty, and requires the counts to be unchanged.
  • seat/tests/session.test.mjs:229 and cli/tests/launcher.test.mjs:242: B1 is fixed. Both now anchor the whole reply: ^echo:, the block with never switched and Open tasks: 0, the header with this message's id and sent, then hello$. The session test matches the stored at exactly. The launcher test captures sent and checks it falls between just before the send and now.
  • seat/tests/sandbox.test.mjs:218: adapter.sh now drops lines through the Message ...: header, then the blank line after it. Under the round 2 patch this file fails 2 of 7 in my run, both confined-shell tests, so the fix is needed. It's a test fixture only.

broker.mjs code, runner.mjs, the fixture, both READMEs and pm.md are byte-identical to round 2. My round 2 findings on Sage's five checks still hold.

The consumer grep

I ran build.md's grep -rIn MOSAIC_REQUEST packages scripts adapters src | grep -v node_modules | grep -v '^packages/harness/' in the rebuilt tree. It lists exactly what build.md says: the sandbox test, the three adapters, adapters/README.md and src/run-agent.sh. The mock adapter only checks that the variable is set, and pi and claude pass the whole text as the prompt. None parses the body. Inside packages/harness/, the hits are the runner, the fake adapter, and pi-session.test.mjs and claude-session.test.mjs, which give the real adapters a literal request rather than going through the runner.

A wider sweep of the whole repo (minus v1, agents and docs) adds only README.md:129 and tasks/foundation-phase2-source-facts.json, both prose. I also grepped every package for assertions on the old reply or header shape (echo: Message, , class REQUEST:). Only turnRequest unit tests and the pi-session literals remain, and neither goes through a runner turn.

Note (not blocking)

  • N1. The sandbox fixture's sed '1,/^Message .*:$/d' looks for the end of the range from line 2. A request whose header was on line 1, with no block above it, would lose everything through the next Message ...: line. Every runner request now starts with the block, so this can't happen today. It would only matter if the fixture were reused for a runner path without the block.

What I ran (single files, no slot)

bus/tests/state.test.mjs 8/8, harness/tests/runner.test.mjs 20/20, seat/tests/session.test.mjs 9/9, seat/tests/sandbox.test.mjs 7/7 (5/7 under the round 2 patch), cli/tests/launcher.test.mjs 17/17, bus/tests/broker.test.mjs 15/15. I didn't rerun the mutants or the full package suites, and relied on the packet receipts for those. Both worktrees are removed and no process is left in them.

Verdict: approve.