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.4 KiB
3.4 KiB
Row 133 round 1 review (Filbert): approve
Candidate: manifest sha256 edb43aed618ef11af55effeb161060c398c300ad0c3dd6ae90c22d7552f4ddd4 (6 paths), base e6e5b41bf, packet agents/dewey/work/queue-133/r1/ in ebbbf62da.
Rebuild: a fresh worktree at ebbbf62da (current refactor) with build.patch applied. Every manifest hash matched and git diff --check was clean. The added lines have no dash, curly-quote or control characters. The packet manifest checks. No commit from e6e5b41bf to ebbbf62da touches a manifest path.
What I checked and found correct
#checkMessagingrefactor. For a role sender,name(from)is the instance's definition, assenderwas before. For the human or a tester, there's still no outbound list.#sender(s)passess.rolefor an agent. Somessage.send,review.requestandreview.verdictcheck the same pairs as before, and messaging.test.mjs passes unedited.- Raise check. It runs once the route is final, so a cross-role raise whose arbiter is the raiser is checked with the human as sender. It runs before the supersede withdrawal and every insert, and the request transaction rolls back the authority consumption. Within-role raises are exempt, and they close inside the same call.
- Who closes. I read the close path. A role-routed decision is resolved only by
s.role === d.route_to, and a human-routed one only by the human, so the raise check names the real sender of the close message in both cases. The one other closer is the human withdrawing an arbiter-routed decision. BUILD.md names it, the close comment names it, and Sage made it a follow-up (sage-0341). - Validator.
checkRolesresolves every instance's definition first, sodefinitions[definition]always exists. The refusal names the kind, instance and definition. Atebbbf62da, roles/assistant.json is the only shipped role file that declaresmessaging, so pm, cto and chief can still be arbiters. - Open decisions at upgrade. The close insert stays unchecked, so a decision raised before this lands can still be closed.
- Tests against the brief. Each kind is refused, including an instance name that differs from the definition. The shipped example and an arbiter without lists are accepted. Cross-role and gated refusals store nothing and log the code. The warden and scribe raisers make a reversed check fail in both directions. The assistant's within-role and gated raises still work.
- Mutants. The table covers the brief's four, plus the route code.
- Row 120 correction. BUILD.md quotes my 28548 replacement text exactly.
Notes (non-blocking)
- Rows 123 and 121 also touch broker.mjs and business.mjs. This candidate sits on
e6e5b41bfwithout them. Per the brief, whichever lands second rebases and reruns its gate.
What I ran and what I took from receipts
I ran, as single files with TMPDIR set and Docker disabled:
| Test file | Result |
|---|---|
| bus decision-route | 5/5 |
| bus messaging | 12/12 |
| bus review | 8/8 |
| bus decision-close | 8/8 |
| bus decisions | 7/7 |
| bus human | 4/4 |
| bus broker | 16/16 |
| business assistant | 10/10 |
| business business | 15/15 |
| business role | 14/14 |
| business chief-of-staff | 10/10 |
From Dewey's receipts, not rerun by me:
- the targeted gate in gate-run.log: business 94, bus 176, tasks 92, webui 112, cli 195;
- controls 2/2 and 5 of 5 mutants killed in MUTANTS.md.
I took no slot. Sage's full gate at the landing target is still part of the row's gate.