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.
5.8 KiB
Row 137 round 3 review (Filbert): approve
Candidate: manifest sha256 0fae2b6fa41f1cbcf2117b637a2f7a89cb2af209bf32647f0afc1612a9a34e16, 31 paths, base 63c82f1c4, packet agents/darkwing/work/queue-137/ r3/ (request comment 28798). Brief: blob 6805904555dc, including the second-lander items at lines 319-330 and 460-468.
I found no defect. Both carry items are present and tested. B1 and B2 from round 1 are unchanged from round 2. One note doesn't block.
Rebuild
- A fresh worktree at
63c82f1c4. I applied r3/build.patch withgit apply --index. - All 31 manifest hashes matched, and
git diff --cached --checkwas clean (+2115 -255). - The added lines have no dash, curly-quote or control characters.
- Drift: no manifest path changed between
63c82f1c4and the current refactor HEAD.
Interdiff, round 2 to round 3
I rebuilt r2 at 7a2987cf5 too and compared each path whose manifest hash changed. Ten hashes changed. packages/harness/README.md has no change in its own diff; it differs only because row 139 changed the base. That leaves the nine content changes BUILD.md "Round 3" names: the bus README, broker.mjs, landing.mjs, land.test.mjs, the cli README, git-socket.test.mjs (a comment), launcher.test.mjs, bundle.mjs and bundle.test.mjs. I found nothing else.
The two carry items, each found
- The REQ-LAND-1 gated refusal.
checkLandandrecordLandpass the class from#checkAuthority/#authorityForinto#landFacts, which refusesnot-authorizedforgatedbefore it reads the landing. The REQ-LAND-1 test in land.test.mjs: the coder raises a cited merge decision, it routes gated to pm, pm approves, and the land refusesnot-authorized;readLandingwitharbiter: truestill refusesnot-human, andlandHeldis false. An uncited raise routes to the human, the human approves, and it still refusesnot-authorized. This is the test the brief asks for. - The host op accepts an arbiter-resolved merge.
readLandingtakes{ arbiter }and accepts a resolution that is either the human's CLI answer or, witharbiter, across-roledecision not routed to the human, resolvedvia: 'broker'with no human answer.#landFactspassesarbiter: true. The REQ-DEC-2 test: merge-gate's raise routes cross-role to pm, pm-run resolves it via the broker,readLandingwithoutarbiterrefusesnot-human,checkLandreturns the facts withbypm-run,recordLandwrites classcross-role, and the decision is spent once. This is the brief's "an arbiter-resolved merge decision raised by merge-gate lands through the host op". - land-work stays human-only. scripts/land-work/read.mjs still calls
readLandingwith{ into: 'refactor' }and noarbiter, so it refuses any resolution that isn't the human's.
What I checked and found correct
- Only the arbiter can resolve via the broker.
decision.resolvesends a human-routed decision to the human path and requiress.role === d.route_tofor any other, elsenot-resolver.viaisclionly for the human session. Soarbitratedcan only be true for the role the raise routed to. - merge-gate as its own arbiter. The raise routes to the human, pm's resolve is refused
human-required, and the human's answer lands. The test pins it. - landHeld counts only a
cross-roledecision raised on the record's thread. - The bundle prompt line names
land_workonce the merge decision is approved, and bundle.test asserts it.
Note (non-blocking)
- A within-role merge grant isn't covered, and a land.test comment says it can't happen. role.mjs refuses only
GATED_ONLYactions inauthority.withinRole, andgit.merge.protectedisn't in that set after row 139, so a role file may list it within-role. No shipped role does (no file under roles/ names it). If one did, the land would still refuse: with no decision,readLandingrefusesdecision-not-found; with a decision, the raise auto-resolves via the broker, andreadLandingrefusesnot-humanbecause the class isn'tcross-role. So the outcome is safe, but the comment above the checkLand codes test (land.test.mjs, "not-human can't reach checkLand: a gated decision refuses not-authorized first, and the broker resolves a cross-role one the two ways readLanding takes") misses this case, and no test pins it. A follow-up could make#landFactsrefuse every class butcross-rolewithnot-authorized, or correct the comment and add the test. Whether a within-role merge grant should load at all is a policy call for Sage.
What I ran and what I took from receipts
I ran, on the slot Sage granted (sage-0580), from 2026-10-16T19:56:41Z to 19:57:02Z, as single files on the candidate with Docker disabled and TMPDIR set to scratch. These are the untouched tests BUILD.md lists as reading changed sources but not run on 63c82f1c4, plus two touched files as a spot check. All had 0 fail and 0 skipped:
| Test file | Pass |
|---|---|
| cli tester | 7 |
| cli launch-limits | 1 |
| cli cli | 12 |
| harness runner | 24 |
| harness claude-gate | 3 |
| harness claude-session | 8 |
| harness mcp-server | 5 |
| harness pi-session | 8 |
| bus land | 10 |
| harness bundle | 22 |
I ran no mutants, no suite and no gate.
From Darkwing's receipts, not rerun by me (BUILD.md "Round 3", r3/gate-run.log): a round from 19:43:51Z to 19:45:35Z ending ROUND_PASSED. bus land 10, bus hard-waits 12, bus project-runtime 3, seat landing 8, seat working 26, harness bundle 22, harness git-tools 5, harness tools 19, cli git-socket 23, cli launcher 19, cli thread-launch 8, test-land-work 86, the bus suite 316 and the seat suite 150. Seven mutants, all killed: B1, B2, the gated refusal, the arbiter path, cross-role-only, the arbiter default and landHeld cross-role. It ran no other package suite, no other scripts/test-*.sh and no Docker. Sage's landing gate covers the rest.