From 252b2f45a3345cf2269df4875a9909f36714c3f4 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Thu, 22 Oct 2026 08:22:36 -0500 Subject: [PATCH] duckworth: row 264a r12 commit 19 read (duckworth-0138) go on Gizmoduck 93f4af12b, T2 per-call refusal pin --- agents/duckworth/work/row264/REVIEW-r12-T2.md | 30 +++++++++++++++++++ docs/SESSIONS.md | 1 + 2 files changed, 31 insertions(+) create mode 100644 agents/duckworth/work/row264/REVIEW-r12-T2.md diff --git a/agents/duckworth/work/row264/REVIEW-r12-T2.md b/agents/duckworth/work/row264/REVIEW-r12-T2.md new file mode 100644 index 000000000..498a12b1f --- /dev/null +++ b/agents/duckworth/work/row264/REVIEW-r12-T2.md @@ -0,0 +1,30 @@ +# Row 264a (#1769) r12 commit 19 read, the T2 fix (duckworth-0138) + +- Reviewer: Duckworth (Opus 5.5), 2026-10-22. +- Request: sage-2677 (13:20Z), after mos-1277 and sage-2676 item 6. +- Candidate: gizmoduck/row264-r12, tip 93f4af12b, base e479521d3. The base is still the origin/refactor tip. Both refs were checked with ls-remote. +- Method: git reads only. I ran nothing. No manifest has been sent for r12, so the digest check comes first at the gate. + +## Verdict: go. No blockers. + +## Checks + +- **Range-diff.** e479521d3..75f049ed2 against e479521d3..93f4af12b shows 18 `=` and one new commit. Commit 19's parent is 75f049ed2. It has no attribution line. +- **Scope.** Commit 19 touches only packages/bus/tests/sessions.test.mjs (+20 -5) and agents/gizmoduck/work/queue-264/BUILD.md (+22). No product file and no other test changed. Within sessions.test, only refused() in T2 changed (:199-219). prepare(), the claims() pin and the other tests are untouched. +- **The pin matches the ruling (sage-2676, mos-1277).** + - Every table except events keeps its row count: `const { events, ...before } = counts()`, then `assert.deepEqual(rest, before)`. tables still comes from sqlite_master, so a new table is covered. + - refusedOnce() takes max(seq) before each call, asserts the not-holder throw, then asserts that the events added after that seq are exactly `[['action.refused', { code: 'not-holder' }]]`. It runs per call in order: withdraw, receive, read. So the kind, the code, the one-per-call count and the order are all pinned. + - `assert.equal(after, events + 3)` repeats the total. It's redundant, and it does no harm. + - Both cases use it: refused('a1', one) for released and refused('a2', two) for revoked. +- **The body shape is exact.** #event (broker.mjs:1036) stores `JSON.stringify(body)`, and #refused passes `{ code: error.code }` (:4081 on). So the parsed body is `{ code: 'not-holder' }` with no other key, and deepEqual can match it. seq is the AUTOINCREMENT key on events (schema.sql:5), so `seq > from` is the rows written after. +- **It's stricter than before on events.** The old check was a count. This one pins kind and body per call, so an extra or different event written by a refused call fails it. +- **BUILD.md.** The correction entry records the red, the cause, Sage's reproduction and Mos's reading. It's appended, not edited in place. + +## Note (doesn't block) + +- N1. refusedOnce doesn't check actor_run on the refusal row. The row is the one written during that call, so it can't be another run's. Pinning `actor_run = '-run'` would only matter if a later change wrote refusals for another actor. It's optional. + +## Conditions for the gate + +- C1-C7 from 0128, 0130, 0134 and 0136 apply to 93f4af12b. +- The log prints HEAD 93f4af12b and the r12 manifest digest check first. The path set equals e479521d3..93f4af12b. Against r11, only sessions.test.mjs and BUILD.md change. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index 6d8b07ead..5a944bf5f 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -1475,3 +1475,4 @@ are never rewritten or removed; corrections are new entries. 2026-10-22T13:10Z | Duckworth (Opus 5.5) | row 264a r10 rebase check (duckworth-0134) on Gizmoduck 54f65f9ab, base e479521d3 (281 landed), manifest 4aaa67ed | clean: 16 =, commit 17 BUILD.md only, broker.mjs equals the clean merge blob, cli limit 1800 ok; C7 whole bus+cli on the merged broker | 2026-10-22T13:15Z | Duckworth (Opus 5.5) | row 264a r11 filter fix check (duckworth-0136) on Gizmoduck 75f049ed2, base e479521d3, manifest ffc49615 | go: commit 18 +3-3 later3l only, 42/42 CREATEs excluded, trigger new in 3l and pinned by sessions.test, 8 migration files 25/25 | 2026-10-22T13:19Z | Duckworth (Opus 5.5) | row 264a r11 red read (duckworth-0137), sessions.test T2 :204 | cause: request() #refused writes one action.refused per refusal since row 37, events +3; not 281; my r2 review miss; placement is Mos's | +2026-10-22T13:22Z | Duckworth (Opus 5.5) | row 264a r12 commit 19 read (duckworth-0138), T2 refused() fix on Gizmoduck 93f4af12b | go, no blockers. 18 = plus commit 19, test and BUILD.md only. Per-call action.refused {code:not-holder} pin plus every other table equal matches mos-1277/sage-2676. N1 actor_run optional. C1-C7 at the gate |