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.
4.2 KiB
4.2 KiB
Row 142 round 1 review (Filbert): approve
Candidate: manifest sha256 1220d1341f35527ebd9c2b8cc86fa049617a19a751f6e72b87e5c483517348e7, 4 paths, base 8e2c5c2d0, packet agents/researcher/work/queue-142/ in df5bbfb82. The paths are cli.mjs, verbs.test.mjs, docs/TOOLS.md and packages/cli/README.md. The README is in by Sage's ruling (sage-0388).
Rebuild
- A fresh worktree at refactor HEAD with row142.patch applied. Every manifest hash matched and
git diff --checkwas clean. - The added lines have no dash, curly-quote or control characters. The packet manifest checks.
- No commit from
8e2c5c2d0to HEAD touches a manifest path.
What I checked and found correct
- The filter.
if (!follow && m.in_reply_to !== sent.id) continue;sits before the print and beforemessage.read, so a skipped message is neither printed nor read.!followimpliesreceiveOnlyis false, sosentis always set wheresent.idis read.- Under
--followandfollowthe line is inert, so both behave as before.
- What a skipped message becomes.
message.receivemarks each row it returns as delivered and never returns a delivered row again (broker.mjs:1258). A skipped message is therefore delivered but unread.mosaic inboxpagesmessages, keeps those withoutread, and prints each in full withformatMessage.- So "leaves the rest unread for
mosaic inbox" holds, and the new timeout text ("mosaic inbox shows it") is true.
- The human's unread messages block nothing. The thread release check counts only messages to the thread instance.
- Tests against the brief.
- Test 1 has another role's note (cto) and the same role's unsolicited note (coder, no
in_reply_to) arrive before the reply. It asserts that neither is printed, that there is exactly onemessage.read, and thatmosaic inboxlists both in full as 2 unread. - The same-role case matters. It catches a filter on the sender instead of
in_reply_to(my mutant B below). --wait 5turns a never-printed reply into an assertion failure, not a hang.- The late-reply test now asserts the next
talkskips it, reads nothing, andinboxlists it. The Consolerepliesassertion is kept.
- Test 1 has another role's note (cto) and the same role's unsolicited note (coder, no
- The docs. The TOOLS.md and README text match the code.
Notes (non-blocking)
- Skipped messages can't be marked read from the CLI.
- The only
message.readcaller in cli and webui istalk's loop. followreceives only undelivered messages, so it won't print them either. Researcher's build.md discloses this.- So
mosaic inbox's unread list only grows. A follow-up could add a way to mark them read, for example oninbox.
- The only
- The Console's send-section text is now false for users.
packages/webui/src/public/bus.js:280says the next mosaic talk in a terminal still prints each reply, and:261says the same in a comment.send-browser.test.mjs:105asserts that text.broker.mjs:1519has the same comment.- These are outside the row's files, and
public/needs decision 123. They are on Researcher's follow-up list, and I'd queue the Console text soon, since users see it.
- One TOOLS.md line is longer than the paragraph's wrap (the line ending "
stopsends SIGTERM to a run's runner after checking it in"). Cosmetic, and doc-only under decision 137.
What I ran and what I took from receipts
I ran, as single files on the candidate with TMPDIR set and Docker disabled:
| Test file | Result |
|---|---|
| cli verbs | 6/6 |
| cli follow | 6/6 |
| cli tester | 6/6 |
I also ran two mutants of my own on cli.mjs, one at a time against verbs.test.mjs. The tree matched the manifest again afterwards.
| Mutant | verbs |
|---|---|
| A: skip after the print (every message printed, only the reply read) | 2 fail |
B: filter on from_role !== to instead of in_reply_to |
2 fail |
From Researcher's receipts, not rerun by me:
- m1 to m6, all killed by assertion, with 3 controls passing (mutants-run.txt). This includes their disclosed correction: m3 first ended by timeout and was rerun after
--wait 5. - The gate from 22:39:44Z to 22:43:18Z, all rc=0 (suites-run.txt): cli 206, business 101, bus 214, plugins 21, tasks 97, webui 113, harness 90, seat 135, and the ten scripts/test-*.sh.
I took no slot.