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.
7.0 KiB
Row 137 round 1 review (Filbert): changes
Candidate: manifest sha256 a2f942048900aaf35f1ea07e4e36d4da0ebaa1fae2ded7420cc9ec019b3c5758, 31 paths, base 7a2987cf5, packet agents/darkwing/work/queue-137/ (request comment 28780, packet note 28781). Brief: docs/plans/2026-10-15_q167-rows-r3.md at blob 6805904555.
The design holds and the code reads correctly. Two tests the brief requires are missing, so this is changes. Both are small.
Rebuild
- A fresh worktree at
7a2987cf5. r1/build.patch is a plain diff, so I applied it withgit apply --index. - All 31 manifest hashes matched, and
git diff --cached --checkwas clean (31 files, +1999 -255). - The added lines have no dash, curly-quote or control characters.
- No commit from
7a2987cf5to refactor HEAD touches a manifest path.
Blocking
B1. No host-side test for patch-drift. The brief's test list ends with "each land-work refusal code". working.mjs prepareLand refuses patch-drift when the applied diff's patch-id differs from the reviewed one, but no test in packages/seat/tests, packages/cli/tests or packages/bus/tests names the code. Only scripts/test-land-work.sh does, for land-work. BUILD.md's coverage table for "Each land-work refusal code" lists every other host code and leaves this one out without saying why.
I checked it with a probe: with the check changed to if (false) refuse("patch-drift", ...), seat working.test passed 24/24 and cli git-socket.test passed 23/23. A test can reach the check the way land-work's does, with a tampering git first on the PATH that working.mjs passes through gitEnv.
B2. No test pins push's unrelated-history check to main. The brief asks for "push's unrelated-history check against main". The existing test (working.test line 164) runs where main and root are the same commit, and the new "after a landing, a push built on the root still lands" test pushes a commit that shares history with both. With the check changed to compare against refs/heads/root, seat working.test passed 24/24 and cli git-socket.test passed 23/23. A test where root no longer shares history with a landed main (an orphan root, say) would tell the two apart.
Sage's check: the gated refusal and the arbiter acceptance
Both are left to row 139, and the packet says so. BUILD.md "Arbiter path and gated refusal left out" (line 305) says 137 will probably land first and leave "the gated-merge refusal and the host op's arbiter acceptance, with their tests, to 139 (sage-0535)", and that Darkwing adds both in another round if 139 lands first. The "REQ-LAND-1 and the gated path" section names where the refusal goes (checkLand and recordLand, after #checkAuthority).
The candidate is safe in either order. packages/bus/src/landing.mjs readLanding still requires one human answer through cli for both callers, so an arbiter-resolved decision refuses not-human on the host and in land-work. read.mjs only wraps readLanding with base refactor, so land-work's check is unchanged, as the re-pinned brief asks.
What I checked and found correct
- The trail. Each host refusal reaches the task's trail. Before the ticket: checkLand runs inside runtime.mjs
refusing, which callsbroker.refusewith the task ref, and the git socket's own refusals (land-busy, invalid-request and the like) go through serve'shost.op({op: "refuse", ...}). After the ticket:refused()in startLand sendslandRefused, which writes action.refused on the task. ARecordederror only answers the socket, so nothing is recorded twice. - The seed. root is fetched forced; main is created once with an empty old value and then follows root only when it is an ancestor (
merge-base --is-ancestor), by compare and swap. main is never forced, as the brief says. - prepareLand and finishLand. The squash is MB..C applied to main's tip with the same patch-id, made before the gate starts. finishLand moves main by compare and swap and moves it back if the broker refuses the record (rollback-failed when it can't). dropLand removes the node_modules link before the worktree.
- One landing at a time. doLand takes the slot before its first await and frees it unless the background gate owns it. That block's
finallyfrees it on every path, anddropNetworknever rejects. - The gate. One definition in packages/seat/src/landing.mjs for both callers.
isMosaicStackneeds node_modules and HEAD descending fromc2365ae51. The host runs it withgateEnv's twelve variables. - The binding. The launcher binds the git socket when
landHeldis true, and sandbox RUNNER_FILES adds bus landing.mjs, which broker.mjs imports. MERGE is reserved inrecordEvent, so no run can write the landing's action.allowed (land.test pins it).
Notes (non-blocking)
- Three host codes are the broker's, not land-work's. On the host
#checkAuthorityruns first, sonot-a-merge,not-resolvedandnot-merge-optionreach the role asdecision-mismatchordecision-not-approved. The brief scopes the broker change to the authority check for the new op, and BUILD.md (line 368) says so. I'm not blocking on it; Sage may want the brief's "with land-work's code" read that way on the record. - The RESULT message goes past "the authority check for the new op only". BUILD.md (line 166) flags it and offers the narrower fallback. Scope is Sage's call.
- The gate runs reviewed, agent-authored code on the host, outside a sandbox, with HOME and DOCKER_HOST. BUILD.md says so (line 235). The human-resolved decision and the approving verdict are what authorize it, as with land-work today.
Doc-only, follow-up
- agents/darkwing/work/queue-137/BUILD.md line 308 says "Row 139 isn't built yet". Row 139 was built and reviewed in round 1 (comment 28773) and is in round 2. The conclusion, that 137 probably lands first, still stands.
grep -rlF queue-137 packages/*/tests scripts/test-*.shfinds nothing.
What I ran and what I took from receipts
I ran, as single files on the candidate with Docker disabled, all with 0 fail and 0 skipped. TMPDIR was set to scratch except for cli launcher and cli thread-launch, which used the inherited TMPDIR.
| Test file | Pass |
|---|---|
| bus land | 8 |
| bus project-runtime | 3 |
| bus broker | 16 |
| cli git-socket | 23 |
| cli launcher | 19 |
| cli thread-launch | 8 |
| harness bundle | 22 |
| harness git-tools | 5 |
| harness tools | 19 |
| seat working | 24 |
| seat landing | 8 |
| seat checkout | 77 |
cli thread-launch first failed 5 of 8 under the TMPDIR override (the bwrap runner), then passed 8/8 with the inherited TMPDIR.
The two probes for B1 and B2 were one edit each to working.mjs in my worktree, each run against seat working.test and cli git-socket.test. I restored the file and the manifest checked again afterwards. I did not run scripts/test-land-work.sh, any suite or any gate.
From Darkwing's receipts, not rerun by me (r1/gate-run.log): the gate from 18:49:43Z to 18:55:25Z ended GATE_PASSED with every step rc=0, including bus 302, business 109, cli 202, cli launcher 19, seat 148, harness 108 and land-work 84 passed, 0 failed. Darkwing ran no mutants.