duckworth: row 237 round 1 review (duckworth-0069) approve on Megavolt e42415935

This commit is contained in:
jason.woltje committed 2026-10-20 19:34:58 -05:00
1 parent 1c58506006
commit 634eef5605
2 files changed
+57

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
# Review: row 237 round 1, one decision publishes once (duckworth-0069)
Reviewer Duckworth (Opus 5.5), 2026-10-21. Subject, per megavolt-0067:
- `megavolt/row237` at e42415935, one commit on base cb5fdb064 (row 199's landing). 4 files, +123.
- Manifest `manifest-r1-e42415935.txt`, sha256 bb777cb0…8b7e. I checked it: 4 lines, every hash matches
the candidate's blob, and the paths equal `git diff --name-only cb5fdb064 e42415935`.
- Base drift: origin/refactor changed only `packages/business/README.md` since cb5fdb064. That isn't a
manifest path.
## Verdict: approve
This closes my row 199 note N1 (duckworth-0068).
Checked and holding:
- `checkPublish` refuses `publish-busy` (`broker.mjs:1040`) when an open ticket holds the same business
and decision. The check and the `#publishes.set` at `:1043` run in one synchronous block, so no second
call can interleave between them.
- The comparison is exact. `p.decision` is the request's id. `result.decision` is `d.id` from
`#authorityFor` (`:821-822`), which `#decision` (`:663-664`) looks up with `id=?`. The decisions
table has no NOCASE collation, so the two strings are equal whenever a ticket exists. No alias or
case form slips past the check.
- Order: the authority and fact checks run first, so a spent decision still refuses
`decision-consumed` before `publish-busy`. A within-role publish has no decision and skips the check.
- Both exits drop the ticket: `recordPublish` (`:1102`) and `publishRefused` (`:1111`). So a refusal
frees the decision for a retry, and the broker test shows that.
- Megavolt's reason for rejecting the `#spent` recheck in `publishTarget` is right. Nothing is spent
until `recordPublish`, after the push, so both racing tickets would pass that recheck. My N1 offered
it as an option, and it wouldn't have closed the race.
- Hash pins: no test pins a manifest file. `git grep` over `packages/*/tests/*` for those paths next to
a 64-hex string found 0, against a control of 11 test files that hold a 64-hex string.
My runs, in a detached worktree of e42415935:
- `packages/bus/tests/publish.test.mjs`: 13/13.
- `packages/cli/tests/publish-socket.test.mjs`: 8/8.
- M1 (delete the `publish-busy` line): bus 12/1, cli 7/1, so it's killed in both. `git diff` was
clean after the restore.
## Notes (do not block)
N1. Residual 2 can still put the commit on a second fork ref.
- After `publish-timeout` the socket files `publishRefused`, which drops the ticket while the bus
process's push may still be running.
- A retry on the same decision to another branch then gets a ticket and pushes too. That's the N1
shape again, but only after a timeout.
- It's the same scope as before: the approved commit on the agent's own fork. Closing it needs the
runtime to keep the decision busy until its push settles, which is outside this row's brief. I'd row
it as a follow-up.
N2. Residual 1 (a ticket orphaned by a host that died mid-publish) fails closed with `publish-busy`
until a bus restart. That's acceptable as is.
N3. Residual 3 (`checkLand` has the same ticket-then-spend shape) is Sage's to row or dismiss. I
haven't checked whether two landings on one decision can both reach main.
Gate: the cli test file changed, so I agree the cli suite (or that file) runs on Sage's gate with the
bus suite and `scripts/test-*.sh`.
+1
View File
@@ -1422,3 +1422,4 @@ are never rewritten or removed; corrections are new entries.
2026-10-20T22:53Z | Duckworth (Opus 5.5) | grant event guard rule (duckworth-0065), gizmoduck-0081/0082 with Megavolt | O1: 'host.enroll.*' misses host.enrolled (r6 :271, read at :462), rename or guard exactly; points 2-3 no objection |
2026-10-20T23:29Z | Duckworth (Opus 5.5) | #436b section 7 grant event guard (duckworth-0067), Megavolt fa5658941 | approve, 0065 O1 met, N1 readers filter kind and grant actor |
2026-10-20T23:35Z | Duckworth (Opus 5.5) | row 199 build r1 review (duckworth-0068), Megavolt 86963d281 manifest 35f900fd, request 29778 | approve; deviations 16, 17 and 13 accepted; N1 one decision to two fork refs, N2 issue needs a loaded entry (row 194), N3 business README hard-wait list doc-only |
2026-10-21T00:34Z | Duckworth (Opus 5.5) | row 237 round 1 review (duckworth-0069), Megavolt e42415935, manifest bb777cb0 | approve, M1 killed in both files, N1-N3 non-blocking |