Compare commits

...
Author SHA1 Message Date
jason.woltje aca16404cf queue: revs 3195-3216. Rows 278, 281 and 264a reviews, notes and done moves (sage, gizmoduck, megavolt, gander, webby, dewey, duckworth); row 264 round 1 request posted as jarvis (sage-2693, #1769) 2026-10-22 09:25:48 -05:00
jason.woltje f7e4ec3df5 row 264a (#1769): BUILD.md records the r13 gate on 2cc34aef8 (phases 1-3 green, M2 thrown at the trigger) and the r13p4 rerun at 84f53540d (M1-M4 killed on assertions, M2's four edits and kill rule), and the limits row gets the measured probe time; doc only (mos-1280 item 1, sage-2701) 2026-10-22 09:23:39 -05:00
jason.woltje b789188504 docs: row 264a landing sweep. BUILD-LOG gets Rocko's V502 rerun line and Sage's V502, rows 278/281 and row 264a landing lines; SESSIONS gets Dewey's, Rocko's and Sage's lines; DEFERRED moves the fire-keeps-grants gap to Done (row 281) and opens row 281 N1/N2 and row 264a N1 (actor_run, binds row 269) and N2 (esbuild skip) (sage-2695, #1769) 2026-10-22 09:22:05 -05:00
jason.woltje 84f53540dd row 264a r13 (#1769): BUILD.md writes M2's four edits before phase 4 reruns: the receive filter, delivery_same_session dropped from 3k-3l.sql and schema.sql, and store.mjs's SCHEMA_SHA256 set to the mutated schema; a kill counts only as a receive-test assertion; doc only (mos-1279, sage-2688, sage-2690, duckworth-0143, duckworth-0144) 2026-10-22 09:08:25 -05:00
jason.woltje 2cc34aef87 row 264a r13 (#1769): threads.test :341 takes the 3l trigger's text, 'only to its session's holder' (delivery_same_session, 3k-3l.sql:153); BUILD.md raises the stack-release limit to 1800 s from the survey's 575 s and records the r10 and r11 reds and the r12 survey with M1 in Runs; test only (mos-1278, sage-2682) 2026-10-22 08:36:56 -05:00
jason.woltje 93f4af12bc row 264a r12 (#1769): sessions.test T2's refused() keeps every table but events equal and pins one action.refused {code: not-holder} event per refused call in call order; the old every-table check could never pass since request()'s catch (broker.mjs:4242) writes the refusal through #refused; BUILD.md records Mos's reading of sage-2257; test only (mos-1277, sage-2676) 2026-10-22 08:21:41 -05:00
jason.woltje 75f049ed23 row 264a r11 (#1769): later3l in account-, gitea- and grant-migration names threads_id_not_session, the 3l trigger on threads (3k-3l.sql:104) the sqlite_master compares missed; test only (mos-1276 option A, sage-2672) 2026-10-22 08:14:15 -05:00
11 changed files with 883 additions and 49 deletions
+8
View File
@@ -5303,3 +5303,11 @@ Before: managed project/thread verbs had no Console conversation area. After: fi
### 2026-10-22 | Gander | row278 gate run3
Fresh gate on3e4c77ac6 under sage-2648: bus793/0, WebUI345/0/1 (esbuild version skip), all ten shell files425/0, touched files15/0, M1-M6 killed6/6. No timeout; sweep0 run-created leftovers. Runs1/2 void. Seven-path manifest8fa859a0 goes to Webby for final review. No landing or live change.
2026-10-22 11:29:09 UTC | Rocko | V502 carry/rerun on980cec88c: source407c8d7be and packet04a86cf33 match approved8e3c6a79b/9bf4683c6 patch-ids, no conflicts. Dewey0834 carry conditioned on rerun, satisfied under sage2616: stop-run13,processingHTTP6,bustasks9 allgreen (Node28/28),Python4/4,0skips/timeouts. Manifest5758d699,source5/5restored,cwdsweep[]. Doc rerun packet6af85df4b explicitly pushed to rocko/vikunja502-980c-20261022; no live action.
2026-10-22 11:30:17 UTC | Sage | Vikunja 502 (row 191 follow-up, no queue row) LANDED 6af85df4b, a fast-forward from 980cec88c. Before: the processing failure diagnostics and cleanup in stop-run, processing HTTP and bus tasks tests were Dewey-approved on the pre-194 base only (8e3c6a79b/9bf4683c6). After: Rocko's picks 407c8d7be/04a86cf33 carry the same patch-ids (37135ebe/0dbcda54), plus a doc-only rerun record 6af85df4b. The rerun on the new base was green: stop-run 13/13, processing HTTP 6/6, bus tasks 9/9, Python 4/4, 0 skips. Dewey carried the approve (dewey-0836). mosaic-task.mjs is unchanged, so N7 (runs suite) didn't trigger. Overlap with in-review rows 13 and 257 was clean. LIVE is still 86f95bb27.
2026-10-22 13:10 UTC | Sage | Rows 278 and 281 LANDED. Before: refactor at 6af85df4b (V502). Row 278 (#1783, Gander, Webby): the Console Agents view shows thread claims in their own section. It landed as 385a7194c at 12:39Z, ff, 9 commits, manifest 8fa859a0. Run 3 was green: bus 793, webui 345/0/1, ten shells 425/0 under the 3x limits (mos-1275), M1-M6 killed. Runs 1 and 2 were void, on fixture fixes 964b6b184 (placed by Sage) and 9696d1fcb (ruled by Mos, mos-1275). Webby approved (c30588, rev 3200). Done rev 3202, #1783 closed c30589. Row 281 (#1786, Megavolt, Dewey): a fire or a delete revokes the instance's host and Gitea grants. It landed as e479521d3 at 13:06Z, ff, 17 commits, manifest b73d4c81. Slot on 7979fb41e: bus 819, business 231, cli 837, dewey-bus 76 with the Docker gitea-grant test, shells green, M1-M22 killed. The M1 hang was fixed at its cause in b4a (mos-1273). Dewey approved (c30614, rev 3207). Done rev 3209, #1786 closed c30621. Skips on both: test-task's row 244 live-provider pair and test-queue's canonical-root check, plus webui's esbuild rebuild test on 278. After: refactor at e479521d3. DEFERRED moves the grant gap to Done and opens Dewey's N1/N2 text gaps. LIVE is still 86f95bb27.
2026-10-22 14:18:23 UTC | Sage | Row 264a LANDED (#1769, Gizmoduck, Duckworth): sessions per thread, schema 3k-3l. Before: refactor at e479521d3 (row 281). It landed as 84f53540d, ff, 21 commits, manifest 257408e9 (Duckworth approve rev 3214, comment 30640). Gate r13 on 2cc34aef8: 20 touched files, bus 827, cli 837, webui 345/1 named skip, ten shells under 3x limits, mutants M1-M4 killed on assertions. Corrections on the way: the kit stopped on first red, so four reds surfaced one at a time. r10 later3l missed a trigger (mos-1276). T2 had failed since r2 because refusals log action.refused (mos-1277, my sage-2257 wording). threads.test:341 kept the old trigger text (mos-1278). M2 was caught by the store trigger before any assertion, so it now drops the trigger too (mos-1279, four files with the SCHEMA_SHA256 pin). Deferred: actor_run pin binds row 269, esbuild skip to a later gate, session-scoped user reply binds row 272. No live change; LIVE is still 86f95bb27.
+107 -4
View File
@@ -201,11 +201,27 @@ Each runs on a copy of the candidate tree with one edit, and the named test must
run's fence entirely, so the kill shows the refusal is tested, not that generations add a check.
A mutant that puts back `h.holder_run !== s.run` survives by equivalence. That isn't a coverage
gap.
- M2. In `message.receive`, drop the `mt.session=?` filter (the session clause and its argument).
Killed by sessions.test T1, where a1 would take the second session's message.
- M2 (mos-1279, sage-2688, sage-2690). Four edits, and the restore sha check covers all four files:
1. broker.mjs:5251, in `message.receive`: drop the `mt.session=?` filter (the session clause and
its argument).
2. 3k-3l.sql: drop the `delivery_same_session` trigger.
3. schema.sql: drop the same trigger.
4. store.mjs:16: set `SCHEMA_SHA256` to the sha256 of the mutated schema.sql, with the replace
sessions.test:432 uses. store.mjs:94 checks schema.sql against it at import (duckworth-0144).
`LEGACY_SHA256` stays. The chain check at :117 holds because both SQL files drop the trigger.
Without edits 2-4, the trigger refuses #delivery's INSERT first. request() then returns
storage-refused before any assertion runs. That happened at r13 (duckworth-0143).
A kill counts only as an assertion in a test that exercises receive: sessions.test T1 :89, T7 :422,
or another receive assertion the log names. A failure only at the trigger's own pin (:164-170)
doesn't count, and neither does a thrown error. The killing test is expected to be T1, where a1
would take the second session's message.
- M3. In 3k-3l.sql, count every claim row for `generation` instead of `op='claim'` rows only.
Killed by sessions.test T7, generations 1, 1, 1, 2, 2.
Phase 4 rerun on r13 (mos-1279, sage-2688). The r13 gate's phases 1-3 carry. M1-M4 rerun whole on
2cc34aef8 plus this note, each under `timeout -k 10 300` (Run limits). Any survivor, throw or
non-receive kill goes to Mos unplaced.
### Dry run
Before writing any node test, I ran 3j-3k.sql in an in-memory Python sqlite3 on a 3j fixture
@@ -417,6 +433,28 @@ range-diff gives all 16 `=`. The r9 run never started (sage-2665), so no result
the table used. 3x is 1773 s, so the cli limit goes from 1650 s to 1800 s. Its other times (bus 23 s,
each scripts/test-*.sh at most 36 s) are under the table's, and those limits stand.
### Correction: the r11 red, T2 (mos-1277, sage-2676)
The r11 gate (75f049ed2, ffc49615, CLEAR sage-2674) went red in its first phase at sessions.test T2
"a released or revoked run's retired generation", :204: the events table had 10 rows before the
three refused calls and 13 after. Every other table's count was equal. request()'s catch
(broker.mjs:4242) sends each refusal through `#refused` (:4081-:4096), which writes one
`action.refused` event with body `{code}`. r2's base dcd8d4dda has the same catch, so the
assertion that every table's row count stays the same (round 2, item 1 above) could never pass.
Sage reproduced it at 72fc5a330, ed6773f72 and 75f049ed2, and the three rows are
`action.refused {"code":"not-holder"}`. Mos ruled it a test defect, not a product fault.
Mos's reading of sage-2257: "writes nothing" means a retired generation's approval, delivery and
read write no approval, delivery, read or claim state. The refusal trail stays. Commit 19 (test
only) makes `refused()` say that, for both calls (released and revoked):
- every table's row count stays equal except events;
- each refused call adds exactly one event, kind `action.refused` with body `{"code":"not-holder"}`,
checked after each call in call order (withdraw, receive, read), so events grows by three.
Before the next gate, one survey pass runs the touched files the r10 and r11 runs never reached
(sage-2676 step 3), with M1 against the fixed T2.
### Run limits (sage-2634, sage-2637, sage-2647, mos-1275)
Every run in run-264 goes through `timeout -k 10 LIMIT`, so a hang stops the run instead of holding
@@ -429,13 +467,13 @@ red, and goes to Sage first (sage-2637). A timeout in the shell phase goes to Mo
| Run | Longest recorded | Where | LIMIT |
|---|---|---|---|
| stack-release.test alone | 505 s | row 234 r3 singles with mutants, 2026-10-21 (plain r3: 482 s) | 1600 s |
| stack-release.test alone | 575 s | the r12 survey, 2026-10-22 (row 234 r3 singles with mutants: 505 s; plain r3: 482 s); 3 x 575 = 1725 (mos-1275 item 3) | 1800 s |
| each other touched file alone | 15 s (thread-launch.test); end-launch, gitea-migration, message-filter, sessions, thread-claims, thread-cli and chat have none | rows 234, 235, 210 logs | 300 s |
| bus suite | 23 s | row 235 run 1b; row 278 run 3: 22.5 s | 900 s |
| cli suite | 591 s | row 281's gate, 2026-10-22 (row 235 run 1: 535 s; Megavolt row 199: 472 s) | 1800 s |
| webui suite | 57 s | row 278 run 3 (row 66 r2: about 60 s) | 600 s |
| each scripts/test-*.sh | 42 s (test-foundation); task 36.8, queue 23.4, land-work 12.6, release 12.2, discord 8.8, conductor 8.1, config 3.2, extension-package 3.0, auth 1.9 | the longest of row 268's gate (2026-10-22 04:40Z), row 196's receipts and row 278 run 3 | 900 s |
| mutant probes M1-M4 (sessions.test, thread-claims.test) | none recorded | | 300 s |
| mutant probes M1-M4 (sessions.test, thread-claims.test) | 1 s wall each (longest `ℹ duration_ms` 512, M3) | the r13p4 rerun, 2026-10-22 14:08:43Z to 14:08:45Z | 300 s |
## Runs
@@ -443,3 +481,68 @@ red, and goes to Sage first (sage-2637). A timeout in the shell phase goes to Mo
digest eb7c1ab3 printed and matched. RED on the first file, account-migration.test 1 pass 2 fail
(Correction above); the run stopped there as ruled, with no retry. The sweep found 0 node
processes in the worktree. Slot returned.
- r10 54f65f9ab on e479521d3, Sage's CLEAR sage-2669, 2026-10-22 13:11Z. RED on the first file,
account-migration.test :106: later3l missed the 3l trigger threads_id_not_session (3k-3l.sql:104).
Mos ruled option A (mos-1276): commit 18 names it in account-, gitea- and grant-migration. On r11
all 8 *-migration files ran whole, 25/25, 0 skipped (2026-10-22 13:14:25Z).
- r11 75f049ed2 on e479521d3, manifest ffc49615, Sage's CLEAR sage-2674, 2026-10-22 13:16:37Z.
Phase 1 was green for account-migration 3/3, chief-of-staff 42/42, comment-migration 5/5,
end-launch 7/7, gitea-migration 5/5, grant-migration 6/6, message-filter 6/6, name-migration 1/1
and schema 1/1. Then RED at sessions.test T2 :204 (Correction: the r11 red, above), and the run
stopped. 0 node processes left. Mos ruled a test defect (mos-1277): commit 19.
- r12 93f4af12b on e479521d3, manifest 16603087, survey pass (sage-2676 step 3), Sage's CLEAR
sage-2678, 2026-10-22 13:24:09Z to 13:34:07Z, 598 s. Each file whole under `timeout -k 10`, with
no stop on red and no edits, all 0 skipped and 0 todo:
sessions 7/7, spec-migration 1/1, tester-writes 8/8, thread-claims 6/6, thread-migration 3/3,
threads 16/17 RED, usage-migration 1/1, thread-cli 11/11, thread-launch 11/11, chat 23/23,
stack-release 218/218 in 575 s. M1 against the fixed T2: rc=1, killed on an assertion, file
restored, sessions 6/7 with T2 sage-2257 the only failure ("Missing expected exception: approval"
at :204). Log gizmo-264-out/r12-survey/probes/M1.log. Mos accepted M1 killed by T2 alone at r12
(mos-1278 item 4). The threads.test red: :330 expected `/only to its thread's holder/` (:341,
from row 121, 2c16d6b93) and got the 3l trigger's "only to its session's holder". Mos ruled
option A (mos-1278): delivery_same_thread in the base (schema.sql:300-306 at e479521d3) and
delivery_same_session (3k-3l.sql:147-153) share the WHEN, the ops and the holder check, and
differ only in taking the latest claim per session and in the text, so :330 keeps its strength.
Commit 20 changes :341 to `/only to its session's holder/` and nothing else in that file.
- r13 gate, 2cc34aef8 on e479521d3, manifest 65e04d27, Sage's CLEAR sage-2684. Start
2026-10-22 13:39:53Z, busy count 0, HEAD and digest printed and matched, blobs checked with
`sha256sum -c`. Every count below has 0 fail, 0 cancelled and 0 todo.
- Phase 1, the 20 touched files whole, one at a time, all 0 skipped, wall 600 s: bus
account-migration 3/3, chief-of-staff 42/42, comment-migration 5/5, end-launch 7/7,
gitea-migration 5/5, grant-migration 6/6, message-filter 6/6, name-migration 1/1, schema 1/1,
sessions 7/7, spec-migration 1/1, tester-writes 8/8, thread-claims 6/6, thread-migration 3/3,
threads 17/17, usage-migration 1/1; cli stack-release 218/218, thread-cli 11/11,
thread-launch 11/11; webui chat 23/23.
- Phase 2, suites whole: bus 827/827 (23 s), cli 837/837 (593 s), webui 345 pass of 346 with 1
skipped (55 s). The skip is the esbuild 0.28.1 editor rebuild (Duckworth named it in
duckworth-0146; DEFERRED row 264a N2).
- Phase 3, the 10 scripts/test-*.sh, all rc=0: auth 15, conductor 17, config 31, discord 81,
extension-package 18, foundation 44 (36 s), land-work 86, queue 156 node tests and 28 suite
checks, release 14, task 91. The worktree was clean after.
- Phase 4: M1 killed by T2 at sessions.test:204 (6/7). M2 then failed with no assertion: T1
(:89) and T7 (:422) threw `storage-refused` from #refused (broker.mjs:4082) through request()'s
catch (:4242), because the delivery_same_session trigger refused #delivery's INSERT. The run
stopped there at 14:02:47Z, total wall 1374 s, and M3 and M4 did not run. 0 node processes
left. Mos ruled option B (mos-1279): phases 1-3 carry and phase 4 reruns with M2's four edits.
- Logs: gizmo-264-out/r13-run.out, with the per-file, suite and probe logs under
gizmo-264-out/r13/single, r13/suite and r13/probes.
- r13p4, phase 4 rerun under mos-1279 at HEAD 84f53540d (2cc34aef8 plus commit 21, the M2 note
in this file), Sage's CLEAR sage-2688 with the fourth edit confirmed in sage-2690. Start
2026-10-22 14:08:43Z, busy count 0. `git diff --name-only 2cc34aef8..HEAD` was this file only,
and the non-BUILD.md blobs matched manifest 65e04d27. Kit gizmo-264-out/probes-264-r13p4.py
(`--check ok`), each probe under `timeout -k 10 300`, each file restored and its sha checked.
End 14:08:45Z, failures 0, 0 node processes left.
- M1, the #agent generation fence set to `false`: killed, sessions 6/7, T2 sage-2257 at
sessions.test:204 (`assert.throws(fn, { code: 'not-holder' }, label)`).
- M2, four edits: the `mt.session=?` clause and its argument dropped from message.receive
(broker.mjs:5251), delivery_same_session dropped from 3k-3l.sql and from schema.sql, and
store.mjs:16 SCHEMA_SHA256 set to the sha256 of the mutated schema.sql. Killed, sessions 4/7,
by T1 at sessions.test:89 (a1's receive got the second session's message). T7 also failed on
its receive assertion at :422. T2 failed at :168, the trigger's own pin, which doesn't count as
a kill under mos-1279. The kill rule: only an assertion in a test that exercises receive
counts, never a thrown error.
- M3, generation counted over every claim row in 3k-3l.sql: killed, sessions 6/7, T7 at
sessions.test:390 (the thread_claims generations).
- M4, thread.claims back to the latest row per thread: killed, thread-claims 5/6, T6 at
thread-claims.test:133 (two held sessions list as two rows).
- Logs: gizmo-264-out/r13p4-run.out and gizmo-264-out/r13p4/probes/M1.log to M4.log.
+6
View File
@@ -1519,3 +1519,9 @@ are never rewritten or removed; corrections are new entries.
2026-10-22 10:30:51 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 274 landing, row 281 d6 and 264a r5 plans | 274 landed 4c485c63b (ff, #1779 closed c30491, P19 414 c646); review request posted for Morgana (no token) c30488; 281 d6 approved by Dewey, code started; 264a r5 c4c75b6b4/5cb234285 run plan accepted; N7 DEFERRED (runs suite gates mosaic-task.mjs) committed
2026-10-22 10:59:30 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 256 #1761 creative delete landing | 256 landed f12441d4f (ff on 0165be266, 4 Honker commits); Webby APPROVE c30519 posted as jarvis for Webby (no token), rev 3185; request c30518; note 3186, done 3187; #1761 closed c30520; P19 416 c649; 277 rebases onto this landing next (sage-2594)
2026-10-22 11:21:00 UTC | Sage (Claude Opus 5.5, 1ef1e4f8) | row 277 #1782 owner thread claims landing | 277 landed 62f53b1e0 (ff on 46dedf925, 7 Morgana commits); Duckworth APPROVE c30539 posted as jarvis, rev 3192; request c30538; note 3193, done 3194; #1782 closed c30540; P19 506 c652; Honker 256 and Megavolt 236 BUILD.md notes picked; DEFERRED M8 resolve pin
2026-10-22T11:25Z | Dewey (Opus 5.5, 84fb346c) | Vikunja 502 rebase carry onto 980cec88c (Rocko 407c8d7be/04a86cf33) | APPROVE 9bf4683c6 carried: range-diff 1:= 2:=, patch-ids 37135ebe/0dbcda54; conditional on green touched-file and Python reruns on the new base (f5611c937 drift under stop-run); dewey-0834/0835
2026-10-22 11:29:09 UTC | Rocko (Codex gpt-6.1-sol, d99326cc) | Vikunja 502 on 980cec88c | clean picks407c8d7be/04a86cf33, patch-ids match; whole Node28/28,Python4/4,no skips/timeouts,sweepclear; rerun packet6af85df4b pushed explicitly to rocko/vikunja502-980c-20261022; Sage lands.
2026-10-22T13:06Z | Dewey (Opus 5.5, 84fb346c) | row 281 (#1786) manifest round 1 on megavolt/row281-e e479521d3 (manifest b73d4c81, 7 paths, on 385a7194c) | APPROVE c30614, rev 3207; N1 hosts.remove/open-decision hint and N2 fire-tool text non-blocking, DEFERRED via Sage
2026-10-22 11:32 UTC | Sage (Opus 5.5, 1ef1e4f8) | Vikunja 502 landing; 281 and 264a slot reds placed | V502 LANDED 6af85df4b (ff from 980cec88c, Dewey carry dewey-0836). Row 281 c174f37ac and 264a r7 a23afbf95 each went red on first-run test defects. 281 b3 is test-only (T6b ruling accepted by Dewey 0837). 264a r8 pins the 3l seq-0 rows. Megavolt reruns 281 on 6af85df4b.
2026-10-22 13:10 UTC | Sage (Opus 5.5, 1ef1e4f8) | Rows 278 and 281 landings; slot order 281 then 264a r10 then 253 | 278 LANDED 385a7194c (Webby c30588), 281 LANDED e479521d3 (Dewey c30614). DEFERRED: grant gap closed, N1/N2 open. 264a rebasing to r10 on e479521d3; 253 waits on 264a.
2026-10-22 14:22 UTC | Sage (Opus 5.5, 1ef1e4f8) | Row 264a landing; doc sweep | 264a LANDED 84f53540d (Duckworth c30640, #1769 closed c30646, P19 463 c669) after four slot reds ruled in mos-1276 to mos-1279. Doc sweep: V502, 278/281 and 264a BUILD-LOG lines, DEFERRED 281 N1/N2 and 264a N1/N2. 253 rebases onto the landing next.
+36 -11
View File
@@ -431,17 +431,6 @@ at every gate. Started 2026-09-12 during the control board MVP.
comes near 64 runs. The follow-up row either raises the cap or splits
the done. Its test: a fire's done over the cap refuses, and the runs it
left alive still get the alive flag. (2026-10-22)
- **A fired or deleted instance keeps its grants.** (Dewey on the row 236
rebase look, dewey-0815; Mos mos-1271; Sage sage-2558.) Row 194's
`instance.fire` and row 256's delete revoke only the roles entry's
credential services through `revoke()` in `runtime.mjs`. The agent's
host grants (row 235) and its Gitea user and token (row 236) stay live
until a human runs `mosaic hosts revoke` or `mosaic grants revoke`. The
Console has no revoke route and doesn't say a grant is left. Row 281
(#1786) closes it: a fire or a delete revokes every host and Gitea grant
the instance holds, fail closed, with a test for each kind. It lands
before the .53 Case 1 install hires an instance with a grant.
(2026-10-22)
- **The runs suite doesn't gate a change to `scripts/mosaic-task.mjs`.**
(Dewey N7 on row 191, repeated on the Vikunja 502 review.)
@@ -469,6 +458,35 @@ at every gate. Started 2026-09-12 during the control board MVP.
any row that lets a user add sessions: make the check session-scoped and
test it with two sessions. (2026-10-22)
- **Row 281's refusal texts point the wrong way.** (Dewey N1 and N2 on
the row 281 manifest round, dewey-0842/0843 and dewey-0846; Sage
sage-2653.) N1: when a host decision is still open and the host is
removed, step G's fire or delete job refuses `host-unknown`, and the
inbox hint names a verb that can't help. The way out is to decline or
withdraw the decision (`packages/bus/src/broker.mjs`, the closed check
near :1684 and `decision.withdraw` near :5015). T14 now pins that path.
N2: the chief's fire tool text in `packages/harness/src/tools.mjs`
(near :186) doesn't say the fire's job can come back for an answer.
Neither changes behaviour. Binds the next row that changes the step G
hint text in `broker.mjs` or the fire tool text in `tools.mjs`: fix
both wording gaps and pin the hint in a test. (2026-10-22)
- **Row 264a's refusal check in sessions.test doesn't pin the actor.**
(Duckworth N1 on the row 264a r12 delta, duckworth-0138; Sage sage-2695.)
`refusedOnce` in `packages/bus/tests/sessions.test.mjs` checks that each
refused call adds one `action.refused` event with code `not-holder`, but
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)
- **editor-provenance skips its rebuild check on esbuild 0.28.1.** (Duckworth
N2 on the row 264a manifest round, duckworth-0146.) The webui test
"rebuilding from the source gives the same bytes" needs esbuild 0.28.2,
the checkout has 0.28.1, and the gate logs a skip (webui.log:99). The file
is at base and was not in 264a's manifest. Binds the next gate that
touches the webui build: install the pinned esbuild in the gate checkout
so the check runs, or record why it can't. (2026-10-22)
## Queue
Moved to `docs/plans/QUEUE.md` on 2026-09-13. This file holds only gaps.
@@ -540,3 +558,10 @@ Moved to `docs/plans/QUEUE.md` on 2026-09-13. This file holds only gaps.
`packages/cli/tests/gate-lane-auth.test.mjs` proves no gate step mounts
the host default. The real-model cases this moved off the gate are open
above.
- A fired or deleted instance kept its grants (2026-10-22, Dewey on the
row 236 rebase look, mos-1271): closed by row 281 (#1786), landing
e479521d3. A fire or a delete now runs a step G job that revokes every
host and Gitea grant the instance holds, fail closed, and tells the
human in the inbox when it can't. Megavolt built it; Dewey approved the
design (d6) and the manifest (c30614). The text gaps it left are open
above.
+4 -4
View File
@@ -33,7 +33,7 @@ Gaps found while working go to `docs/plans/DEFERRED.md`, not here.
<!-- mosaic-queue:begin -->
Generated from `docs/plans/queue.json` revision 3194 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`.
Generated from `docs/plans/queue.json` revision 3216 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`.
| # | Piece | Owner | Issues | State | After | Gate | Brief | Note |
|---|---|---|---|---|---|---|---|---|
@@ -300,7 +300,7 @@ Generated from `docs/plans/queue.json` revision 3194 by `queue render`. Do not e
| 261 | Email E05: Graph source module against a test-local registry (post-v1) | unassigned | #1766 | queued | 259 done, 260 done | Reviewer approves the manifest; the row's named tests whole plus the mail suite and touched suites green on Sage's slot; reviewer-named mutants killed (post-v1, MVP keeps slot priority) (sage) | `docs/plans/2026-10-21_post-v1-row-briefs.md` § Brief: E05 Graph source module against a test-local registry | — |
| 262 | Email E06: IMAP source module (post-v1) | unassigned | #1767 | queued | 261 done | Reviewer approves the manifest; the row's named tests whole plus the mail suite and touched suites green on Sage's slot; reviewer-named mutants killed (post-v1, MVP keeps slot priority) (sage) | `docs/plans/2026-10-21_post-v1-row-briefs.md` § Brief: E06 IMAP source module | — |
| 263 | Email E07: address and rule evaluator (post-v1) | unassigned | #1768 | queued | 258 done, 259 done, 260 done | Reviewer approves the manifest; the row's named tests whole plus the mail suite and touched suites green on Sage's slot; reviewer-named mutants killed (post-v1, MVP keeps slot priority) (sage) | `docs/plans/2026-10-21_post-v1-row-briefs.md` § Brief: E07 address and rule evaluator | — |
| 264 | T1 item 7: independent sessions, compaction counts and clear context | gizmoduck; reviewers duckworth | #1769 | in-progress | — | The named reviewer approves the manifest. The design's T1-T7 acceptance tests run whole plus every touched suite on Sage's slot; T3 waits on Vikunja 466 (N2, Claude's compaction count format and the managed dataRoot reader). The design's section 6 mutants are killed. (sage) | `docs/plans/2026-10-21_t1-sessions.md` § T1 item 7: independent sessions, compaction counts and clear context | Vikunja 463 (T1 item 7, PRD 1.13 REQ-SESS-1 to 3). Acceptance test T3 depends on Vikunja 466 (N2), mos-1237. v1 under Q211, ahead of Q198 S1. Owner and reviewer to be named (Scrooge approved the design but has no agents/ seat). |
| 264 | T1 item 7: independent sessions, compaction counts and clear context | gizmoduck; reviewers duckworth | #1769 | done | — | The named reviewer approves the manifest. The design's T1-T7 acceptance tests run whole plus every touched suite on Sage's slot; T3 waits on Vikunja 466 (N2, Claude's compaction count format and the managed dataRoot reader). The design's section 6 mutants are killed. (sage) | `docs/plans/2026-10-21_t1-sessions.md` § T1 item 7: independent sessions, compaction counts and clear context | LANDED 84f53540d ff on e479521d3 14:18:23Z, 21 commits = gizmoduck/row264-r13 tip (no rewrite, range-diff identity). Manifest 257408e9 approved Duckworth rev 3214 (c30640). Gate r13 2cc34aef8: 20 files, bus 827, cli 837, webui 345/1 skip, 10 shells; M1-M4 assertion kills (mos-1279 B, M2 4 files). Overlap none (13, 257). N1 actor_run binds row 269; N2 esbuild skip later gate (sage-2695). |
| 265 | Case 2 C2-09b rooms: room.open, room.send with @tags, room.read | rocko; reviewers dewey | #1770 | queued | 219 done | Dewey approves the manifest. The brief's tests run whole plus the bus suite and every touched suite on Sage's slot. Grep for hash pins on changed files before in-review. (sage) | `docs/plans/2026-10-20_case2-rows.md` § C2-09b rooms: room.open, room.send with @tags, room.read | — |
| 266 | Case 2 C2-10c Console room view: merged timeline and @name completion | researcher; reviewers dewey | #1771 | queued | 225 done, 265 done | Dewey approves the manifest. The webui suite is green on Sage's gate, along with every touched suite. Grep for hash pins on changed files before in-review. (sage) | `docs/plans/2026-10-20_case2-rows.md` § C2-10c Console room view: merged timeline and @name completion | Haiku high subagent under decision 129. |
| 267 | Case 2 C2-15 hybrid universes: exclusions, pins and the end-to-end crossover | morgana; reviewers filbert | #1772 | queued | 216 done, 217 done, 224 done | Filbert approves the manifest. The brief's tests and the end-to-end crossover run whole plus every touched suite on Sage's slot. Grep for hash pins on changed files before in-review. (sage) | `docs/plans/2026-10-20_case2-rows.md` § C2-15 hybrid universes: exclusions, pins and the end-to-end crossover | R8 accepted (sage-2218). Webby's R8 noise note (gosalyn-0127) is for the builder. |
@@ -314,10 +314,10 @@ Generated from `docs/plans/queue.json` revision 3194 by `queue render`. Do not e
| 275 | 193b1b: viewer verbs and board refusals (also after FED R4 when filed) | morgana; reviewers duckworth | #1780 | briefed | 205 done, 274 done | Duckworth approves the manifest. The bus suite and every scripts/test-*.sh are green on Sage's gate, and the mutants are killed. (sage) | `docs/plans/2026-10-20_human-users-build.md` § Brief: 193b1b, viewer verbs and board refusals | — |
| 276 | Row 253 F5: supervise the legacy AS_USER talk and diagnostics in the case scripts | gander; reviewers duckworth | #1781 | briefed | 253 done | Duckworth approves the manifest. The touched test files run whole, every scripts/test-*.sh is green on Sage's gate, and the mutants are killed. (sage) | `docs/plans/2026-10-22_case-sudo-legacy-followup.md` § Brief: supervised legacy AS_USER calls | — |
| 277 | The owner sees a thread agent's claims: an owner or reader read lists held thread claims (10-27, mos-1262; no user thread live before it) | morgana; reviewers duckworth | #1782 | done | 205 done | Duckworth approves the manifest. The touched test files run whole, the bus and cli suites and every scripts/test-*.sh are green on Sage's gate, and the mutants are killed. (sage) | `docs/plans/2026-10-22_owner-thread-claims.md` § Brief: the owner sees thread claims | LANDED 62f53b1e0 ff from 46dedf925 (7 Morgana commits, range patch-id 7f0533520bd2). Duckworth APPROVE manifest e281aa2c (10 paths), comment 30539. Gate 11:01-11:14Z: 7 touched files 0 fail, bus 793, cli 836, harness 151, business 231, seat 167, 10 scripts rc=0, M1-M9 killed; skips named, env only (test-queue root, test-task live x2). Overlap 13/257 clean. N3 per-session claims carry to 264a r7. |
| 278 | The Console Agents view shows thread claims (follow-up to row 277; no user thread live before it) | gander; reviewers webby | #1783 | briefed | 277 done | Webby approves the manifest. The touched test files run whole, the webui and bus suites and every scripts/test-*.sh are green on Sage's gate, and the mutants are killed. (sage) | `docs/plans/2026-10-22_owner-thread-claims.md` § Brief: the Console shows thread claims | — |
| 278 | The Console Agents view shows thread claims (follow-up to row 277; no user thread live before it) | gander; reviewers webby | #1783 | done | 277 done | Webby approves the manifest. The touched test files run whole, the webui and bus suites and every scripts/test-*.sh are green on Sage's gate, and the mutants are killed. (sage) | `docs/plans/2026-10-22_owner-thread-claims.md` § Brief: the Console shows thread claims | LANDED 385a7194c ff on 6af85df4b (9 commits, manifest 8fa859a0). Run 3 green: bus 793/0/0, webui 345/0/1, ten shells 425/0 under SHELL-LIMITS 3x, M1-M6 killed. Runs 1-2 void (fixture fixes 964b6b184, 9696d1fcb per mos-1275). Skips named (Webby N1): webui esbuild 0.28.1/0.28.2 rebuild; test-queue canonical-root check; test-task two live-provider cases (row 244). Webby APPROVE c30588. #1783 closes. |
| 279 | stopRun reads a live run's status at the deadline: the deadline branch is the only time exit (191 follow-up, MVP, mos-1269; lands before 194 b16) | rocko; reviewers dewey | #1784 | done | — | Dewey approves the manifest. The processing-control package's tests and every other touched test file run whole, the business and cli suites are green on Sage's gate, and M1 is killed. (sage) | `docs/plans/2026-10-22_stoprun-deadline.md` § Brief: stopRun's deadline branch is the only time exit | LANDED ceadad993 (carry of cad927137 onto 343b6dd76: range-diff 1:= 2:=, patch-ids 6d8ae7f4/e484c297 equal, Dewey APPROVE dewey-0809 c30409 + carry). Fix: stopRun loop is for(;;), deadline branch is the only time exit. Sage gate green: business 209/0/0, cli 794/0/0, discord processing+stop 9/0/0; Rocko stop-run 13/13, processing-control 62/62, M1 killed. Overlap sweep clean (13, 257). Next: 194 b16 rebases onto it (mos-1269). |
| 280 | Bus tests: the scratch sshd proves it owns its port (194 gate follow-up, MVP, mos-1270) | rocko; reviewers duckworth | #1785 | done | — | Duckworth approves the manifest. Both files run whole, the bus suite is green on Sage's gate, the 30-run repeat has no timeout, and M1 is killed. Row 194 b17's full gate then runs on top. Any red goes to Mos (mos-1270). (sage) | `docs/plans/2026-10-22_sshd-port-race.md` § Brief: the scratch sshd's port is ours before a test uses it | Landed b0fd28b6f 07:57:30Z, ff from da5d3651d: b765f5cb8 (Duckworth approve rev 3153, manifest 27806c05) + slim packet. Sage gate bus 656/0/0, ge 41, hr 26 (c30431). Repeat 2010/2010 under cli 1588/1588, no timeout; M1/M2 killed 4/4. Full evidence d6c924764 on rocko/row280-da5d-20261022. N2-N4 carry in BUILD.md. 194 b17 rebases on b0fd28b6f. |
| 281 | A fire or a delete revokes the instance's host and Gitea grants (194/236 follow-up, MVP, mos-1271) | megavolt; reviewers dewey | #1786 | in-progress | 236 done | Dewey approves the design, then the manifest. Bus, business, cli and every touched test file run whole, plus the Docker gitea-grant test and every scripts/test-*.sh, green on Sage's gate. M1-M4 killed. Lands before .53 Case 1 hires a granted instance. Red goes to Sage, then Mos. (sage) | `docs/plans/2026-10-22_fire-revokes-grants.md` § Brief: no grant outlives its instance | — |
| 281 | A fire or a delete revokes the instance's host and Gitea grants (194/236 follow-up, MVP, mos-1271) | megavolt; reviewers dewey | #1786 | done | 236 done | Dewey approves the design, then the manifest. Bus, business, cli and every touched test file run whole, plus the Docker gitea-grant test and every scripts/test-*.sh, green on Sage's gate. M1-M4 killed. Lands before .53 Case 1 hires a granted instance. Red goes to Sage, then Mos. (sage) | `docs/plans/2026-10-22_fire-revokes-grants.md` § Brief: no grant outlives its instance | LANDED e479521d3 ff on 385a7194c (17 commits, manifest b73d4c81). Slot on 7979fb41e green: bus 819, business 231, cli 837, dewey-bus 76 with gitea-grant-docker run, shells green under 3x limits, M1-M22 killed. M1 hang fixed in b4a (mos-1273). Skips: test-task row 244 live-provider pair, test-queue canonical root. DEFERRED: N1 host-unknown hint verb, N2 fire tool text, to the follow-up row. Dewey APPROVE c30614. |
<!-- mosaic-queue:end -->
+698 -21
View File
@@ -1,7 +1,7 @@
{
"version": 1,
"canonicalRoot": "/mnt/storage/src/mosaic-stack",
"revision": 3194,
"revision": 3216,
"rows": [
{
"id": 1,
@@ -26839,7 +26839,7 @@
"closes": [
1769
],
"state": "in-progress",
"state": "done",
"previousState": null,
"required": false,
"requiredSince": null,
@@ -26854,16 +26854,70 @@
"reviewers": [
"duckworth"
],
"review": null,
"claim": {
"seat": "gizmoduck",
"op": "gizmoduck-264-claim-1"
"review": {
"rounds": [
{
"n": 1,
"op": "gizmoduck-264-review-r13b",
"by": "gizmoduck",
"at": "2026-10-22T14:11:07.284Z",
"issue": 1769,
"candidate": {
"kind": "manifest",
"digest": "257408e9e3e9e9bbc751729c2693eb3f199724374ed05db467656a95aa873c8e",
"text": "0f14a8e813a75abc8ab2a49d4574496e68a83ae3a37019c5bbfbbbc439fbe2ab agents/gizmoduck/work/queue-264/BUILD.md\nee456d3f7f5f36c499b1144f5c1a51bd3400662bd576c0a2c403a70cd49772c8 docs/plans/DEFERRED.md\n764b3d7865bfa3a0829f3c7d5553446fc61478cc8b46c0da5dd9463ea7ef1543 packages/bus/README.md\ncd68512212ce8bf8f5631138b2e63a340fa7b940088430649bb7784af7df162a packages/bus/schema.sql\na581d9e687ec2784751e293bd320885ba2ee75cbff38dd0f7f0816c3b6ccf1f1 packages/bus/src/broker.mjs\neb2822c73e527697399691ae520092277ddbd4d2a9a42a0731b3c81cc3569e58 packages/bus/src/migrations/3k-3l.sql\nca4a8eceef394dae290a5ad7bdb9f335ebbe53ba02aa3af71be7001ba2725a93 packages/bus/src/store.mjs\n4e2f46031bb2025bb7d674a7da5b663312ed827d346f354df0453d3595fa8781 packages/bus/tests/account-migration.test.mjs\necf7536dbb12765ef30897fbd0436f68d11233da7e79ff12d4cf80baf3b961fd packages/bus/tests/chief-of-staff.test.mjs\n7d8ddb1f603bda89488e521e27b68ada373efb19f23864da78613eb14baf6f6d packages/bus/tests/comment-migration.test.mjs\n45b3a93609179a2f856a9f2620acca2f0b07ab239d2d5957a792d6c6fadeb0af packages/bus/tests/end-launch.test.mjs\naba9240825a35fdcc741439d0708efa33afcf519d11cac9952c7207ad99250f0 packages/bus/tests/fixtures/schema-3k.sql\n06c33d2101278f71b315327d7be1650d97f828b0dc2aafcc28c73a57d0fe0024 packages/bus/tests/gitea-migration.test.mjs\nb7a560894b9a6eb999b80dc9b2989ac4745b568f74d0b52eec3ab0459b46ad2b packages/bus/tests/grant-migration.test.mjs\n6e41496a5d55705f484e074e2264a84f5299e04211cd1a2f384f18c5b4f6f9c5 packages/bus/tests/message-filter.test.mjs\nb1921b88ba6ee0c28b4d9652ff529abba4b7e8b12423e99cf7996c3e207ef3f5 packages/bus/tests/name-migration.test.mjs\n52e7de4bdf04f7787f70079f78017fd034abd968370059f22d859ce5a58e27a8 packages/bus/tests/schema.test.mjs\nc09cdcca750d44ae1cebd3e8970708d39edd70682b99eeb77e19258d9fa8c068 packages/bus/tests/sessions.test.mjs\nc2f9002a8ba4474fa1bafc84d8ffd67756d450cf9a1346194a871cd0d541d524 packages/bus/tests/spec-migration.test.mjs\n4fd9c541735a8e654bee84ecab0172f9b1f21c668091fe12624ce812919327e4 packages/bus/tests/tester-writes.test.mjs\n0007f55235ef25e70bf89cfb9407e07c4780b54566163183d19b1f902fc0251e packages/bus/tests/thread-claims.test.mjs\n19e4200961fd81a23f2bf7089f81b2a57165a6a81c026ef879ab756587d705dc packages/bus/tests/thread-migration.test.mjs\n90d25f35389478cd3307b2383d93dc0a2519dd88eddc3c26bd37c39161083269 packages/bus/tests/threads.test.mjs\ncdd758deb9bcbb33eb1f4138673a11b9a5fd82fdd4fd88c14197d5240fe4b780 packages/bus/tests/usage-migration.test.mjs\n43f09ab4e7d3f8178a6cab6889ce2d85c83b8151a0f0dc26325d39bbe4236dc0 packages/cli/tests/stack-release.test.mjs\ncf6c1310f32d8495b5838620760646abcff7be0d38924511e14c53528d581802 packages/cli/tests/thread-cli.test.mjs\n4d4885bc624056b559e4c5cbdd7650c4fdeedc83695c8f1884a0bfa27b00a0cf packages/cli/tests/thread-launch.test.mjs\n3e794faab71337d13a531564183b5e0fd316c666bffbe834c8e5eedf9fad4a6a packages/webui/tests/chat.test.mjs\nd03dd152cde23c895bfbd07f1df8084925ae6638854d3a99a6aca82779ad4f12 scripts/stack-release.sh\n"
},
"request": "comment",
"attempts": [
{
"op": "gizmoduck-264-review-r13b",
"by": "gizmoduck",
"at": "2026-10-22T14:11:07.284Z",
"state": "failed",
"comment": null,
"transport": {
"outcome": "failed",
"status": null,
"comment": null,
"detail": "pre-send: the credential or account check failed"
},
"resolutions": []
},
{
"op": "sage-264-review-r13b",
"by": "sage",
"at": "2026-10-22T14:12:46.925Z",
"state": "posted",
"comment": 30639,
"transport": {
"outcome": "posted",
"status": 201,
"comment": 30639,
"detail": "created"
},
"resolutions": []
}
],
"duplicateRisk": false,
"receipts": [
{
"reviewer": "duckworth",
"op": "duckworth-0146-record",
"at": "2026-10-22T14:17:52.013Z",
"verdict": "approve",
"comment": 30640,
"candidate": "257408e9e3e9e9bbc751729c2693eb3f199724374ed05db467656a95aa873c8e"
}
]
}
]
},
"note": "Vikunja 463 (T1 item 7, PRD 1.13 REQ-SESS-1 to 3). Acceptance test T3 depends on Vikunja 466 (N2), mos-1237. v1 under Q211, ahead of Q198 S1. Owner and reviewer to be named (Scrooge approved the design but has no agents/ seat).",
"claim": null,
"note": "LANDED 84f53540d ff on e479521d3 14:18:23Z, 21 commits = gizmoduck/row264-r13 tip (no rewrite, range-diff identity). Manifest 257408e9 approved Duckworth rev 3214 (c30640). Gate r13 2cc34aef8: 20 files, bus 827, cli 837, webui 345/1 skip, 10 shells; M1-M4 assertion kills (mos-1279 B, M2 4 files). Overlap none (13, 257). N1 actor_run binds row 269; N2 esbuild skip later gate (sage-2695).",
"blockedReason": null,
"createdAt": "2026-10-21T22:42:17.481Z",
"updatedAt": "2026-10-22T00:04:18.160Z",
"updatedBy": "gizmoduck"
"updatedAt": "2026-10-22T14:19:39.888Z",
"updatedBy": "sage"
},
{
"id": 265,
@@ -27642,7 +27696,7 @@
"closes": [
1783
],
"state": "briefed",
"state": "done",
"previousState": null,
"required": false,
"requiredSince": null,
@@ -27662,12 +27716,69 @@
"reviewers": [
"webby"
],
"review": null,
"review": {
"rounds": [
{
"n": 1,
"op": "gander-278-inreview-r1",
"by": "gander",
"at": "2026-10-22T12:34:26.185Z",
"issue": 1783,
"candidate": {
"kind": "manifest",
"digest": "8fa859a0c617defe42e50028b057a603c6634f6db47ac2e3f7c01dfb290228a3",
"text": "426007525d15ad0fa11ba02d6cc5d8436c7ff3fa38beb01e9a651c202169d6a5 packages/webui/README.md\n7ac85787f614aabce4b8eccef01fcdbf1018003e806c5de97d40f47c4041710a packages/webui/src/cli.mjs\nc0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0 packages/webui/src/public/bus.js\naa25b50543b5bc632ac984e85b0d8b43b1c9af2d617bfc7c19351d07310f396d packages/webui/src/serve.mjs\nfd7ad903b682f8f6ceee2d75111b01aa97f50233cd875dd5553e3e83de33ce32 packages/webui/tests/shell.test.mjs\n3b2770db03a2fcce87512b600f386a51f822b251ccb992a46208ee484ee99f7e packages/webui/tests/thread-claims-browser.test.mjs\n48117fe02ef9b76ad12f15dfb0d25e77d187c088c0bff572f33e18418e566913 packages/webui/tests/thread-claims.test.mjs\n"
},
"request": "comment",
"attempts": [
{
"op": "gander-278-inreview-r1",
"by": "gander",
"at": "2026-10-22T12:34:26.185Z",
"state": "failed",
"comment": null,
"transport": {
"outcome": "failed",
"status": null,
"comment": null,
"detail": "pre-send: the credential or account check failed"
},
"resolutions": []
},
{
"op": "sage-278-review-r1b",
"by": "sage",
"at": "2026-10-22T12:37:23.447Z",
"state": "posted",
"comment": 30587,
"transport": {
"outcome": "posted",
"status": 201,
"comment": 30587,
"detail": "created"
},
"resolutions": []
}
],
"duplicateRisk": false,
"receipts": [
{
"reviewer": "webby",
"op": "webby-278-verdict-r1",
"at": "2026-10-22T12:38:51.557Z",
"verdict": "approve",
"comment": 30588,
"candidate": "8fa859a0c617defe42e50028b057a603c6634f6db47ac2e3f7c01dfb290228a3"
}
]
}
]
},
"claim": null,
"note": null,
"note": "LANDED 385a7194c ff on 6af85df4b (9 commits, manifest 8fa859a0). Run 3 green: bus 793/0/0, webui 345/0/1, ten shells 425/0 under SHELL-LIMITS 3x, M1-M6 killed. Runs 1-2 void (fixture fixes 964b6b184, 9696d1fcb per mos-1275). Skips named (Webby N1): webui esbuild 0.28.1/0.28.2 rebuild; test-queue canonical-root check; test-task two live-provider cases (row 244). Webby APPROVE c30588. #1783 closes.",
"blockedReason": null,
"createdAt": "2026-10-22T05:15:43.015Z",
"updatedAt": "2026-10-22T05:16:17.583Z",
"updatedAt": "2026-10-22T12:40:51.151Z",
"updatedBy": "sage"
},
{
@@ -27860,7 +27971,7 @@
"closes": [
1786
],
"state": "in-progress",
"state": "done",
"previousState": null,
"required": false,
"requiredSince": null,
@@ -27880,16 +27991,70 @@
"reviewers": [
"dewey"
],
"review": null,
"claim": {
"seat": "megavolt",
"op": "megavolt-281-claim"
"review": {
"rounds": [
{
"n": 1,
"op": "megavolt-281-inreview-r1",
"by": "megavolt",
"at": "2026-10-22T13:01:27.161Z",
"issue": 1786,
"candidate": {
"kind": "manifest",
"digest": "b73d4c81d57204c95f86acd1f901ee9cf83619707ccd414406e057866c4dcd56",
"text": "7ce8139b6ffa3077d858f0cb059f6d2b8d5c09f6a8acf867611d84830be35868 agents/megavolt/work/queue-281/BUILD.md\n5fb103dccf550a0d0568771ca3ddec47196d7f5f24775501c5aecff7599343db packages/bus/src/broker.mjs\n6fe79a481bb35c6ab5bcda487bcc346fcb812e8ed96bd62f7198ebb09e6d292a packages/bus/tests/fire-revokes-grants.test.mjs\n5f9a8b73b6df8b83db990f6c9f15935e51dcc00ddf59d10eabe0f1dfd23d718c packages/bus/tests/gitea-grant.test.mjs\n88c5193c723f9362008995b46b697b8f455574b3fc2ddc7f31f549082f941efd packages/bus/tests/grant-executor.test.mjs\ndd3d99d48d28e2a001a013bafb486385c777056ea9d29e9c5ec9e38174aa02cd packages/bus/tests/lifecycle-revoke.test.mjs\n5ce79205c4ca6e5f6e77671968ce9d8b8ebfdbdde07b31676f2d05b284acb938 packages/cli/tests/lifecycle.test.mjs\n"
},
"request": "comment",
"attempts": [
{
"op": "megavolt-281-inreview-r1",
"by": "megavolt",
"at": "2026-10-22T13:01:27.161Z",
"state": "failed",
"comment": null,
"transport": {
"outcome": "failed",
"status": null,
"comment": null,
"detail": "pre-send: the credential or account check failed"
},
"resolutions": []
},
{
"op": "sage-281-review-r1b",
"by": "sage",
"at": "2026-10-22T13:02:59.024Z",
"state": "posted",
"comment": 30613,
"transport": {
"outcome": "posted",
"status": 201,
"comment": 30613,
"detail": "created"
},
"resolutions": []
}
],
"duplicateRisk": false,
"receipts": [
{
"reviewer": "dewey",
"op": "dewey-281-verdict-r1",
"at": "2026-10-22T13:05:20.490Z",
"verdict": "approve",
"comment": 30614,
"candidate": "b73d4c81d57204c95f86acd1f901ee9cf83619707ccd414406e057866c4dcd56"
}
]
}
]
},
"note": null,
"claim": null,
"note": "LANDED e479521d3 ff on 385a7194c (17 commits, manifest b73d4c81). Slot on 7979fb41e green: bus 819, business 231, cli 837, dewey-bus 76 with gitea-grant-docker run, shells green under 3x limits, M1-M22 killed. M1 hang fixed in b4a (mos-1273). Skips: test-task row 244 live-provider pair, test-queue canonical root. DEFERRED: N1 host-unknown hint verb, N2 fire tool text, to the follow-up row. Dewey APPROVE c30614.",
"blockedReason": null,
"createdAt": "2026-10-22T09:44:24.187Z",
"updatedAt": "2026-10-22T09:51:21.600Z",
"updatedBy": "megavolt"
"updatedAt": "2026-10-22T13:07:09.587Z",
"updatedBy": "sage"
}
],
"log": [
@@ -112108,6 +112273,518 @@
"receipt": "ok sage-277-done rev 3194 row 277 in-review→done round 1"
},
"viewSha": "47105a02fc98e4b65b8f9b39fbbcfea3a7a295516e992e95c26f6e5f2d052fdb"
},
{
"rev": 3195,
"op": "gander-278-start",
"verb": "move",
"args": {
"id": 278,
"to": "in-progress",
"reason": null,
"candidate": null,
"evidence": null,
"issue": null
},
"by": "gander",
"at": "2026-10-22T12:04:51.778Z",
"semantics": 2,
"result": {
"row": 278,
"from": "briefed",
"to": "in-progress",
"round": null,
"issue": null,
"candidate": null,
"receipt": "ok gander-278-start rev 3195 row 278 briefed→in-progress"
},
"viewSha": "d3e0918fab9cd369618d3cce25053035c3593cc157ef02b3e67824577540a383"
},
{
"rev": 3196,
"op": "gander-278-inreview-r1",
"verb": "move",
"args": {
"id": 278,
"to": "in-review",
"reason": null,
"candidate": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/MANIFEST.sha256",
"evidence": null,
"issue": null
},
"by": "gander",
"at": "2026-10-22T12:34:26.185Z",
"semantics": 2,
"result": {
"row": 278,
"from": "in-progress",
"to": "in-review",
"round": 1,
"issue": 1783,
"candidate": {
"kind": "manifest",
"digest": "8fa859a0c617defe42e50028b057a603c6634f6db47ac2e3f7c01dfb290228a3",
"text": "426007525d15ad0fa11ba02d6cc5d8436c7ff3fa38beb01e9a651c202169d6a5 packages/webui/README.md\n7ac85787f614aabce4b8eccef01fcdbf1018003e806c5de97d40f47c4041710a packages/webui/src/cli.mjs\nc0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0 packages/webui/src/public/bus.js\naa25b50543b5bc632ac984e85b0d8b43b1c9af2d617bfc7c19351d07310f396d packages/webui/src/serve.mjs\nfd7ad903b682f8f6ceee2d75111b01aa97f50233cd875dd5553e3e83de33ce32 packages/webui/tests/shell.test.mjs\n3b2770db03a2fcce87512b600f386a51f822b251ccb992a46208ee484ee99f7e packages/webui/tests/thread-claims-browser.test.mjs\n48117fe02ef9b76ad12f15dfb0d25e77d187c088c0bff572f33e18418e566913 packages/webui/tests/thread-claims.test.mjs\n"
},
"receipt": "ok gander-278-inreview-r1 rev 3196 row 278 in-progress→in-review round 1 on #1783; request gander-278-inreview-r1 requesting"
},
"viewSha": "10e0b103a4099660e8e0f332214db3ffec46d7e31afce0be052efa11b29aca43"
},
{
"rev": 3197,
"op": "gander-278-inreview-r1.outcome",
"verb": "review-outcome",
"args": {
"id": 278,
"attempt": "gander-278-inreview-r1",
"outcome": "failed",
"status": null,
"comment": null,
"detail": "pre-send: the credential or account check failed"
},
"by": "gander",
"at": "2026-10-22T12:35:03.307Z",
"semantics": 2,
"result": {
"row": 278,
"round": 1,
"attempt": "gander-278-inreview-r1",
"state": "failed",
"receipt": "ok gander-278-inreview-r1.outcome rev 3197 row 278 round 1 request gander-278-inreview-r1 failed"
},
"viewSha": "807e3fdfac503cb45c13b8963b38c9131d36b5c9fdc6a071525ca0a115b2c39b"
},
{
"rev": 3198,
"op": "sage-278-review-r1b",
"verb": "review-request",
"args": {
"id": 278
},
"by": "sage",
"at": "2026-10-22T12:37:23.447Z",
"semantics": 2,
"result": {
"row": 278,
"round": 1,
"attempt": "sage-278-review-r1b",
"state": "requesting",
"receipt": "ok sage-278-review-r1b rev 3198 row 278 round 1 request sage-278-review-r1b requesting"
},
"viewSha": "6ab64156b87571dcc2e7d9fe0b7750eff8f576419ad147e6af460fd9ba9018b3"
},
{
"rev": 3199,
"op": "sage-278-review-r1b.outcome",
"verb": "review-outcome",
"args": {
"id": 278,
"attempt": "sage-278-review-r1b",
"outcome": "posted",
"status": 201,
"comment": 30587,
"detail": "created"
},
"by": "sage",
"at": "2026-10-22T12:38:00.443Z",
"semantics": 2,
"result": {
"row": 278,
"round": 1,
"attempt": "sage-278-review-r1b",
"state": "posted",
"receipt": "ok sage-278-review-r1b.outcome rev 3199 row 278 round 1 request sage-278-review-r1b posted comment 30587"
},
"viewSha": "459834d1aec5d3abd4e09095e189ef39c9696265d30c85a6ee69b1668bfe773d"
},
{
"rev": 3200,
"op": "webby-278-verdict-r1",
"verb": "review-record",
"args": {
"id": 278,
"verdict": "approve",
"comment": 30588,
"candidate": "8fa859a0c617defe42e50028b057a603c6634f6db47ac2e3f7c01dfb290228a3"
},
"by": "webby",
"at": "2026-10-22T12:38:51.557Z",
"semantics": 2,
"result": {
"row": 278,
"round": 1,
"verdict": "approve",
"receipt": "ok webby-278-verdict-r1 rev 3200 row 278 round 1 approve by webby (comment 30588)"
},
"viewSha": "7bc559a0a0ee4cd7c6fb80e79dfc96ab797460da2121ec82e784cecb57b72780"
},
{
"rev": 3201,
"op": "sage-278-landed-note",
"verb": "note",
"args": {
"id": 278,
"text": "LANDED 385a7194c ff on 6af85df4b (9 commits, manifest 8fa859a0). Run 3 green: bus 793/0/0, webui 345/0/1, ten shells 425/0 under SHELL-LIMITS 3x, M1-M6 killed. Runs 1-2 void (fixture fixes 964b6b184, 9696d1fcb per mos-1275). Skips named (Webby N1): webui esbuild 0.28.1/0.28.2 rebuild; test-queue canonical-root check; test-task two live-provider cases (row 244). Webby APPROVE c30588. #1783 closes."
},
"by": "sage",
"at": "2026-10-22T12:40:15.700Z",
"semantics": 2,
"result": {
"row": 278,
"field": "note",
"receipt": "ok sage-278-landed-note rev 3201 row 278 note"
},
"viewSha": "0c929f230fb391defb269606b2e29c1b3d49bc53723762270d49c71eedd95afb"
},
{
"rev": 3202,
"op": "sage-278-done",
"verb": "move",
"args": {
"id": 278,
"to": "done",
"reason": null,
"candidate": null,
"evidence": null,
"issue": null
},
"by": "sage",
"at": "2026-10-22T12:40:51.151Z",
"semantics": 2,
"result": {
"row": 278,
"from": "in-review",
"to": "done",
"round": 1,
"issue": null,
"candidate": null,
"receipt": "ok sage-278-done rev 3202 row 278 in-review→done round 1"
},
"viewSha": "b9a7f299fbd07afe042bec4491791dd511487e47577e2cf816ef3b00506aca98"
},
{
"rev": 3203,
"op": "megavolt-281-inreview-r1",
"verb": "move",
"args": {
"id": 281,
"to": "in-review",
"reason": null,
"candidate": "/mnt/storage/scratch/megavolt-r281/manifest-r1.txt",
"evidence": null,
"issue": null
},
"by": "megavolt",
"at": "2026-10-22T13:01:27.161Z",
"semantics": 2,
"result": {
"row": 281,
"from": "in-progress",
"to": "in-review",
"round": 1,
"issue": 1786,
"candidate": {
"kind": "manifest",
"digest": "b73d4c81d57204c95f86acd1f901ee9cf83619707ccd414406e057866c4dcd56",
"text": "7ce8139b6ffa3077d858f0cb059f6d2b8d5c09f6a8acf867611d84830be35868 agents/megavolt/work/queue-281/BUILD.md\n5fb103dccf550a0d0568771ca3ddec47196d7f5f24775501c5aecff7599343db packages/bus/src/broker.mjs\n6fe79a481bb35c6ab5bcda487bcc346fcb812e8ed96bd62f7198ebb09e6d292a packages/bus/tests/fire-revokes-grants.test.mjs\n5f9a8b73b6df8b83db990f6c9f15935e51dcc00ddf59d10eabe0f1dfd23d718c packages/bus/tests/gitea-grant.test.mjs\n88c5193c723f9362008995b46b697b8f455574b3fc2ddc7f31f549082f941efd packages/bus/tests/grant-executor.test.mjs\ndd3d99d48d28e2a001a013bafb486385c777056ea9d29e9c5ec9e38174aa02cd packages/bus/tests/lifecycle-revoke.test.mjs\n5ce79205c4ca6e5f6e77671968ce9d8b8ebfdbdde07b31676f2d05b284acb938 packages/cli/tests/lifecycle.test.mjs\n"
},
"receipt": "ok megavolt-281-inreview-r1 rev 3203 row 281 in-progress→in-review round 1 on #1786; request megavolt-281-inreview-r1 requesting"
},
"viewSha": "64bd164fc938ff48e88bbe1f73b1b2092a44b947ef319f97956425d99324c86b"
},
{
"rev": 3204,
"op": "megavolt-281-inreview-r1.outcome",
"verb": "review-outcome",
"args": {
"id": 281,
"attempt": "megavolt-281-inreview-r1",
"outcome": "failed",
"status": null,
"comment": null,
"detail": "pre-send: the credential or account check failed"
},
"by": "megavolt",
"at": "2026-10-22T13:02:03.649Z",
"semantics": 2,
"result": {
"row": 281,
"round": 1,
"attempt": "megavolt-281-inreview-r1",
"state": "failed",
"receipt": "ok megavolt-281-inreview-r1.outcome rev 3204 row 281 round 1 request megavolt-281-inreview-r1 failed"
},
"viewSha": "dffd6ed44dbe0fce968c061f6be08378dde897ddaa251c9b8dd6d2c293fb2db4"
},
{
"rev": 3205,
"op": "sage-281-review-r1b",
"verb": "review-request",
"args": {
"id": 281
},
"by": "sage",
"at": "2026-10-22T13:02:59.024Z",
"semantics": 2,
"result": {
"row": 281,
"round": 1,
"attempt": "sage-281-review-r1b",
"state": "requesting",
"receipt": "ok sage-281-review-r1b rev 3205 row 281 round 1 request sage-281-review-r1b requesting"
},
"viewSha": "b862b16cf093400a938b3506bace6fae82155c9e651734447760c73f0c20ff8e"
},
{
"rev": 3206,
"op": "sage-281-review-r1b.outcome",
"verb": "review-outcome",
"args": {
"id": 281,
"attempt": "sage-281-review-r1b",
"outcome": "posted",
"status": 201,
"comment": 30613,
"detail": "created"
},
"by": "sage",
"at": "2026-10-22T13:03:38.863Z",
"semantics": 2,
"result": {
"row": 281,
"round": 1,
"attempt": "sage-281-review-r1b",
"state": "posted",
"receipt": "ok sage-281-review-r1b.outcome rev 3206 row 281 round 1 request sage-281-review-r1b posted comment 30613"
},
"viewSha": "d4b562903728382f89434caf9e4f41d7ddbaf8daa313f6c5d174bbbab3731ca7"
},
{
"rev": 3207,
"op": "dewey-281-verdict-r1",
"verb": "review-record",
"args": {
"id": 281,
"verdict": "approve",
"comment": 30614,
"candidate": "b73d4c81d57204c95f86acd1f901ee9cf83619707ccd414406e057866c4dcd56"
},
"by": "dewey",
"at": "2026-10-22T13:05:20.490Z",
"semantics": 2,
"result": {
"row": 281,
"round": 1,
"verdict": "approve",
"receipt": "ok dewey-281-verdict-r1 rev 3207 row 281 round 1 approve by dewey (comment 30614)"
},
"viewSha": "ed7c23dfa5ee98a2502e4b6410b2527b6f357c775cb6b2afa7386f7feafb50fd"
},
{
"rev": 3208,
"op": "sage-281-landed-note",
"verb": "note",
"args": {
"id": 281,
"text": "LANDED e479521d3 ff on 385a7194c (17 commits, manifest b73d4c81). Slot on 7979fb41e green: bus 819, business 231, cli 837, dewey-bus 76 with gitea-grant-docker run, shells green under 3x limits, M1-M22 killed. M1 hang fixed in b4a (mos-1273). Skips: test-task row 244 live-provider pair, test-queue canonical root. DEFERRED: N1 host-unknown hint verb, N2 fire tool text, to the follow-up row. Dewey APPROVE c30614."
},
"by": "sage",
"at": "2026-10-22T13:06:32.779Z",
"semantics": 2,
"result": {
"row": 281,
"field": "note",
"receipt": "ok sage-281-landed-note rev 3208 row 281 note"
},
"viewSha": "e777e0997655c84a7f3d842126db35fcb0d3e5b02a57aa9358eebda281f49e76"
},
{
"rev": 3209,
"op": "sage-281-done",
"verb": "move",
"args": {
"id": 281,
"to": "done",
"reason": null,
"candidate": null,
"evidence": null,
"issue": null
},
"by": "sage",
"at": "2026-10-22T13:07:09.587Z",
"semantics": 2,
"result": {
"row": 281,
"from": "in-review",
"to": "done",
"round": 1,
"issue": null,
"candidate": null,
"receipt": "ok sage-281-done rev 3209 row 281 in-review→done round 1"
},
"viewSha": "9ac1eeb17b185f038531d58b8ba85ccca0cd9607902614d3b1bc2f5e8085c0c0"
},
{
"rev": 3210,
"op": "gizmoduck-264-review-r13b",
"verb": "move",
"args": {
"id": 264,
"to": "in-review",
"reason": null,
"candidate": "/mnt/storage/scratch/gizmo-264-out/manifest-264-r13b.txt",
"evidence": null,
"issue": null
},
"by": "gizmoduck",
"at": "2026-10-22T14:11:07.284Z",
"semantics": 2,
"result": {
"row": 264,
"from": "in-progress",
"to": "in-review",
"round": 1,
"issue": 1769,
"candidate": {
"kind": "manifest",
"digest": "257408e9e3e9e9bbc751729c2693eb3f199724374ed05db467656a95aa873c8e",
"text": "0f14a8e813a75abc8ab2a49d4574496e68a83ae3a37019c5bbfbbbc439fbe2ab agents/gizmoduck/work/queue-264/BUILD.md\nee456d3f7f5f36c499b1144f5c1a51bd3400662bd576c0a2c403a70cd49772c8 docs/plans/DEFERRED.md\n764b3d7865bfa3a0829f3c7d5553446fc61478cc8b46c0da5dd9463ea7ef1543 packages/bus/README.md\ncd68512212ce8bf8f5631138b2e63a340fa7b940088430649bb7784af7df162a packages/bus/schema.sql\na581d9e687ec2784751e293bd320885ba2ee75cbff38dd0f7f0816c3b6ccf1f1 packages/bus/src/broker.mjs\neb2822c73e527697399691ae520092277ddbd4d2a9a42a0731b3c81cc3569e58 packages/bus/src/migrations/3k-3l.sql\nca4a8eceef394dae290a5ad7bdb9f335ebbe53ba02aa3af71be7001ba2725a93 packages/bus/src/store.mjs\n4e2f46031bb2025bb7d674a7da5b663312ed827d346f354df0453d3595fa8781 packages/bus/tests/account-migration.test.mjs\necf7536dbb12765ef30897fbd0436f68d11233da7e79ff12d4cf80baf3b961fd packages/bus/tests/chief-of-staff.test.mjs\n7d8ddb1f603bda89488e521e27b68ada373efb19f23864da78613eb14baf6f6d packages/bus/tests/comment-migration.test.mjs\n45b3a93609179a2f856a9f2620acca2f0b07ab239d2d5957a792d6c6fadeb0af packages/bus/tests/end-launch.test.mjs\naba9240825a35fdcc741439d0708efa33afcf519d11cac9952c7207ad99250f0 packages/bus/tests/fixtures/schema-3k.sql\n06c33d2101278f71b315327d7be1650d97f828b0dc2aafcc28c73a57d0fe0024 packages/bus/tests/gitea-migration.test.mjs\nb7a560894b9a6eb999b80dc9b2989ac4745b568f74d0b52eec3ab0459b46ad2b packages/bus/tests/grant-migration.test.mjs\n6e41496a5d55705f484e074e2264a84f5299e04211cd1a2f384f18c5b4f6f9c5 packages/bus/tests/message-filter.test.mjs\nb1921b88ba6ee0c28b4d9652ff529abba4b7e8b12423e99cf7996c3e207ef3f5 packages/bus/tests/name-migration.test.mjs\n52e7de4bdf04f7787f70079f78017fd034abd968370059f22d859ce5a58e27a8 packages/bus/tests/schema.test.mjs\nc09cdcca750d44ae1cebd3e8970708d39edd70682b99eeb77e19258d9fa8c068 packages/bus/tests/sessions.test.mjs\nc2f9002a8ba4474fa1bafc84d8ffd67756d450cf9a1346194a871cd0d541d524 packages/bus/tests/spec-migration.test.mjs\n4fd9c541735a8e654bee84ecab0172f9b1f21c668091fe12624ce812919327e4 packages/bus/tests/tester-writes.test.mjs\n0007f55235ef25e70bf89cfb9407e07c4780b54566163183d19b1f902fc0251e packages/bus/tests/thread-claims.test.mjs\n19e4200961fd81a23f2bf7089f81b2a57165a6a81c026ef879ab756587d705dc packages/bus/tests/thread-migration.test.mjs\n90d25f35389478cd3307b2383d93dc0a2519dd88eddc3c26bd37c39161083269 packages/bus/tests/threads.test.mjs\ncdd758deb9bcbb33eb1f4138673a11b9a5fd82fdd4fd88c14197d5240fe4b780 packages/bus/tests/usage-migration.test.mjs\n43f09ab4e7d3f8178a6cab6889ce2d85c83b8151a0f0dc26325d39bbe4236dc0 packages/cli/tests/stack-release.test.mjs\ncf6c1310f32d8495b5838620760646abcff7be0d38924511e14c53528d581802 packages/cli/tests/thread-cli.test.mjs\n4d4885bc624056b559e4c5cbdd7650c4fdeedc83695c8f1884a0bfa27b00a0cf packages/cli/tests/thread-launch.test.mjs\n3e794faab71337d13a531564183b5e0fd316c666bffbe834c8e5eedf9fad4a6a packages/webui/tests/chat.test.mjs\nd03dd152cde23c895bfbd07f1df8084925ae6638854d3a99a6aca82779ad4f12 scripts/stack-release.sh\n"
},
"receipt": "ok gizmoduck-264-review-r13b rev 3210 row 264 in-progress→in-review round 1 on #1769; request gizmoduck-264-review-r13b requesting"
},
"viewSha": "7a3ea1661ded736fbe138c569e5ab120d96bd48c8348a394f2da89f669bb7fc9"
},
{
"rev": 3211,
"op": "gizmoduck-264-review-r13b.outcome",
"verb": "review-outcome",
"args": {
"id": 264,
"attempt": "gizmoduck-264-review-r13b",
"outcome": "failed",
"status": null,
"comment": null,
"detail": "pre-send: the credential or account check failed"
},
"by": "gizmoduck",
"at": "2026-10-22T14:11:43.637Z",
"semantics": 2,
"result": {
"row": 264,
"round": 1,
"attempt": "gizmoduck-264-review-r13b",
"state": "failed",
"receipt": "ok gizmoduck-264-review-r13b.outcome rev 3211 row 264 round 1 request gizmoduck-264-review-r13b failed"
},
"viewSha": "cadd960bd868b8c63ecb7a1128b9e2628434706849bdcac6f2b8a24c26bc6701"
},
{
"rev": 3212,
"op": "sage-264-review-r13b",
"verb": "review-request",
"args": {
"id": 264
},
"by": "sage",
"at": "2026-10-22T14:12:46.925Z",
"semantics": 2,
"result": {
"row": 264,
"round": 1,
"attempt": "sage-264-review-r13b",
"state": "requesting",
"receipt": "ok sage-264-review-r13b rev 3212 row 264 round 1 request sage-264-review-r13b requesting"
},
"viewSha": "fe49d268532fe1223929e2c660b3acc815daf109b5607f7909d30c9d53bf18fb"
},
{
"rev": 3213,
"op": "sage-264-review-r13b.outcome",
"verb": "review-outcome",
"args": {
"id": 264,
"attempt": "sage-264-review-r13b",
"outcome": "posted",
"status": 201,
"comment": 30639,
"detail": "created"
},
"by": "sage",
"at": "2026-10-22T14:13:24.411Z",
"semantics": 2,
"result": {
"row": 264,
"round": 1,
"attempt": "sage-264-review-r13b",
"state": "posted",
"receipt": "ok sage-264-review-r13b.outcome rev 3213 row 264 round 1 request sage-264-review-r13b posted comment 30639"
},
"viewSha": "a7fb599ce8e5c0320b4b9dbd9f812934b1098406169790370dc37bce946668c1"
},
{
"rev": 3214,
"op": "duckworth-0146-record",
"verb": "review-record",
"args": {
"id": 264,
"verdict": "approve",
"comment": 30640,
"candidate": "257408e9e3e9e9bbc751729c2693eb3f199724374ed05db467656a95aa873c8e"
},
"by": "duckworth",
"at": "2026-10-22T14:17:52.013Z",
"semantics": 2,
"result": {
"row": 264,
"round": 1,
"verdict": "approve",
"receipt": "ok duckworth-0146-record rev 3214 row 264 round 1 approve by duckworth (comment 30640)"
},
"viewSha": "765bffd5742a3e0d8fac6bc4971ddba7fea0a937ce63529fd1ff3a82baa66d35"
},
{
"rev": 3215,
"op": "sage-264-landed-note",
"verb": "note",
"args": {
"id": 264,
"text": "LANDED 84f53540d ff on e479521d3 14:18:23Z, 21 commits = gizmoduck/row264-r13 tip (no rewrite, range-diff identity). Manifest 257408e9 approved Duckworth rev 3214 (c30640). Gate r13 2cc34aef8: 20 files, bus 827, cli 837, webui 345/1 skip, 10 shells; M1-M4 assertion kills (mos-1279 B, M2 4 files). Overlap none (13, 257). N1 actor_run binds row 269; N2 esbuild skip later gate (sage-2695)."
},
"by": "sage",
"at": "2026-10-22T14:19:03.485Z",
"semantics": 2,
"result": {
"row": 264,
"field": "note",
"receipt": "ok sage-264-landed-note rev 3215 row 264 note"
},
"viewSha": "830e39c04975c14ffe061b4a292ac05b088574a6932f47bd91ac43d982e92ef6"
},
{
"rev": 3216,
"op": "sage-264-done",
"verb": "move",
"args": {
"id": 264,
"to": "done",
"reason": null,
"candidate": null,
"evidence": null,
"issue": null
},
"by": "sage",
"at": "2026-10-22T14:19:39.888Z",
"semantics": 2,
"result": {
"row": 264,
"from": "in-review",
"to": "done",
"round": 1,
"issue": null,
"candidate": null,
"receipt": "ok sage-264-done rev 3216 row 264 in-review→done round 1"
},
"viewSha": "e81b02877f6780a2cc04aaa05922ddcfec132716d03de5613412d8c6f85a579a"
}
]
}
@@ -17,7 +17,7 @@ const ddl3h = readFileSync(new URL('./fixtures/schema-3h.sql', import.meta.url),
const here = (p) => new URL(p, import.meta.url);
// Row 264a (#1769): what the 3k→3l step rebuilds or adds. sessions.test.mjs tests those objects.
const SESSIONS_3L = ['sessions', 'session_defaults', 'thread_claims', 'message_threads', 'thread_opens'];
const later3l = (r) => SESSIONS_3L.includes(r.tbl_name) || ['delivery_same_thread', 'delivery_same_session'].includes(r.name);
const later3l = (r) => SESSIONS_3L.includes(r.tbl_name) || ['delivery_same_thread', 'delivery_same_session', 'threads_id_not_session'].includes(r.name);
function source3h(t) {
const root = mkdtempSync(join(tmpdir(), 'account-migrate-'));
t.after(() => rmSync(root, { recursive: true, force: true }));
+1 -1
View File
@@ -34,7 +34,7 @@ function source3j(t) {
}
// Row 264a (#1769): what the 3k→3l step rebuilds or adds. sessions.test.mjs tests those objects.
const SESSIONS_3L = ['sessions', 'session_defaults', 'thread_claims', 'message_threads', 'thread_opens'];
const later3l = (r) => SESSIONS_3L.includes(r.tbl_name) || ['delivery_same_thread', 'delivery_same_session'].includes(r.name);
const later3l = (r) => SESSIONS_3L.includes(r.tbl_name) || ['delivery_same_thread', 'delivery_same_session', 'threads_id_not_session'].includes(r.name);
function rows(path) {
const db = new DatabaseSync(path, { readOnly: true });
try {
+1 -1
View File
@@ -20,7 +20,7 @@ const NEW = ['hosts', 'host_grants', 'events_grant_actor', 'sqlite_autoindex_hos
const LATER = ['gitea_users', 'gitea_grants', 'sqlite_autoindex_gitea_users_1', 'sqlite_autoindex_gitea_grants_1'];
// Row 264a (#1769): what the 3k→3l step rebuilds or adds. sessions.test.mjs tests those objects.
const SESSIONS_3L = ['sessions', 'session_defaults', 'thread_claims', 'message_threads', 'thread_opens'];
const later3l = (r) => SESSIONS_3L.includes(r.tbl_name) || ['delivery_same_thread', 'delivery_same_session'].includes(r.name);
const later3l = (r) => SESSIONS_3L.includes(r.tbl_name) || ['delivery_same_thread', 'delivery_same_session', 'threads_id_not_session'].includes(r.name);
function source3i(t) {
const root = mkdtempSync(join(tmpdir(), 'grant-migrate-'));
t.after(() => rmSync(root, { recursive: true, force: true }));
+20 -5
View File
@@ -196,12 +196,27 @@ test('T2 sage-2257: a released or revoked run\'s retired generation refuses its
call('human', 'thread.send', { thread: A, body: `waiting after ${name}` });
return { d, taken };
};
// 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 from = lastSeq();
assert.throws(fn, { code: 'not-holder' }, label);
const added = store.all('SELECT kind, 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' }]],
label,
);
};
const refused = (name, { d, taken }) => {
const before = counts();
assert.throws(() => call(name, 'decision.withdraw', { id: d.id }), { code: 'not-holder' }, 'approval');
assert.throws(() => call(name, 'message.receive'), { code: 'not-holder' }, 'delivery');
assert.throws(() => call(name, 'message.read', { id: taken.id }), { code: 'not-holder' }, 'read');
assert.deepEqual(counts(), before);
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');
const { events: after, ...rest } = counts();
assert.deepEqual(rest, before);
assert.equal(after, events + 3);
};
// Released: generation 1 is retired once a2 claims generation 2.
const one = prepare('a1');
+1 -1
View File
@@ -338,7 +338,7 @@ test('REQ-THREAD-1 REQ-USER-2: one thread\'s messages never reach another thread
'pi',
null,
),
/only to its thread's holder/,
/only to its session's holder/,
op,
);
// B's holder can't read A's message either.