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.
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 astateread by a role, a reader and a human session, after a revoke and two snapshots soeventsandtask_snapshotsaren't empty, and requires the counts to be unchanged.seat/tests/session.test.mjs:229andcli/tests/launcher.test.mjs:242: B1 is fixed. Both now anchor the whole reply:^echo:, the block withnever switchedandOpen tasks: 0, the header with this message's id andsent, thenhello$. The session test matches the storedatexactly. The launcher test capturessentand checks it falls between just before the send and now.seat/tests/sandbox.test.mjs:218:adapter.shnow drops lines through theMessage ...: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 nextMessage ...: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.