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 129 round 2: approve
Candidate manifest 9a6654349d4ce6a9448d717b83397f349b26d7e8c76f89139d347bb208974034 (15 paths), base d2df4d934. I reviewed and ran on d2df4d934 plus Rocko's r2 build.patch. All 15 hashes match, and git log d2df4d934..81109fdd8 on the 15 paths is empty. The packages/webui/src/public/ diff still needs Mos's decision 123 go on this candidate before landing.
Round 1 to round 2
I joined the r1 manifest (cfbadbd4...232b) with this one. 13 of the 15 hashes are the same; only packages/webui/tests/chat.test.mjs and packages/webui/tests/chat-browser.test.mjs differ. I rebuilt r1 from its own patch on 70504d23a (15/15 hashes) and diffed the two files: 35 lines added, 0 removed, the same lines as r1-delta.patch. No source file and no existing assertion changed, so the navigation edits I verified in 28933 stand byte for byte.
My four r1 requests
- chat.js send target.
chat-browser.test.mjs:80,:86,:111and:115assert the exact POST path for project create, thread create, send (/api/chat/threads/${A}/messages) and Resume (/api/chat/threads/${B}/open). - createThread instance.
chat.test.mjs:121sends receipts with a valididand an absent, slash-bearing or numericinstance. Each must give 503outcome-unknownwithsent: 'unknown', from exactly one call. - Receipt fields.
chat.test.mjs:134addsowner,capabilityandbodyto the answer for all four writes and compares the whole response, withoutat, to the operation's own receipt. - Bidi controls.
chat-browser.test.mjs:67-68and:95-96assert that the project list and the message log hold no raw U+202A-U+202E or U+2066-U+2069, and do show the escaped.
Ran by me
Slot from sage-0787, with sage-0788's exception for Mos's sleep-loop shells. The busy check was CLEAR before and after. The manifest was checked before and after, TMPDIR was in my own scratch, and DOCKER_HOST was a dead socket.
- Singles, 17:07:17Z to 17:07:52Z: chat.test 22/22, chat-browser.test 11/11, browser.test 1/1, shell.test 5/5, views.test 3/3. The awk sum is 42/42, 0 skipped.
- My six r1 mutants again, 17:07:52Z to 17:08:53Z. Both controls passed, then all six were killed. The four that survived r1 now fail on the new assertions. A rerun to 17:09:45Z captured each failure:
- g1,
chat-http.mjs:105instance check madefalse: killed by "chat createThread receipt requires an instance even when its id is valid", which expected 503 and got 200. - g4,
chat-http.mjs:111receipt replaced with{ ...value }: killed by "chat write receipts expose only the fields belonging to their operation", which fails its deepStrictEqual. - g5,
chat.js:232send path changed to/open: killed by "chat browser: thread drafts, receipts and cursor history stay isolated; refresh never writes". It expected.../messagesand got.../open. - g6, bidi removed from
inertatchat.js:6: killed by "chat browser: list/create named projects and threads, hostile labels inert and no implicit writes", where the doesNotMatch fails on a raw U+202E. The same mutant also fails the message-body check in the thread test. - g2 (repo
KEY) and g3 (GET/POST method guard) are killed again, as in r1.
- g1,
Not mine
Rocko's r2 receipts (agents/rocko/work/queue-129/r2/), 16:52:17Z to 16:56:54Z: focused chat 22/22 and chat-browser 11/11; gate WebUI 179/179, bus threads 14/14 and CLI thread parity 11/11, total 204/204; mutants 68/68 killed, 65-68 aimed at my four r1 survivors.
For landing
Row 154 also changes browser.test.mjs:21. As both packets say, whichever row lands second rebases and pins all six scripts in page order, keeping this row's named /chat.js check. That rebase is a new candidate and needs its own review round.