diff --git a/docs/plans/QUEUE.md b/docs/plans/QUEUE.md index a3161b7d..581df206 100644 --- a/docs/plans/QUEUE.md +++ b/docs/plans/QUEUE.md @@ -33,7 +33,7 @@ Gaps found while working go to `docs/plans/DEFERRED.md`, not here. -Generated from `docs/plans/queue.json` revision 112 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`. +Generated from `docs/plans/queue.json` revision 125 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`. | # | Piece | Owner | Issues | State | After | Gate | Brief | Note | |---|---|---|---|---|---|---|---|---| @@ -47,7 +47,7 @@ Generated from `docs/plans/queue.json` revision 112 by `queue render`. Do not ed | 8 | Fleet seats (`~/.mosaic`) onto `mosaic launch` | unassigned | — | parked | — | Jason's call (jason) | `docs/plans/2026-09-26_fleet-seats-onto-mosaic-launch.md` § Row 8: fleet seats onto `mosaic launch` (stub brief) | parked by current owner direction; no `~/.mosaic` changes during internal bootstrap | | 9 | Queue as data: `docs/plans/queue.json`, `mosaic queue` is the only writer | darkwing; reviewers filbert | #1508; closes none | required; done | — | G: a fresh seat told only "run `mosaic queue next` and do it" starts its piece with zero human messages (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece A: queue record and `mosaic queue` (QUEUE row 9) | A1 34a72af9 and A2 6ca116b7 committed; Filbert approved both, and review round 1's candidate 6ca116b7 matches the approved A2 manifest 21/21 (agents/filbert/work/queue-a2-review-r1-2026-09-27.md); genesis 3377b877 by Sage; waits on Gate G, which also verifies row 10 and carries Gate F's zero-human-message test | | 10 | Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files) | sage | #1508; closes none | required; done | — | verified by Gate G (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece B: seats read the queue, not CURRENT.md (QUEUE row 10) | source 5efe28ab: AGENTS.md cadence, pointer and recovery rule, six seat CONTEXT files, queue README n3; QUEUE.md header points at the goals review (n2). Gate G verifies it: a seat starts from queue next with no human message | -| 11 | Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief | darkwing | #1508; closes none | required; waiting-on-jason | — | two briefs accepted by Jason with no scope question (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece C: brief template (QUEUE row 11) | brief 1 of 2 accepted: Jason accepted row 31's brief (docs/plans/2026-09-28_queue-owner-not-reviewer.md) with no scope question, T3 thread 1ef1e4f8, 2026-10-04 ('2. accepted'); brief 2 pending | +| 11 | Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief | darkwing | #1508; closes none | required; done | — | two briefs accepted by Jason with no scope question (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece C: brief template (QUEUE row 11) | brief 1 of 2 accepted: Jason accepted row 31's brief (docs/plans/2026-09-28_queue-owner-not-reviewer.md) with no scope question, T3 thread 1ef1e4f8, 2026-10-04 ('2. accepted'); brief 2 pending | | 12 | Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/` | darkwing; reviewers filbert | #1508; closes none | required; done | — | one review round with no new file under reviews/ (sage) | `docs/plans/2026-09-13_queue-as-data.md` § Piece D: reviews through a channel, not files (QUEUE row 12) | starts once genesis is committed; the live posting test needs the per-seat credential file (8.9) | | 13 | Ledger "queue" section: issue/row/seat drift printed with the weekly number | darkwing; reviewers filbert | #1508 | required; in-review, round 1, request posted | — | rows 9 to 12 done, then a Monday ledger run with zero queue violations, or every one moved the same day (sage) | `docs/plans/2026-09-13_queue-as-data.md` § Piece E: ledger checks the queue (QUEUE row 13) | starts once genesis is committed; closes #1508 when done, so rows 9 to 12 close nothing; first run is the Monday after E is approved (Q7) | | 14 | Discord connector pilot: Sage answers in Shared Signals (chat only, no tools, no repo writes) | coordinator; reviewers filbert | #1509 | done | — | H: offline suite green, eight-step live pilot with private receipts, then Jason says the reply reads as Sage (jason) | `docs/plans/2026-09-13_discord-connector-pilot.md` § Discord connector pilot: Sage on Shared Signals | done: rev-code-02 APPROVE 26170 (round 9), committed 786e379c; pilot steps 1-8 done with private receipts, Gate H passed (Jason, 2026-09-13: replies read as Sage); connector left running for MVP iteration; reviewer lane was Filbert or orch-01 | @@ -70,7 +70,7 @@ Generated from `docs/plans/queue.json` revision 112 by `queue render`. Do not ed | 31 | Refuse the owner as a reviewer at add, set reviewers and assign | rocko; reviewers filbert | #1508; closes none | done | — | filbert approves through queue review record; Sage commits the candidate with queue tests green (sage) | `docs/plans/2026-09-28_queue-owner-not-reviewer.md` § Refuse the owner as a reviewer at add, set reviewers and assign | — | | 32 | Ledger: Jason's overhead per finished piece, unattended pieces, rework and wait time | darkwing; reviewers filbert | #1514 | parked | — | filbert approves through queue review record; Sage commits with ledger and queue suites green and posts a tagged run for 2026-09-27 to 2026-10-03 on #1514 (sage) | `docs/plans/2026-10-04_ledger-kpi-guideposts.md` § Ledger: Jason's overhead per finished piece, unattended pieces, rework and wait time | — | | 33 | Queue: genesis owner-not-reviewer check, assign wording, queue-commit HEAD-moved message, calendar dates, cold-start flake | filbert; reviewers darkwing | #1508; closes none | done | — | darkwing approves through queue review record; Sage commits with queue suites green and verify --current ok (sage) | `docs/plans/2026-10-04_queue-follow-ups.md` § Queue: genesis owner-not-reviewer check, assign wording, queue-commit HEAD-moved message, calendar dates, cold-start flake | — | -| 34 | Slice 1 S0: harness probe matrix, Pi 0.85.1 and Claude Code 2.1.289 | filbert; reviewers darkwing | #1516 | in-review, round 2, request posted | — | darkwing approves the matrix on #1516; Sage copies the rely-on lines into S6 (sage) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions) | — | +| 34 | Slice 1 S0: harness probe matrix, Pi 0.85.1 and Claude Code 2.1.289 | filbert; reviewers darkwing | #1516 | done | — | darkwing approves the matrix on #1516; Sage copies the rely-on lines into S6 (sage) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions) | — | | 35 | Slice 1 SR: install runbook for slice 1 identities (Gitea and Vikunja bots) | sage; reviewers darkwing | #1517 | waiting-on-jason | — | darkwing approves the scope tables on #1517; Jason runs it and the broker startup probe passes (jason) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 SR: install runbook for slice 1 identities | 2026-10-05: Jason chose Path B, bundled local Vikunja (lead decision 61). Still waiting on Jason to run the runbook. | | 36 | Slice 1 S1: roles v2, business and project files, variable layers | darkwing; reviewers filbert | #1518 | in-review, round 2, request posted | — | filbert approves on #1518; business tests, test-config, test-task, test-conductor green (sage) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S1: roles v2, business and project files, variable layers | — | | 37 | Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events) | rocko; reviewers darkwing | #1519 | in-progress | — | darkwing approves on #1519; bus tests on Node 24 and 26 and every test-*.sh green (sage) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events) | 2026-10-04: S2 pins schema v3b (48d76de7, sha256 179ffe35..., digest 52514a11..., lead decision 60), not v3a. Stamp at and read_at in one fixed-width UTC form. | @@ -79,6 +79,7 @@ Generated from `docs/plans/queue.json` revision 112 by `queue render`. Do not ed | 40 | Slice 1 S5: WebUI inbox, tasks, agents and trails; CHAT-03 Gate E | dewey; reviewers darkwing, filbert | #1522 | queued | 39 done | darkwing and filbert approve on #1522; webui, conversation, control-board and every test-*.sh green; row 5 Gate E is Jason's (sage) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E) | — | | 41 | Slice 1 S6: meta-harness and launching; the PM moves off T3 | filbert; reviewers darkwing | #1523 | queued | 34 done, 36 done, 38 done | darkwing approves on #1523; harness and seat tests, every test-*.sh; recorded PM launch of a coder (sage) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S6: meta-harness and launching (the PM moves off T3) | — | | 42 | Slice 1 S7: acceptance, five pieces in a row | sage | #1524 | queued | 40 done, 41 done | Jason, from the five trails: only gated decisions reached him, every step left a trail (jason) | `docs/plans/2026-10-04_slice-1.md` § Slice 1 S7: acceptance, five pieces in a row | — | +| 43 | S2b: gated approvals are single-use (authorize records consumption) | rocko; reviewers darkwing | #1525 | briefed | 37 done | darkwing approves on #1525; Sage's integration gate (sage) | `docs/plans/2026-10-05_s2b-single-use-approvals.md` § S2b: gated approvals are single-use (authorize records consumption) | lead decision 63; lands before S3 or S6 calls authorize for a gated action | diff --git a/docs/plans/queue.json b/docs/plans/queue.json index 814541ff..669db749 100644 --- a/docs/plans/queue.json +++ b/docs/plans/queue.json @@ -1,7 +1,7 @@ { "version": 1, "canonicalRoot": "/mnt/storage/src/mosaic-stack", - "revision": 112, + "revision": 125, "rows": [ { "id": 1, @@ -455,7 +455,7 @@ 1508 ], "closes": [], - "state": "waiting-on-jason", + "state": "done", "previousState": null, "required": true, "requiredSince": "2026-09-13", @@ -469,14 +469,11 @@ "after": [], "reviewers": [], "review": null, - "claim": { - "seat": "darkwing", - "op": "genesis-2026-09-27" - }, + "claim": null, "note": "brief 1 of 2 accepted: Jason accepted row 31's brief (docs/plans/2026-09-28_queue-owner-not-reviewer.md) with no scope question, T3 thread 1ef1e4f8, 2026-10-04 ('2. accepted'); brief 2 pending", "blockedReason": null, "createdAt": "2026-09-13", - "updatedAt": "2026-10-04T05:04:12.925Z", + "updatedAt": "2026-10-05T21:43:41.213Z", "updatedBy": "sage" }, { @@ -1350,7 +1347,7 @@ "closes": [ 1516 ], - "state": "in-review", + "state": "done", "previousState": null, "required": false, "requiredSince": null, @@ -1359,7 +1356,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions)", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [], "reviewers": [ @@ -1449,15 +1446,12 @@ } ] }, - "claim": { - "seat": "filbert", - "op": "filbert-34-start-1" - }, + "claim": null, "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:37.269Z", - "updatedAt": "2026-10-05T04:01:16.772Z", - "updatedBy": "darkwing" + "updatedAt": "2026-10-05T21:43:45.744Z", + "updatedBy": "sage" }, { "id": 35, @@ -1478,7 +1472,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 SR: install runbook for slice 1 identities", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [], "reviewers": [ @@ -1629,7 +1623,7 @@ "note": "2026-10-05: Jason chose Path B, bundled local Vikunja (lead decision 61). Still waiting on Jason to run the runbook.", "blockedReason": null, "createdAt": "2026-10-05T02:51:48.755Z", - "updatedAt": "2026-10-05T03:37:14.068Z", + "updatedAt": "2026-10-05T21:43:35.117Z", "updatedBy": "sage" }, { @@ -1651,7 +1645,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S1: roles v2, business and project files, variable layers", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [], "reviewers": [ @@ -1748,8 +1742,8 @@ "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:48.902Z", - "updatedAt": "2026-10-05T04:09:29.381Z", - "updatedBy": "filbert" + "updatedAt": "2026-10-05T21:43:35.378Z", + "updatedBy": "sage" }, { "id": 37, @@ -1770,7 +1764,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events)", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [], "reviewers": [ @@ -1784,7 +1778,7 @@ "note": "2026-10-04: S2 pins schema v3b (48d76de7, sha256 179ffe35..., digest 52514a11..., lead decision 60), not v3a. Stamp at and read_at in one fixed-width UTC form.", "blockedReason": null, "createdAt": "2026-10-05T02:51:49.031Z", - "updatedAt": "2026-10-05T03:34:02.001Z", + "updatedAt": "2026-10-05T21:43:35.657Z", "updatedBy": "sage" }, { @@ -1806,7 +1800,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S3: tasks (the Vikunja adapter, broker task verbs, sync)", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [ { @@ -1830,7 +1824,7 @@ "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:49.150Z", - "updatedAt": "2026-10-05T02:51:49.150Z", + "updatedAt": "2026-10-05T21:43:35.922Z", "updatedBy": "sage" }, { @@ -1852,7 +1846,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S4: the `mosaic` CLI (inbox, decide, tasks, agents, trail)", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [ { @@ -1872,7 +1866,7 @@ "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:49.270Z", - "updatedAt": "2026-10-05T02:51:49.270Z", + "updatedAt": "2026-10-05T21:43:36.190Z", "updatedBy": "sage" }, { @@ -1894,7 +1888,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E)", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [ { @@ -1911,7 +1905,7 @@ "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:49.395Z", - "updatedAt": "2026-10-05T02:51:49.395Z", + "updatedAt": "2026-10-05T21:43:36.461Z", "updatedBy": "sage" }, { @@ -1933,7 +1927,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S6: meta-harness and launching (the PM moves off T3)", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [ { @@ -1957,7 +1951,7 @@ "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:49.528Z", - "updatedAt": "2026-10-05T02:51:49.528Z", + "updatedAt": "2026-10-05T21:43:36.733Z", "updatedBy": "sage" }, { @@ -1979,7 +1973,7 @@ "brief": { "path": "docs/plans/2026-10-04_slice-1.md", "anchor": "Slice 1 S7: acceptance, five pieces in a row", - "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" }, "after": [ { @@ -1997,7 +1991,45 @@ "note": null, "blockedReason": null, "createdAt": "2026-10-05T02:51:49.652Z", - "updatedAt": "2026-10-05T02:51:49.652Z", + "updatedAt": "2026-10-05T21:43:37.022Z", + "updatedBy": "sage" + }, + { + "id": 43, + "piece": "S2b: gated approvals are single-use (authorize records consumption)", + "owner": "rocko", + "issues": [ + 1525 + ], + "closes": [ + 1525 + ], + "state": "briefed", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "darkwing approves on #1525; Sage's integration gate", + "gateOwner": "sage", + "brief": { + "path": "docs/plans/2026-10-05_s2b-single-use-approvals.md", + "anchor": "S2b: gated approvals are single-use (authorize records consumption)", + "blob": "d0394012c5e33f5e411a5c07b0b55c8187c7e03a" + }, + "after": [ + { + "id": 37, + "when": "done" + } + ], + "reviewers": [ + "darkwing" + ], + "review": null, + "claim": null, + "note": "lead decision 63; lands before S3 or S6 calls authorize for a gated action", + "blockedReason": null, + "createdAt": "2026-10-05T21:44:15.499Z", + "updatedAt": "2026-10-05T21:44:21.954Z", "updatedBy": "sage" } ], @@ -5846,6 +5878,395 @@ "receipt": "ok filbert-36-review-r2 rev 112 row 36 round 2 approve by filbert (comment 26730)" }, "viewSha": "c410f932aed510fca7c733392e9419758a7563b8ad17efd66af11a2279e382b7" + }, + { + "rev": 113, + "op": "sage-repin-34-20261005", + "verb": "set", + "args": { + "id": 34, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions)", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:34.868Z", + "semantics": 2, + "result": { + "row": 34, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions)", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions)", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-34-20261005 rev 113 row 34 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions) @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S0: harness probe matrix (Pi and Claude Code hooks, pinned versions) @5b4e04cdbd03" + }, + "viewSha": "19019ec0801aded9dc589c5484a68ae54456cbc445e5bd584b523c3cbebf5a3b" + }, + { + "rev": 114, + "op": "sage-repin-35-20261005", + "verb": "set", + "args": { + "id": 35, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 SR: install runbook for slice 1 identities", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:35.117Z", + "semantics": 2, + "result": { + "row": 35, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 SR: install runbook for slice 1 identities", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 SR: install runbook for slice 1 identities", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-35-20261005 rev 114 row 35 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 SR: install runbook for slice 1 identities @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 SR: install runbook for slice 1 identities @5b4e04cdbd03" + }, + "viewSha": "372c1d4c332598dbefda83e8c82e895263249e77d5dc1b080822e38aec18fcec" + }, + { + "rev": 115, + "op": "sage-repin-36-20261005", + "verb": "set", + "args": { + "id": 36, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S1: roles v2, business and project files, variable layers", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:35.378Z", + "semantics": 2, + "result": { + "row": 36, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S1: roles v2, business and project files, variable layers", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S1: roles v2, business and project files, variable layers", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-36-20261005 rev 115 row 36 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S1: roles v2, business and project files, variable layers @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S1: roles v2, business and project files, variable layers @5b4e04cdbd03" + }, + "viewSha": "41e8050edd04d6f9ce8728ca509517459ee6a8dca0e141b9a7e3bd1d062513f2" + }, + { + "rev": 116, + "op": "sage-repin-37-20261005", + "verb": "set", + "args": { + "id": 37, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events)", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:35.657Z", + "semantics": 2, + "result": { + "row": 37, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events)", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events)", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-37-20261005 rev 116 row 37 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events) @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S2: the bus and the broker core (decisions, messages, role claims, events) @5b4e04cdbd03" + }, + "viewSha": "324445f8cd5006a7342136da3956da21acaab87f7574aa311390e86d3587a18d" + }, + { + "rev": 117, + "op": "sage-repin-38-20261005", + "verb": "set", + "args": { + "id": 38, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S3: tasks (the Vikunja adapter, broker task verbs, sync)", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:35.922Z", + "semantics": 2, + "result": { + "row": 38, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S3: tasks (the Vikunja adapter, broker task verbs, sync)", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S3: tasks (the Vikunja adapter, broker task verbs, sync)", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-38-20261005 rev 117 row 38 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S3: tasks (the Vikunja adapter, broker task verbs, sync) @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S3: tasks (the Vikunja adapter, broker task verbs, sync) @5b4e04cdbd03" + }, + "viewSha": "adc05db48f6e740b337004f53c618e940684a50826ce5987c14797850fb5fa73" + }, + { + "rev": 118, + "op": "sage-repin-39-20261005", + "verb": "set", + "args": { + "id": 39, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S4: the `mosaic` CLI (inbox, decide, tasks, agents, trail)", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:36.190Z", + "semantics": 2, + "result": { + "row": 39, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S4: the `mosaic` CLI (inbox, decide, tasks, agents, trail)", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S4: the `mosaic` CLI (inbox, decide, tasks, agents, trail)", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-39-20261005 rev 118 row 39 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S4: the `mosaic` CLI (inbox, decide, tasks, agents, trail) @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S4: the `mosaic` CLI (inbox, decide, tasks, agents, trail) @5b4e04cdbd03" + }, + "viewSha": "24e5d96ea1284e04c36fb89660fce5507691cd6a82b62f17458b6fc9de244075" + }, + { + "rev": 119, + "op": "sage-repin-40-20261005", + "verb": "set", + "args": { + "id": 40, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E)", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:36.461Z", + "semantics": 2, + "result": { + "row": 40, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E)", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E)", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-40-20261005 rev 119 row 40 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E) @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S5: WebUI (inbox, tasks, agents and trails; CHAT-03 Gate E) @5b4e04cdbd03" + }, + "viewSha": "80888ba669e85c81456fe53d9b08eee29bea0883e14057db4da0b21656d3e7dc" + }, + { + "rev": 120, + "op": "sage-repin-41-20261005", + "verb": "set", + "args": { + "id": 41, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S6: meta-harness and launching (the PM moves off T3)", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:36.733Z", + "semantics": 2, + "result": { + "row": 41, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S6: meta-harness and launching (the PM moves off T3)", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S6: meta-harness and launching (the PM moves off T3)", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-41-20261005 rev 120 row 41 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S6: meta-harness and launching (the PM moves off T3) @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S6: meta-harness and launching (the PM moves off T3) @5b4e04cdbd03" + }, + "viewSha": "aa8a4cb22a79404ca0e7b9ae0bb63ea6552f1dab8886e24294669e13a0a6cf40" + }, + { + "rev": 121, + "op": "sage-repin-42-20261005", + "verb": "set", + "args": { + "id": 42, + "field": "brief", + "value": "docs/plans/2026-10-04_slice-1.md#Slice 1 S7: acceptance, five pieces in a row", + "reason": null + }, + "by": "sage", + "at": "2026-10-05T21:43:37.022Z", + "semantics": 2, + "result": { + "row": 42, + "field": "brief", + "from": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S7: acceptance, five pieces in a row", + "blob": "ae0773a3ffad3eea27d7df13ee19320d6f641b5d" + }, + "to": { + "path": "docs/plans/2026-10-04_slice-1.md", + "anchor": "Slice 1 S7: acceptance, five pieces in a row", + "blob": "5b4e04cdbd03ed538fcc614fc687fbcd2ff857bf" + }, + "receipt": "ok sage-repin-42-20261005 rev 121 row 42 brief: docs/plans/2026-10-04_slice-1.md § Slice 1 S7: acceptance, five pieces in a row @ae0773a3ffad→docs/plans/2026-10-04_slice-1.md § Slice 1 S7: acceptance, five pieces in a row @5b4e04cdbd03" + }, + "viewSha": "9ece8d7c0eb545d9670f89ecb7a6870417e2f895cc31027518a92a1ffda6143c" + }, + { + "rev": 122, + "op": "sage-r11-done-20261005", + "verb": "move", + "args": { + "id": 11, + "to": "done", + "reason": null, + "candidate": null, + "evidence": "brief 2 of 2 accepted: Jason accepted docs/plans/2026-10-04_slice-1.md as written with no scope question, T3 thread 1ef1e4f8, 2026-10-05 (lead decision 62); brief 1 was row 31's", + "issue": null + }, + "by": "sage", + "at": "2026-10-05T21:43:41.213Z", + "semantics": 2, + "result": { + "row": 11, + "from": "waiting-on-jason", + "to": "done", + "round": null, + "issue": null, + "candidate": null, + "receipt": "ok sage-r11-done-20261005 rev 122 row 11 waiting-on-jason→done" + }, + "viewSha": "20b20414ca3f576b714f3658fcd277312606a3d7211bba25a3b3839e9abdfe5f" + }, + { + "rev": 123, + "op": "sage-r34-done2-20261005", + "verb": "move", + "args": { + "id": 34, + "to": "done", + "reason": null, + "candidate": null, + "evidence": null, + "issue": null + }, + "by": "sage", + "at": "2026-10-05T21:43:45.744Z", + "semantics": 2, + "result": { + "row": 34, + "from": "in-review", + "to": "done", + "round": 2, + "issue": null, + "candidate": null, + "receipt": "ok sage-r34-done2-20261005 rev 123 row 34 in-review→done round 2" + }, + "viewSha": "7f56346d3470c5f81597234302c0572a7873aea87bd022a12d86aa5918cdf0ad" + }, + { + "rev": 124, + "op": "sage-add-s2b-20261005b", + "verb": "add", + "args": { + "piece": "S2b: gated approvals are single-use (authorize records consumption)", + "gate": "darkwing approves on #1525; Sage's integration gate", + "brief": "docs/plans/2026-10-05_s2b-single-use-approvals.md#S2b: gated approvals are single-use (authorize records consumption)", + "issues": [ + 1525 + ], + "note": "lead decision 63; lands before S3 or S6 calls authorize for a gated action", + "owner": "rocko", + "gateOwner": "sage", + "after": [ + { + "id": 37, + "when": "done" + } + ], + "reviewers": [ + "darkwing" + ], + "required": null + }, + "by": "sage", + "at": "2026-10-05T21:44:15.499Z", + "semantics": 2, + "result": { + "row": 43, + "from": null, + "to": "queued", + "brief": { + "path": "docs/plans/2026-10-05_s2b-single-use-approvals.md", + "anchor": "S2b: gated approvals are single-use (authorize records consumption)", + "blob": "d0394012c5e33f5e411a5c07b0b55c8187c7e03a" + }, + "receipt": "ok sage-add-s2b-20261005b rev 124 row 43 none→queued" + }, + "viewSha": "9dd24ce5ed0c17f8b7d4ea22e092a91126397e8adae0fad5b4968ff39b07070c" + }, + { + "rev": 125, + "op": "sage-r43-briefed-20261005", + "verb": "move", + "args": { + "id": 43, + "to": "briefed", + "reason": null, + "candidate": null, + "evidence": null, + "issue": null + }, + "by": "sage", + "at": "2026-10-05T21:44:21.954Z", + "semantics": 2, + "result": { + "row": 43, + "from": "queued", + "to": "briefed", + "round": null, + "issue": null, + "candidate": null, + "receipt": "ok sage-r43-briefed-20261005 rev 125 row 43 queued→briefed" + }, + "viewSha": "e66854835f491ce37bb4866cf2239d8788d81c44708efe23f56f0b89c01d47c7" } ] }