From a81b3446eb512963fe582e9d5def2af81ffeb614 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Thu, 22 Oct 2026 10:09:37 -0500 Subject: [PATCH] row 269 (264b, #1774): refusedOnce in sessions.test.mjs pins actor_run, closing Duckworth N1 (DEFERRED.md:474-480) Allowed by Mos in mos-1292 (copy mos-1294) on mos-1285's terms. The SELECT reads actor_run, the expected row gets the run-name literal, and the three callers pass `${name}-run`. Nothing else in the test changes. The old expected row was: [['action.refused', { code: 'not-holder' }]] DEFERRED.md gets a closing line on the entry naming row 269. --- docs/plans/DEFERRED.md | 2 ++ packages/bus/tests/sessions.test.mjs | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/plans/DEFERRED.md b/docs/plans/DEFERRED.md index f990eb3a9..ec5961d73 100644 --- a/docs/plans/DEFERRED.md +++ b/docs/plans/DEFERRED.md @@ -478,6 +478,8 @@ at every gate. Started 2026-09-12 during the control board MVP. not that the event's `actor_run` is the refused run. Binds row 269 (264b, #1774), or the next row that changes `sessions.test.mjs`: pin `actor_run` in `refusedOnce`. (2026-10-22) + Closed by row 269 (264b, #1774): `refusedOnce` selects `actor_run` and + expects the refused run's name (mos-1292). (2026-10-22) - **editor-provenance skips its rebuild check on esbuild 0.28.1.** (Duckworth N2 on the row 264a manifest round, duckworth-0146.) The webui test diff --git a/packages/bus/tests/sessions.test.mjs b/packages/bus/tests/sessions.test.mjs index 7ed0bdfa4..a3a5c56b6 100644 --- a/packages/bus/tests/sessions.test.mjs +++ b/packages/bus/tests/sessions.test.mjs @@ -199,21 +199,21 @@ test('T2 sage-2257: a released or revoked run\'s retired generation refuses its // Each refusal leaves its one action.refused event (request()'s catch, #refused); nothing else is // written: no approval, delivery, read or claim state (mos-1277). const lastSeq = () => store.get('SELECT max(seq) AS s FROM events').s; - const refusedOnce = (fn, label) => { + const refusedOnce = (fn, label, run) => { const from = lastSeq(); assert.throws(fn, { code: 'not-holder' }, label); - const added = store.all('SELECT kind, body FROM events WHERE seq > ? ORDER BY seq', from); + const added = store.all('SELECT kind, actor_run, body FROM events WHERE seq > ? ORDER BY seq', from); assert.deepEqual( - added.map((e) => [e.kind, JSON.parse(e.body)]), - [['action.refused', { code: 'not-holder' }]], + added.map((e) => [e.kind, e.actor_run, JSON.parse(e.body)]), + [['action.refused', run, { code: 'not-holder' }]], label, ); }; const refused = (name, { d, taken }) => { const { events, ...before } = counts(); - refusedOnce(() => call(name, 'decision.withdraw', { id: d.id }), 'approval'); - refusedOnce(() => call(name, 'message.receive'), 'delivery'); - refusedOnce(() => call(name, 'message.read', { id: taken.id }), 'read'); + refusedOnce(() => call(name, 'decision.withdraw', { id: d.id }), 'approval', `${name}-run`); + refusedOnce(() => call(name, 'message.receive'), 'delivery', `${name}-run`); + refusedOnce(() => call(name, 'message.read', { id: taken.id }), 'read', `${name}-run`); const { events: after, ...rest } = counts(); assert.deepEqual(rest, before); assert.equal(after, events + 3);