diff --git a/docs/plans/QUEUE.md b/docs/plans/QUEUE.md index dd155c66..11611a0f 100644 --- a/docs/plans/QUEUE.md +++ b/docs/plans/QUEUE.md @@ -27,60 +27,41 @@ Gaps found while working go to `docs/plans/DEFERRED.md`, not here. ## Pieces (in order) -Lead: Sage from 2026-09-26 (Jason's ruling); Darkwing is a collaborating seat. -Jason is preparing the target for the next phase; until it arrives, the -priority below stands. -Current priority: Sage's goal order from the 2026-09-27 goals review (close -what is open, queue as data, Gate E), ratified by Jason 2026-09-27. Earlier: row 6, after Jason accepted row 18. His newer standing continuation instruction supplies the -start; the earlier row-18-only priority is complete. Jason requires -automatic continuation to the next authorized item after each accepted iteration; -no routine next-step prompt. Explicit dependencies and protected-action gates remain. Use the five internal agents, not fleet seats. No -`~/.mosaic` changes or live fleet migration. Row 6 closed 2026-09-27 (lead decision 29), -which clears rows 9-13 to proceed; it does not authorize publication/access changes. +Generated from `docs/plans/queue.json` revision 0 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`. -| # | Piece | Owner | Issue | State | Gate | Brief | -|---|-------|-------|-------|-------|------|-------| -| 1 | Control board MVP (scanner + page) | darkwing | #1503 | done 2026-09-27 (Sage, lead decision 29): D-001 MVP delivered, Gate A passed 2026-09-12, attention status operator-accepted (row 22), relaunch activity, attribution and Host guard landed; #1503 closed; cross-harness board work belongs to Gate E (row 5) | A passed 2026-09-12 | plan page, top | -| 2 | Seat registration and `mosaic seat task` | darkwing | #1504 | done 2026-09-13 | B passed 2026-09-12 | plan page, Step 3 | -| 3 | Reply-from-board (piece 2 on the plan page) | darkwing | #1505 | done 2026-09-12 | C passed 2026-09-12 | plan page, "Piece 2: reply-from-board" | -| 4 | Ledger (piece 3 on the plan page) | darkwing | #1506 | done 2026-09-13 | D: 18.9 human messages per closed issue, week of 2026-09-06 | plan page, "Piece 3: ledger" | -| 5 | WebUI first screen on the Console design (piece 4 on the plan page) | dewey; filbert reviews | #1507 | CHAT-00/01/01C contracts published (370823b3, 28d4e98a, b023841c); CHAT-02 done: backend a5beb6d9, Console c9e771cf, live check passed 2026-09-26; CHAT-03 brief approved and pinned 2026-09-27 (BRIEF.md 1ef15ac0, rescoped to Gate E, lead decisions 30 to 33; Filbert r3 approve, Rocko blocker closed, Filbert scope check pass); source author named by Sage after queue A2 lands; CHAT-04..08 not chartered; Gate E blocked | E: all-seat interactive demonstration then Jason workday ruling; live cutover separately approved | `2026-09-13_webui-session-chat.md`, CHAT-00..08 | -| 6 | Darkwing on point: darkwing assigns and gates filbert's work (piece 5 on the plan page) | darkwing; filbert authors pilot; darkwing/dewey review | #1511 code phase; #1512 pilot | done 2026-09-27 (Sage, lead decision 29): #1511 and #1512 landed in af4203ca (pushed) and are closed; Gate F not passed: the ledger counts 2 human messages in filbert's T3 thread during #1512 (one is Jason's 09-26 seat takeover) and its first 11 days predate the T3 source; Gate G (row 9) now carries the zero-human-message test | F: filbert's item closes with zero human messages from Jason; code phase does not claim Gate F | `2026-09-15_relaunch-activity.md`; `2026-09-14_task-attribution.md`; plan page Piece 5 | -| 7 | Weekly ledger run and rails number | sage (lead decision 27); Jason reads | — | recurring, every Monday; 09-13..19: 47.7, 09-20..26: 33.0 human messages per closed issue | under 10 human messages per closed issue for the week of 2026-09-13 | `packages/ledger/README.md` | -| 8 | Fleet seats (`~/.mosaic`) onto `mosaic launch` | unassigned | — | parked by current owner direction; no `~/.mosaic` changes during internal bootstrap | Jason's call | none yet | -| 9 | Queue as data: `docs/plans/queue.json`, `mosaic queue` is the only writer | darkwing; filbert reviews | #1508 | required; A1 (journal, lock, CLI, verify) committed 34a72af9 2026-09-27, Filbert approved; A2 (migration, render, dispatch) in progress, then genesis and hook install by Sage | G: a fresh seat told only "run `mosaic queue next` and do it" starts its piece with zero human messages | `2026-09-13_queue-as-data.md`, Piece A | -| 10 | Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files) | coordinator | #1508 | required; AGENTS.md lines done 2026-09-13, rest after row 9 | verified by Gate G | `2026-09-13_queue-as-data.md`, Piece B | -| 11 | Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief | darkwing | #1508 | required; template committed with A1 (34a72af9); `queue add` refusal lands with A2 | two briefs accepted by Jason with no scope question | `2026-09-13_queue-as-data.md`, Piece C | -| 12 | Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/` | darkwing | #1508 | required; after row 9 | one review round with no new file under reviews/ | `2026-09-13_queue-as-data.md`, Piece D | -| 13 | Ledger "queue" section: issue/row/seat drift printed with the weekly number | darkwing; filbert reviews | #1508 | required; after row 9 | first run Monday 2026-09-21, zero violations or every one moved same day | `2026-09-13_queue-as-data.md`, Piece E | -| 14 | Discord connector pilot: Sage answers in Shared Signals (chat only, no tools, no repo writes) | coordinator; Filbert or orch-01 seat reviews | #1509 | 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 | H: offline suite green, eight-step live pilot with private receipts, then Jason says the reply reads as Sage | `2026-09-13_discord-connector-pilot.md` | -| 15 | Discord connector: eyes reaction on every admitted message as a read receipt (MVP iteration 1) | coordinator | #1509 | done: committed 93d6b624, live check passed 19:21 UTC (turn record receipt ok, Jason: test is successful), receipt `mvp1-read-receipt-20260913T192158Z.json` in the private evidence dir; `rest.react` best effort, reaction placed at admission before the engine runs, outcome in the turn record, no reaction on drops or refusals; `scripts/test-discord.sh` 28/28 (90 node tests) | Jason sees the reaction on a live message | `2026-09-13_discord-connector-pilot.md` section 11 | -| 16 | Repository-native development bootstrap: five internal agents, Darkwing coordination | darkwing; filbert reviews | #1510 | source approved by internal Filbert, exact R1 receipt 26204; six offline tests independently pass in both copies; 24 config tests and five no-effect checks are author evidence | source approved; Researcher live response passed 26216; existing native Rocko lock preserved, no new Rocko model test; no MVP acceptance/publication | `2026-09-13_internal-development-bootstrap.md` | -| 17 | Discord connector: systemd user service with a supervised pre-start (`recover`, exit 3 never retried) (MVP iteration 2) | coordinator | #1509 | done, operator-verified by Jason 2026-09-13 (all four steps): `scripts/test-discord.sh` 40/40 (95 node tests); Sage seat migrated 19:35 UTC, SIGKILL recovered in 16 s with the dead lock cleared, brake held (exit 3, no restart), released and READY; receipt `mvp2-service-unit-*.json` in the private evidence dir. First cut (ExecStartPre) looped and was replaced by `run --supervised` before any traffic | the Sage connector runs under `mosaic-discord@shared-signals`, survives a kill with a clean restart, and stays down behind `discord.sh stop` | `2026-09-13_discord-connector-pilot.md` section 11 | -| 18 | Control board row for the Discord connector (MVP iteration 3): discovery from binding files, liveness from run.lock, reply refused | darkwing (Jason's ruling 2026-09-13); coordinator answers connector-side questions | #1509 | done for bounded local delivery; Jason accepted visual test (parfait), R3 26257 reviewed, 322 tests and live 409 refusal verified; no publication or live connector state transitions claimed | a Sage (discord) row on the board shows live, offline and braked correctly, and reply from the board is refused | `2026-09-14_discord-board-row.md`; original pilot section 11 | -| 19 | Discord connector: binding reload without a restart (`reload` verb, SIGHUP, `systemctl --user reload`); channels, users, limits and guildName apply in place, identity, engine and context stay fixed, an invalid file is refused and the old binding kept (MVP iteration 4) | coordinator | #1509 | done: caaef941; live 00:03 UTC: reload applied Carmen's entry with no restart, unknown key refused by the CLI (exit 2), fixed key refused in the process with the binding kept, `systemctl --user reload` applied; suite 41/41 (101 node tests); receipt `mvp4-5-reload-carmen-*.json` | edit the binding, run `scripts/discord.sh reload shared-signals`, the change applies with no restart, a broken edit is refused and journaled | `2026-09-13_discord-connector-pilot.md` section 11 | -| 20 | Discord connector: per-user channel allowlist in the binding and Carmen enrolled (all listed rooms except #sage-admin) (MVP iteration 5) | coordinator | #1509 | done: caaef941 (`users[].channels` allowlist, `channel-not-for-user` drop); Carmen enrolled live by reload 00:03 UTC; her first message is the remaining check | Carmen gets a reply in #general and silence in #sage-admin; Jason unchanged | `2026-09-13_discord-connector-pilot.md` section 11 | -| 21 | Discord connector: read-only tools for the Discord Sage through a Mosaic pi extension confined to declared roots (MVP iteration 6) | coordinator; reviewer per Q12 | #1509 | approved: rev-code-02 round 2 verdict 26276 (tree 43f0329b); committed locally; live check in #sage-admin with Jason next; Jason ruled R1–R7 2026-09-14 (roots docs/ and agents/sage/, Carmen included) | Sage answers a question from a file under a declared root with the reads in the turn record; a read outside the roots is refused and recorded | `2026-09-14_discord-readonly-tools.md` | -| 22 | Board attention status: completed replies idle, explicit human input waiting | darkwing; filbert reviews | #1503 | source approved, receipt 26248; reviewer 193 per copy, author union 213 pass; actual Researcher scan idle | operator accepted full targeted status sequence: explicit request waiting, Seen hides attention but preserves waiting, completion returns idle; broader MVP/cross-harness acceptance and publication separate | `2026-09-13_board-attention-status.md` | -| 23 | Discord connector: writes confined to the `shared-signals` root plus web fetch and search for the Discord Sage (MVP iteration 7) | coordinator; reviewer per Q12 | #1509 | done 2026-09-27 (Sage, lead decision 29): committed and pushed 1685deb4; live turns wrote `vault/Businesses/naming.md` with web_search and web_fetch in the turn record; the outside-root refusal rests on the offline suite, not a live turn | Sage writes a naming shortlist into the repository from #ideas with the write and web calls in the turn record; a write outside the root is refused | `2026-09-16_discord-write-and-web-tools.md` | -| 24 | Discord connector: git verbs (status, commit, pull ff-only, push) for the Discord Sage on the `shared-signals` root, seat identity through the existing credential helper (MVP iteration 8) | coordinator; reviewer per Q12 | #1509 | done 2026-09-27 (Sage, lead decision 29): committed and pushed 1949ed8d; live-configured 2026-09-18, never used from Discord; records now go through row 25 and SetSpark cutover freezes `vault/`, so first real use is the check and a failure opens a new issue | Sage commits and pushes a decision file from #ideas; GitHub shows Sage as author with a Requested-by trailer; no token in any record | `2026-09-16_discord-git-tools.md` | -| 25 | Discord connector: SetSpark record client for the Discord Sage, fixed verbs against setspark-api, connector-verified approvals (MVP iteration 9) | coordinator; reviewer per Q12 | #1509 | done 2026-09-26: committed and pushed 43d7574d, live check passed (DEC-010, request 2, approved by button at 21:38:58Z, lead decision 19); approver rule enforced by the service since shared-signals cc74d92 (lead decisions 24 and 28) | Sage creates one work item from #sage-admin and the API shows it with revision 1; a proposal is approved by the Approve button and the audit row carries Sage's key id and Jason's Discord id separately; rev-code-02 approves on #1509 | `2026-09-20_discord-setspark-client.md` | - -Start message for row 6, sent from the board to darkwing: -"Read docs/plans/QUEUE.md, then the plan page section "Piece 5: darkwing on -point", and execute it. Start with the first assignment for filbert. Report at -Gate F or when blocked." - -## Parked (not in order, needs Jason to reopen) - -| Item | Why parked | Where | -|------|------------|-------| -| Registry increment 3 (headless identity-env leak) | #1500 closed on increment 2; Jason has not asked for 3 | CURRENT.md, "#1500 increment 2 (historical)" | -| Auth/provider/harness registry review | Paused for owner alignment | `docs/plans/2026-09-03_auth-provider-harness-registry.md` | -| CI runners, second real adapter, push automation | Deferred by owner 2026-09-03 | `docs/plans/ROADMAP.md`, "Explicitly deferred" | -| Console features outside the refined session-chat brief, including Fresh creation and model switching | Deferred by WEBUI Q1; required history/control/stop now belong to row 5, not this parked item | `2026-09-13_webui-session-chat.md` | -| Open gaps from the MVP work | Fixed only when a gate needs them | DEFERRED.md, "Open" | +| # | Piece | Owner | Issues | State | After | Gate | Brief | Note | +|---|---|---|---|---|---|---|---|---| +| 1 | Control board MVP (scanner + page) | darkwing | #1503 | done | — | A passed 2026-09-12 (jason) | `docs/plans/2026-09-12_control-board-mvp.md` § Control board MVP — plan | done 2026-09-27 (Sage, lead decision 29): D-001 MVP delivered, Gate A passed 2026-09-12, attention status operator-accepted (row 22), relaunch activity, attribution and Host guard landed; #1503 closed; cross-harness board work belongs to Gate E (row 5) | +| 2 | Seat registration and `mosaic seat task` | darkwing | #1504 | done | — | B passed 2026-09-12 (jason) | `docs/plans/2026-09-12_control-board-mvp.md` § Step 3: daily use and fixes | done 2026-09-13 | +| 3 | Reply-from-board (piece 2 on the plan page) | darkwing | #1505 | done | — | C passed 2026-09-12 (jason) | `docs/plans/2026-09-12_control-board-mvp.md` § Piece 2: reply-from-board | done 2026-09-12 | +| 4 | Ledger (piece 3 on the plan page) | darkwing | #1506 | done | — | D: 18.9 human messages per closed issue, week of 2026-09-06 (jason) | `docs/plans/2026-09-12_control-board-mvp.md` § Piece 3: ledger (numbers for the rails) | done 2026-09-13 | +| 5 | WebUI first screen on the Console design (piece 4 on the plan page) | dewey; reviewers filbert, rocko | #1507 | in-progress | — | E: all-seat interactive demonstration then Jason workday ruling; live cutover separately approved (jason) | `docs/plans/2026-09-13_webui-session-chat.md` § WebUI session chat: refined brief and delivery plan | CHAT-00/01/01C published (370823b3, 28d4e98a, b023841c); CHAT-02 done: backend a5beb6d9, Console c9e771cf, live check passed 2026-09-26; CHAT-03 brief approved and pinned 2026-09-27 (BRIEF.md 1ef15ac0, rescoped to Gate E, lead decisions 30 to 33; Filbert r3 approve, Rocko blocker closed, Filbert scope check pass); source author named by Sage after queue A2 lands; CHAT-04..08 not chartered; Gate E blocked | +| 6 | Darkwing on point: darkwing assigns and gates filbert's work (piece 5 on the plan page) | darkwing; reviewers dewey | #1511, #1512 | done | — | F: filbert's item closes with zero human messages from Jason; code phase does not claim Gate F (jason) | `docs/plans/2026-09-12_control-board-mvp.md` § Piece 5: darkwing on point (orchestrator behaviour) | done 2026-09-27 (lead decision 29): #1511 and #1512 landed in af4203ca (pushed), closed; Gate F not passed (2 human messages in filbert's T3 thread; the first 11 days predate the T3 source); Gate G (row 9) carries the test. Filbert authored the pilot. Briefs also: 2026-09-15_relaunch-activity.md, 2026-09-14_task-attribution.md | +| 7 | Weekly ledger run and rails number | sage | — | in-progress | — | under 10 human messages per closed issue for the week of 2026-09-13 (jason) | `packages/ledger/README.md` § Ledger | recurring, every Monday (lead decision 27); Jason reads; 09-13..19: 47.7, 09-20..26: 33.0 human messages per closed issue | +| 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; in-progress | — | 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 (journal, lock, CLI, verify) committed 34a72af9; A2 (migration, render, dispatch) committed with this map; Filbert approved both; genesis and hook install by Sage; Gate G also verifies row 10 | +| 10 | Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files) | coordinator | #1508; closes none | required; briefed | — | 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) | AGENTS.md lines done 2026-09-13; the rest starts once genesis is committed | +| 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) | template and the `queue add` brief refusal both committed with A1 (34a72af9); the gate counts the first briefs added through the queue | +| 12 | Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/` | darkwing | #1508; closes none | required; briefed | — | 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; briefed | — | first run Monday 2026-09-21, zero violations or every one moved 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 | +| 15 | Discord connector: eyes reaction on every admitted message as a read receipt (MVP iteration 1) | coordinator | #1509 | done | — | Jason sees the reaction on a live message (jason) | `docs/plans/2026-09-13_discord-connector-pilot.md` § 11. MVP iteration, after the pilot | done: committed 93d6b624, live check passed 19:21 UTC (turn record receipt ok, Jason: test is successful), receipt `mvp1-read-receipt-20260913T192158Z.json` in the private evidence dir; reaction placed at admission before the engine runs, outcome in the turn record, none on drops or refusals; `scripts/test-discord.sh` 28/28 (90 node tests) | +| 16 | Repository-native development bootstrap: five internal agents, Darkwing coordination | darkwing; reviewers filbert | #1510 | waiting-on-jason | — | source approved; Researcher live response passed 26216; existing native Rocko lock preserved, no new Rocko model test; no MVP acceptance/publication (jason) | `docs/plans/2026-09-13_internal-development-bootstrap.md` § Repository-native development bootstrap | source approved by internal Filbert, exact R1 receipt 26204; six offline tests independently pass in both copies; 24 config tests and five no-effect checks are author evidence | +| 17 | Discord connector: systemd user service with a supervised pre-start (`recover`, exit 3 never retried) (MVP iteration 2) | coordinator | #1509 | done | — | the Sage connector runs under `mosaic-discord@shared-signals`, survives a kill with a clean restart, and stays down behind `discord.sh stop` (jason) | `docs/plans/2026-09-13_discord-connector-pilot.md` § 11. MVP iteration, after the pilot | done, operator-verified by Jason 2026-09-13 (all four steps): suite 40/40 (95 node tests); Sage seat migrated 19:35 UTC, SIGKILL recovered in 16 s with the dead lock cleared, brake held (exit 3, no restart), released and READY; receipt `mvp2-service-unit-*.json` in the private evidence dir; the first cut (ExecStartPre) looped and was replaced by `run --supervised` before any traffic | +| 18 | Control board row for the Discord connector (MVP iteration 3): discovery from binding files, liveness from run.lock, reply refused | darkwing | #1509 | done | — | a Sage (discord) row on the board shows live, offline and braked correctly, and reply from the board is refused (jason) | `docs/plans/2026-09-14_discord-board-row.md` § Discord connector board row | done for bounded local delivery; Jason accepted visual test (parfait), R3 26257 reviewed, 322 tests and live 409 refusal verified; owner by Jason's ruling 2026-09-13, coordinator answered connector-side questions; also briefed in the pilot page section 11 | +| 19 | Discord connector: binding reload without a restart (`reload` verb, SIGHUP, `systemctl --user reload`); channels, users, limits and guildName apply in place, identity, engine and context stay fixed, an invalid file is refused and the old binding kept (MVP iteration 4) | coordinator | #1509 | done | — | edit the binding, run `scripts/discord.sh reload shared-signals`, the change applies with no restart, a broken edit is refused and journaled (jason) | `docs/plans/2026-09-13_discord-connector-pilot.md` § 11. MVP iteration, after the pilot | done: caaef941; live 00:03 UTC: reload applied Carmen's entry with no restart, unknown key refused by the CLI (exit 2), fixed key refused in the process with the binding kept, `systemctl --user reload` applied; suite 41/41 (101 node tests); receipt `mvp4-5-reload-carmen-*.json` | +| 20 | Discord connector: per-user channel allowlist in the binding and Carmen enrolled (all listed rooms except #sage-admin) (MVP iteration 5) | coordinator | #1509 | done | — | Carmen gets a reply in #general and silence in #sage-admin; Jason unchanged (jason) | `docs/plans/2026-09-13_discord-connector-pilot.md` § 11. MVP iteration, after the pilot | done: caaef941 (`users[].channels` allowlist, `channel-not-for-user` drop); Carmen enrolled live by reload 00:03 UTC; her first message was the remaining check; #1509 closed with rows 14 to 25 done (lead decision 29) | +| 21 | Discord connector: read-only tools for the Discord Sage through a Mosaic pi extension confined to declared roots (MVP iteration 6) | coordinator | #1509 | done | — | Sage answers a question from a file under a declared root with the reads in the turn record; a read outside the roots is refused and recorded (jason) | `docs/plans/2026-09-14_discord-readonly-tools.md` § Discord Sage: read-only tools (iteration 6) | approved: rev-code-02 round 2 verdict 26276 (tree 43f0329b), committed; Jason ruled R1–R7 2026-09-14 (roots docs/ and agents/sage/, Carmen included); done with rows 14 to 25 when #1509 closed (lead decision 29); reviewer per Q12 | +| 22 | Board attention status: completed replies idle, explicit human input waiting | darkwing; reviewers filbert | #1503 | done | — | operator accepted full targeted status sequence: explicit request waiting, Seen hides attention but preserves waiting, completion returns idle; broader MVP/cross-harness acceptance and publication separate (jason) | `docs/plans/2026-09-13_board-attention-status.md` § Board attention status correction | source approved, receipt 26248; reviewer 193 per copy, author union 213 pass; actual Researcher scan idle; operator accepted (row 1); #1503 closed (lead decision 29) | +| 23 | Discord connector: writes confined to the `shared-signals` root plus web fetch and search for the Discord Sage (MVP iteration 7) | coordinator | #1509 | done | — | Sage writes a naming shortlist into the repository from #ideas with the write and web calls in the turn record; a write outside the root is refused (jason) | `docs/plans/2026-09-16_discord-write-and-web-tools.md` § Discord Sage: writes into the strategy repository, and web research (#1509, QUEUE row 23) | done 2026-09-27 (Sage, lead decision 29): committed and pushed 1685deb4; live turns wrote `vault/Businesses/naming.md` with web_search and web_fetch in the turn record; the outside-root refusal rests on the offline suite, not a live turn; reviewer per Q12 | +| 24 | Discord connector: git verbs (status, commit, pull ff-only, push) for the Discord Sage on the `shared-signals` root, seat identity through the existing credential helper (MVP iteration 8) | coordinator | #1509 | done | — | Sage commits and pushes a decision file from #ideas; GitHub shows Sage as author with a Requested-by trailer; no token in any record (jason) | `docs/plans/2026-09-16_discord-git-tools.md` § Discord Sage: git for the strategy repository (#1509, QUEUE row 24) | done 2026-09-27 (Sage, lead decision 29): committed and pushed 1949ed8d; live-configured 2026-09-18, never used from Discord; records now go through row 25 and SetSpark cutover freezes `vault/`, so first real use is the check and a failure opens a new issue; reviewer per Q12 | +| 25 | Discord connector: SetSpark record client for the Discord Sage, fixed verbs against setspark-api, connector-verified approvals (MVP iteration 9) | coordinator | #1509 | done | — | Sage creates one work item from #sage-admin and the API shows it with revision 1; a proposal is approved by the Approve button and the audit row carries Sage's key id and Jason's Discord id separately; rev-code-02 approves on #1509 (jason) | `docs/plans/2026-09-20_discord-setspark-client.md` § Discord Sage: SetSpark record client (#1509, QUEUE row 25) | done 2026-09-26: committed and pushed 43d7574d, live check passed (DEC-010, request 2, approved by button at 21:38:58Z, lead decision 19); approver rule enforced by the service since shared-signals cc74d92 (lead decisions 24 and 28); reviewer per Q12 | +| 26 | Registry increment 3 (headless identity-env leak) | unassigned | — | parked | — | Jason reopens (jason) | `docs/plans/CURRENT.md` § Completed checkpoint: #1500 increment 2 (historical) | #1500 closed on increment 2; Jason has not asked for 3 | +| 27 | Auth/provider/harness registry review | unassigned | — | parked | — | Jason reopens (jason) | `docs/plans/2026-09-03_auth-provider-harness-registry.md` § Harness declaration + centralized auth/provider registry | Paused for owner alignment | +| 28 | CI runners, second real adapter, push automation | unassigned | — | parked | — | Jason reopens (jason) | `docs/plans/ROADMAP.md` § Explicitly deferred | Deferred by owner 2026-09-03 | +| 29 | Console features outside the refined session-chat brief, including Fresh creation and model switching | unassigned | — | parked | — | Jason reopens (jason) | `docs/plans/2026-09-13_webui-session-chat.md` § WebUI session chat: refined brief and delivery plan | Deferred by WEBUI Q1; required history/control/stop now belong to row 5, not this parked item | +| 30 | Open gaps from the MVP work | unassigned | — | parked | — | Jason reopens (jason) | `docs/plans/DEFERRED.md` § Open | Fixed only when a gate needs them | diff --git a/docs/plans/queue.json b/docs/plans/queue.json new file mode 100644 index 00000000..f744b123 --- /dev/null +++ b/docs/plans/queue.json @@ -0,0 +1,1884 @@ +{ + "version": 1, + "canonicalRoot": "/mnt/storage/src/mosaic-stack", + "revision": 0, + "rows": [ + { + "id": 1, + "piece": "Control board MVP (scanner + page)", + "owner": "darkwing", + "issues": [ + 1503 + ], + "closes": [ + 1503 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "A passed 2026-09-12", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Control board MVP — plan", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-27 (Sage, lead decision 29): D-001 MVP delivered, Gate A passed 2026-09-12, attention status operator-accepted (row 22), relaunch activity, attribution and Host guard landed; #1503 closed; cross-harness board work belongs to Gate E (row 5)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 2, + "piece": "Seat registration and `mosaic seat task`", + "owner": "darkwing", + "issues": [ + 1504 + ], + "closes": [ + 1504 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "B passed 2026-09-12", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Step 3: daily use and fixes", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-13", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 3, + "piece": "Reply-from-board (piece 2 on the plan page)", + "owner": "darkwing", + "issues": [ + 1505 + ], + "closes": [ + 1505 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "C passed 2026-09-12", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Piece 2: reply-from-board", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-12", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 4, + "piece": "Ledger (piece 3 on the plan page)", + "owner": "darkwing", + "issues": [ + 1506 + ], + "closes": [ + 1506 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "D: 18.9 human messages per closed issue, week of 2026-09-06", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Piece 3: ledger (numbers for the rails)", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-13", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 5, + "piece": "WebUI first screen on the Console design (piece 4 on the plan page)", + "owner": "dewey", + "issues": [ + 1507 + ], + "closes": [ + 1507 + ], + "state": "in-progress", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "E: all-seat interactive demonstration then Jason workday ruling; live cutover separately approved", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_webui-session-chat.md", + "anchor": "WebUI session chat: refined brief and delivery plan", + "blob": "58fb11f8ebd201097905b62f6f801b0e2e2d235a" + }, + "after": [], + "reviewers": [ + "filbert", + "rocko" + ], + "review": null, + "claim": { + "seat": "dewey", + "op": "genesis-2026-09-27" + }, + "note": "CHAT-00/01/01C published (370823b3, 28d4e98a, b023841c); CHAT-02 done: backend a5beb6d9, Console c9e771cf, live check passed 2026-09-26; CHAT-03 brief approved and pinned 2026-09-27 (BRIEF.md 1ef15ac0, rescoped to Gate E, lead decisions 30 to 33; Filbert r3 approve, Rocko blocker closed, Filbert scope check pass); source author named by Sage after queue A2 lands; CHAT-04..08 not chartered; Gate E blocked", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 6, + "piece": "Darkwing on point: darkwing assigns and gates filbert's work (piece 5 on the plan page)", + "owner": "darkwing", + "issues": [ + 1511, + 1512 + ], + "closes": [ + 1511, + 1512 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "F: filbert's item closes with zero human messages from Jason; code phase does not claim Gate F", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Piece 5: darkwing on point (orchestrator behaviour)", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [ + "dewey" + ], + "review": null, + "claim": null, + "note": "done 2026-09-27 (lead decision 29): #1511 and #1512 landed in af4203ca (pushed), closed; Gate F not passed (2 human messages in filbert's T3 thread; the first 11 days predate the T3 source); Gate G (row 9) carries the test. Filbert authored the pilot. Briefs also: 2026-09-15_relaunch-activity.md, 2026-09-14_task-attribution.md", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 7, + "piece": "Weekly ledger run and rails number", + "owner": "sage", + "issues": [], + "closes": [], + "state": "in-progress", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "under 10 human messages per closed issue for the week of 2026-09-13", + "gateOwner": "jason", + "brief": { + "path": "packages/ledger/README.md", + "anchor": "Ledger", + "blob": "3a2ce27cdc4ef939258fa51eeb0e942bc60fb617" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": { + "seat": "sage", + "op": "genesis-2026-09-27" + }, + "note": "recurring, every Monday (lead decision 27); Jason reads; 09-13..19: 47.7, 09-20..26: 33.0 human messages per closed issue", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 8, + "piece": "Fleet seats (`~/.mosaic`) onto `mosaic launch`", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason's call", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-26_fleet-seats-onto-mosaic-launch.md", + "anchor": "Row 8: fleet seats onto `mosaic launch` (stub brief)", + "blob": "df316da4a1a7c456a76ca799033ba1e0088d398a" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "parked by current owner direction; no `~/.mosaic` changes during internal bootstrap", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 9, + "piece": "Queue as data: `docs/plans/queue.json`, `mosaic queue` is the only writer", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [], + "state": "in-progress", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "G: a fresh seat told only \"run `mosaic queue next` and do it\" starts its piece with zero human messages", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece A: queue record and `mosaic queue` (QUEUE row 9)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": { + "seat": "darkwing", + "op": "genesis-2026-09-27" + }, + "note": "A1 (journal, lock, CLI, verify) committed 34a72af9; A2 (migration, render, dispatch) committed with this map; Filbert approved both; genesis and hook install by Sage; Gate G also verifies row 10", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 10, + "piece": "Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files)", + "owner": "coordinator", + "issues": [ + 1508 + ], + "closes": [], + "state": "briefed", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "verified by Gate G", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece B: seats read the queue, not CURRENT.md (QUEUE row 10)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "AGENTS.md lines done 2026-09-13; the rest starts once genesis is committed", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 11, + "piece": "Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [], + "state": "waiting-on-jason", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "two briefs accepted by Jason with no scope question", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece C: brief template (QUEUE row 11)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": { + "seat": "darkwing", + "op": "genesis-2026-09-27" + }, + "note": "template and the `queue add` brief refusal both committed with A1 (34a72af9); the gate counts the first briefs added through the queue", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 12, + "piece": "Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/`", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [], + "state": "briefed", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "one review round with no new file under reviews/", + "gateOwner": "sage", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece D: reviews through a channel, not files (QUEUE row 12)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "starts once genesis is committed; the live posting test needs the per-seat credential file (8.9)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 13, + "piece": "Ledger \"queue\" section: issue/row/seat drift printed with the weekly number", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [ + 1508 + ], + "state": "briefed", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "first run Monday 2026-09-21, zero violations or every one moved same day", + "gateOwner": "sage", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece E: ledger checks the queue (QUEUE row 13)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": null, + "note": "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)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 14, + "piece": "Discord connector pilot: Sage answers in Shared Signals (chat only, no tools, no repo writes)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "H: offline suite green, eight-step live pilot with private receipts, then Jason says the reply reads as Sage", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "Discord connector pilot: Sage on Shared Signals", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": null, + "note": "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", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 15, + "piece": "Discord connector: eyes reaction on every admitted message as a read receipt (MVP iteration 1)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason sees the reaction on a live message", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done: committed 93d6b624, live check passed 19:21 UTC (turn record receipt ok, Jason: test is successful), receipt `mvp1-read-receipt-20260913T192158Z.json` in the private evidence dir; reaction placed at admission before the engine runs, outcome in the turn record, none on drops or refusals; `scripts/test-discord.sh` 28/28 (90 node tests)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 16, + "piece": "Repository-native development bootstrap: five internal agents, Darkwing coordination", + "owner": "darkwing", + "issues": [ + 1510 + ], + "closes": [ + 1510 + ], + "state": "waiting-on-jason", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "source approved; Researcher live response passed 26216; existing native Rocko lock preserved, no new Rocko model test; no MVP acceptance/publication", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_internal-development-bootstrap.md", + "anchor": "Repository-native development bootstrap", + "blob": "5dfe2f34ab1c4cdd34d4aebd00804df3842c24e2" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": { + "seat": "darkwing", + "op": "genesis-2026-09-27" + }, + "note": "source approved by internal Filbert, exact R1 receipt 26204; six offline tests independently pass in both copies; 24 config tests and five no-effect checks are author evidence", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 17, + "piece": "Discord connector: systemd user service with a supervised pre-start (`recover`, exit 3 never retried) (MVP iteration 2)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "the Sage connector runs under `mosaic-discord@shared-signals`, survives a kill with a clean restart, and stays down behind `discord.sh stop`", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done, operator-verified by Jason 2026-09-13 (all four steps): suite 40/40 (95 node tests); Sage seat migrated 19:35 UTC, SIGKILL recovered in 16 s with the dead lock cleared, brake held (exit 3, no restart), released and READY; receipt `mvp2-service-unit-*.json` in the private evidence dir; the first cut (ExecStartPre) looped and was replaced by `run --supervised` before any traffic", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 18, + "piece": "Control board row for the Discord connector (MVP iteration 3): discovery from binding files, liveness from run.lock, reply refused", + "owner": "darkwing", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "a Sage (discord) row on the board shows live, offline and braked correctly, and reply from the board is refused", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-14_discord-board-row.md", + "anchor": "Discord connector board row", + "blob": "6a7753f8ab9a3c57d6c89857054e4119a1051d13" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done for bounded local delivery; Jason accepted visual test (parfait), R3 26257 reviewed, 322 tests and live 409 refusal verified; owner by Jason's ruling 2026-09-13, coordinator answered connector-side questions; also briefed in the pilot page section 11", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 19, + "piece": "Discord connector: binding reload without a restart (`reload` verb, SIGHUP, `systemctl --user reload`); channels, users, limits and guildName apply in place, identity, engine and context stay fixed, an invalid file is refused and the old binding kept (MVP iteration 4)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "edit the binding, run `scripts/discord.sh reload shared-signals`, the change applies with no restart, a broken edit is refused and journaled", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done: caaef941; live 00:03 UTC: reload applied Carmen's entry with no restart, unknown key refused by the CLI (exit 2), fixed key refused in the process with the binding kept, `systemctl --user reload` applied; suite 41/41 (101 node tests); receipt `mvp4-5-reload-carmen-*.json`", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 20, + "piece": "Discord connector: per-user channel allowlist in the binding and Carmen enrolled (all listed rooms except #sage-admin) (MVP iteration 5)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Carmen gets a reply in #general and silence in #sage-admin; Jason unchanged", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done: caaef941 (`users[].channels` allowlist, `channel-not-for-user` drop); Carmen enrolled live by reload 00:03 UTC; her first message was the remaining check; #1509 closed with rows 14 to 25 done (lead decision 29)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 21, + "piece": "Discord connector: read-only tools for the Discord Sage through a Mosaic pi extension confined to declared roots (MVP iteration 6)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage answers a question from a file under a declared root with the reads in the turn record; a read outside the roots is refused and recorded", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-14_discord-readonly-tools.md", + "anchor": "Discord Sage: read-only tools (iteration 6)", + "blob": "d682fa0fb1c463311c5f8924a9eb860382a9b2ac" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "approved: rev-code-02 round 2 verdict 26276 (tree 43f0329b), committed; Jason ruled R1–R7 2026-09-14 (roots docs/ and agents/sage/, Carmen included); done with rows 14 to 25 when #1509 closed (lead decision 29); reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-14", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 22, + "piece": "Board attention status: completed replies idle, explicit human input waiting", + "owner": "darkwing", + "issues": [ + 1503 + ], + "closes": [ + 1503 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "operator accepted full targeted status sequence: explicit request waiting, Seen hides attention but preserves waiting, completion returns idle; broader MVP/cross-harness acceptance and publication separate", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_board-attention-status.md", + "anchor": "Board attention status correction", + "blob": "ce0bb5e3ebda8faf59cff78017257aec1772ccc2" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": null, + "note": "source approved, receipt 26248; reviewer 193 per copy, author union 213 pass; actual Researcher scan idle; operator accepted (row 1); #1503 closed (lead decision 29)", + "blockedReason": null, + "createdAt": "2026-09-14", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 23, + "piece": "Discord connector: writes confined to the `shared-signals` root plus web fetch and search for the Discord Sage (MVP iteration 7)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage writes a naming shortlist into the repository from #ideas with the write and web calls in the turn record; a write outside the root is refused", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-16_discord-write-and-web-tools.md", + "anchor": "Discord Sage: writes into the strategy repository, and web research (#1509, QUEUE row 23)", + "blob": "69a5c5c6e4696dd54c696eb0002f5e31c7d755a2" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-27 (Sage, lead decision 29): committed and pushed 1685deb4; live turns wrote `vault/Businesses/naming.md` with web_search and web_fetch in the turn record; the outside-root refusal rests on the offline suite, not a live turn; reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-16", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 24, + "piece": "Discord connector: git verbs (status, commit, pull ff-only, push) for the Discord Sage on the `shared-signals` root, seat identity through the existing credential helper (MVP iteration 8)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage commits and pushes a decision file from #ideas; GitHub shows Sage as author with a Requested-by trailer; no token in any record", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-16_discord-git-tools.md", + "anchor": "Discord Sage: git for the strategy repository (#1509, QUEUE row 24)", + "blob": "4139fcc07ad18a355db31205769e054d9dc75a98" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-27 (Sage, lead decision 29): committed and pushed 1949ed8d; live-configured 2026-09-18, never used from Discord; records now go through row 25 and SetSpark cutover freezes `vault/`, so first real use is the check and a failure opens a new issue; reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-16", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 25, + "piece": "Discord connector: SetSpark record client for the Discord Sage, fixed verbs against setspark-api, connector-verified approvals (MVP iteration 9)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage creates one work item from #sage-admin and the API shows it with revision 1; a proposal is approved by the Approve button and the audit row carries Sage's key id and Jason's Discord id separately; rev-code-02 approves on #1509", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-20_discord-setspark-client.md", + "anchor": "Discord Sage: SetSpark record client (#1509, QUEUE row 25)", + "blob": "19de61ce5a6ec2757b9456b9432ef49d6e63a1e6" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-26: committed and pushed 43d7574d, live check passed (DEC-010, request 2, approved by button at 21:38:58Z, lead decision 19); approver rule enforced by the service since shared-signals cc74d92 (lead decisions 24 and 28); reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-20", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 26, + "piece": "Registry increment 3 (headless identity-env leak)", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/CURRENT.md", + "anchor": "Completed checkpoint: #1500 increment 2 (historical)", + "blob": "ef462c4eb7b99b64b751fdcff2d81f85452d2017" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "#1500 closed on increment 2; Jason has not asked for 3", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 27, + "piece": "Auth/provider/harness registry review", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-03_auth-provider-harness-registry.md", + "anchor": "Harness declaration + centralized auth/provider registry", + "blob": "18b922b0b9ae8a4216ccba53ffb549e2d09787ff" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Paused for owner alignment", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 28, + "piece": "CI runners, second real adapter, push automation", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/ROADMAP.md", + "anchor": "Explicitly deferred", + "blob": "3d866ce8c1c9ba2c58876bf398f1d55d0a9faaff" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Deferred by owner 2026-09-03", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 29, + "piece": "Console features outside the refined session-chat brief, including Fresh creation and model switching", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_webui-session-chat.md", + "anchor": "WebUI session chat: refined brief and delivery plan", + "blob": "58fb11f8ebd201097905b62f6f801b0e2e2d235a" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Deferred by WEBUI Q1; required history/control/stop now belong to row 5, not this parked item", + "blockedReason": null, + "createdAt": "unknown", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 30, + "piece": "Open gaps from the MVP work", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/DEFERRED.md", + "anchor": "Open", + "blob": "fd580118844bb02909d54726c83d08c7d53c393f" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Fixed only when a gate needs them", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + } + ], + "log": [ + { + "rev": 0, + "op": "genesis-2026-09-27", + "verb": "genesis", + "args": { + "root": "/mnt/storage/src/mosaic-stack", + "branch": "refactor", + "map": "agents/darkwing/work/queue-migration-map.md" + }, + "by": "sage", + "at": "2026-09-27T01:14:44.440Z", + "semantics": 1, + "result": { + "mapBlob": "21fc374784399b418ba6625eb0cc3e98bf445257", + "highWater": 30, + "retired": [], + "rows": [ + { + "id": 1, + "piece": "Control board MVP (scanner + page)", + "owner": "darkwing", + "issues": [ + 1503 + ], + "closes": [ + 1503 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "A passed 2026-09-12", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Control board MVP — plan", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-27 (Sage, lead decision 29): D-001 MVP delivered, Gate A passed 2026-09-12, attention status operator-accepted (row 22), relaunch activity, attribution and Host guard landed; #1503 closed; cross-harness board work belongs to Gate E (row 5)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 2, + "piece": "Seat registration and `mosaic seat task`", + "owner": "darkwing", + "issues": [ + 1504 + ], + "closes": [ + 1504 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "B passed 2026-09-12", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Step 3: daily use and fixes", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-13", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 3, + "piece": "Reply-from-board (piece 2 on the plan page)", + "owner": "darkwing", + "issues": [ + 1505 + ], + "closes": [ + 1505 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "C passed 2026-09-12", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Piece 2: reply-from-board", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-12", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 4, + "piece": "Ledger (piece 3 on the plan page)", + "owner": "darkwing", + "issues": [ + 1506 + ], + "closes": [ + 1506 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "D: 18.9 human messages per closed issue, week of 2026-09-06", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Piece 3: ledger (numbers for the rails)", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-13", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 5, + "piece": "WebUI first screen on the Console design (piece 4 on the plan page)", + "owner": "dewey", + "issues": [ + 1507 + ], + "closes": [ + 1507 + ], + "state": "in-progress", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "E: all-seat interactive demonstration then Jason workday ruling; live cutover separately approved", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_webui-session-chat.md", + "anchor": "WebUI session chat: refined brief and delivery plan", + "blob": "58fb11f8ebd201097905b62f6f801b0e2e2d235a" + }, + "after": [], + "reviewers": [ + "filbert", + "rocko" + ], + "review": null, + "claim": { + "seat": "dewey", + "op": "genesis-2026-09-27" + }, + "note": "CHAT-00/01/01C published (370823b3, 28d4e98a, b023841c); CHAT-02 done: backend a5beb6d9, Console c9e771cf, live check passed 2026-09-26; CHAT-03 brief approved and pinned 2026-09-27 (BRIEF.md 1ef15ac0, rescoped to Gate E, lead decisions 30 to 33; Filbert r3 approve, Rocko blocker closed, Filbert scope check pass); source author named by Sage after queue A2 lands; CHAT-04..08 not chartered; Gate E blocked", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 6, + "piece": "Darkwing on point: darkwing assigns and gates filbert's work (piece 5 on the plan page)", + "owner": "darkwing", + "issues": [ + 1511, + 1512 + ], + "closes": [ + 1511, + 1512 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "F: filbert's item closes with zero human messages from Jason; code phase does not claim Gate F", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-12_control-board-mvp.md", + "anchor": "Piece 5: darkwing on point (orchestrator behaviour)", + "blob": "51a35b3bc24ebb9f8b27ef985b024bb7540ab3e0" + }, + "after": [], + "reviewers": [ + "dewey" + ], + "review": null, + "claim": null, + "note": "done 2026-09-27 (lead decision 29): #1511 and #1512 landed in af4203ca (pushed), closed; Gate F not passed (2 human messages in filbert's T3 thread; the first 11 days predate the T3 source); Gate G (row 9) carries the test. Filbert authored the pilot. Briefs also: 2026-09-15_relaunch-activity.md, 2026-09-14_task-attribution.md", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 7, + "piece": "Weekly ledger run and rails number", + "owner": "sage", + "issues": [], + "closes": [], + "state": "in-progress", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "under 10 human messages per closed issue for the week of 2026-09-13", + "gateOwner": "jason", + "brief": { + "path": "packages/ledger/README.md", + "anchor": "Ledger", + "blob": "3a2ce27cdc4ef939258fa51eeb0e942bc60fb617" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": { + "seat": "sage", + "op": "genesis-2026-09-27" + }, + "note": "recurring, every Monday (lead decision 27); Jason reads; 09-13..19: 47.7, 09-20..26: 33.0 human messages per closed issue", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 8, + "piece": "Fleet seats (`~/.mosaic`) onto `mosaic launch`", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason's call", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-26_fleet-seats-onto-mosaic-launch.md", + "anchor": "Row 8: fleet seats onto `mosaic launch` (stub brief)", + "blob": "df316da4a1a7c456a76ca799033ba1e0088d398a" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "parked by current owner direction; no `~/.mosaic` changes during internal bootstrap", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 9, + "piece": "Queue as data: `docs/plans/queue.json`, `mosaic queue` is the only writer", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [], + "state": "in-progress", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "G: a fresh seat told only \"run `mosaic queue next` and do it\" starts its piece with zero human messages", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece A: queue record and `mosaic queue` (QUEUE row 9)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": { + "seat": "darkwing", + "op": "genesis-2026-09-27" + }, + "note": "A1 (journal, lock, CLI, verify) committed 34a72af9; A2 (migration, render, dispatch) committed with this map; Filbert approved both; genesis and hook install by Sage; Gate G also verifies row 10", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 10, + "piece": "Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files)", + "owner": "coordinator", + "issues": [ + 1508 + ], + "closes": [], + "state": "briefed", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "verified by Gate G", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece B: seats read the queue, not CURRENT.md (QUEUE row 10)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "AGENTS.md lines done 2026-09-13; the rest starts once genesis is committed", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 11, + "piece": "Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [], + "state": "waiting-on-jason", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "two briefs accepted by Jason with no scope question", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece C: brief template (QUEUE row 11)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": { + "seat": "darkwing", + "op": "genesis-2026-09-27" + }, + "note": "template and the `queue add` brief refusal both committed with A1 (34a72af9); the gate counts the first briefs added through the queue", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 12, + "piece": "Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/`", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [], + "state": "briefed", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "one review round with no new file under reviews/", + "gateOwner": "sage", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece D: reviews through a channel, not files (QUEUE row 12)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "starts once genesis is committed; the live posting test needs the per-seat credential file (8.9)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 13, + "piece": "Ledger \"queue\" section: issue/row/seat drift printed with the weekly number", + "owner": "darkwing", + "issues": [ + 1508 + ], + "closes": [ + 1508 + ], + "state": "briefed", + "previousState": null, + "required": true, + "requiredSince": "2026-09-13", + "gate": "first run Monday 2026-09-21, zero violations or every one moved same day", + "gateOwner": "sage", + "brief": { + "path": "docs/plans/2026-09-13_queue-as-data.md", + "anchor": "Piece E: ledger checks the queue (QUEUE row 13)", + "blob": "0e57399e9e48b934ac7f7e6ff904d871b956407d" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": null, + "note": "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)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 14, + "piece": "Discord connector pilot: Sage answers in Shared Signals (chat only, no tools, no repo writes)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "H: offline suite green, eight-step live pilot with private receipts, then Jason says the reply reads as Sage", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "Discord connector pilot: Sage on Shared Signals", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": null, + "note": "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", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 15, + "piece": "Discord connector: eyes reaction on every admitted message as a read receipt (MVP iteration 1)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason sees the reaction on a live message", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done: committed 93d6b624, live check passed 19:21 UTC (turn record receipt ok, Jason: test is successful), receipt `mvp1-read-receipt-20260913T192158Z.json` in the private evidence dir; reaction placed at admission before the engine runs, outcome in the turn record, none on drops or refusals; `scripts/test-discord.sh` 28/28 (90 node tests)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 16, + "piece": "Repository-native development bootstrap: five internal agents, Darkwing coordination", + "owner": "darkwing", + "issues": [ + 1510 + ], + "closes": [ + 1510 + ], + "state": "waiting-on-jason", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "source approved; Researcher live response passed 26216; existing native Rocko lock preserved, no new Rocko model test; no MVP acceptance/publication", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_internal-development-bootstrap.md", + "anchor": "Repository-native development bootstrap", + "blob": "5dfe2f34ab1c4cdd34d4aebd00804df3842c24e2" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": { + "seat": "darkwing", + "op": "genesis-2026-09-27" + }, + "note": "source approved by internal Filbert, exact R1 receipt 26204; six offline tests independently pass in both copies; 24 config tests and five no-effect checks are author evidence", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 17, + "piece": "Discord connector: systemd user service with a supervised pre-start (`recover`, exit 3 never retried) (MVP iteration 2)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "the Sage connector runs under `mosaic-discord@shared-signals`, survives a kill with a clean restart, and stays down behind `discord.sh stop`", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done, operator-verified by Jason 2026-09-13 (all four steps): suite 40/40 (95 node tests); Sage seat migrated 19:35 UTC, SIGKILL recovered in 16 s with the dead lock cleared, brake held (exit 3, no restart), released and READY; receipt `mvp2-service-unit-*.json` in the private evidence dir; the first cut (ExecStartPre) looped and was replaced by `run --supervised` before any traffic", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 18, + "piece": "Control board row for the Discord connector (MVP iteration 3): discovery from binding files, liveness from run.lock, reply refused", + "owner": "darkwing", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "a Sage (discord) row on the board shows live, offline and braked correctly, and reply from the board is refused", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-14_discord-board-row.md", + "anchor": "Discord connector board row", + "blob": "6a7753f8ab9a3c57d6c89857054e4119a1051d13" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done for bounded local delivery; Jason accepted visual test (parfait), R3 26257 reviewed, 322 tests and live 409 refusal verified; owner by Jason's ruling 2026-09-13, coordinator answered connector-side questions; also briefed in the pilot page section 11", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 19, + "piece": "Discord connector: binding reload without a restart (`reload` verb, SIGHUP, `systemctl --user reload`); channels, users, limits and guildName apply in place, identity, engine and context stay fixed, an invalid file is refused and the old binding kept (MVP iteration 4)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "edit the binding, run `scripts/discord.sh reload shared-signals`, the change applies with no restart, a broken edit is refused and journaled", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done: caaef941; live 00:03 UTC: reload applied Carmen's entry with no restart, unknown key refused by the CLI (exit 2), fixed key refused in the process with the binding kept, `systemctl --user reload` applied; suite 41/41 (101 node tests); receipt `mvp4-5-reload-carmen-*.json`", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 20, + "piece": "Discord connector: per-user channel allowlist in the binding and Carmen enrolled (all listed rooms except #sage-admin) (MVP iteration 5)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Carmen gets a reply in #general and silence in #sage-admin; Jason unchanged", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_discord-connector-pilot.md", + "anchor": "11. MVP iteration, after the pilot", + "blob": "ef6cdbb8a38c1b22d8f1c3dcbc34260cdac9714e" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done: caaef941 (`users[].channels` allowlist, `channel-not-for-user` drop); Carmen enrolled live by reload 00:03 UTC; her first message was the remaining check; #1509 closed with rows 14 to 25 done (lead decision 29)", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 21, + "piece": "Discord connector: read-only tools for the Discord Sage through a Mosaic pi extension confined to declared roots (MVP iteration 6)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage answers a question from a file under a declared root with the reads in the turn record; a read outside the roots is refused and recorded", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-14_discord-readonly-tools.md", + "anchor": "Discord Sage: read-only tools (iteration 6)", + "blob": "d682fa0fb1c463311c5f8924a9eb860382a9b2ac" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "approved: rev-code-02 round 2 verdict 26276 (tree 43f0329b), committed; Jason ruled R1–R7 2026-09-14 (roots docs/ and agents/sage/, Carmen included); done with rows 14 to 25 when #1509 closed (lead decision 29); reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-14", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 22, + "piece": "Board attention status: completed replies idle, explicit human input waiting", + "owner": "darkwing", + "issues": [ + 1503 + ], + "closes": [ + 1503 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "operator accepted full targeted status sequence: explicit request waiting, Seen hides attention but preserves waiting, completion returns idle; broader MVP/cross-harness acceptance and publication separate", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_board-attention-status.md", + "anchor": "Board attention status correction", + "blob": "ce0bb5e3ebda8faf59cff78017257aec1772ccc2" + }, + "after": [], + "reviewers": [ + "filbert" + ], + "review": null, + "claim": null, + "note": "source approved, receipt 26248; reviewer 193 per copy, author union 213 pass; actual Researcher scan idle; operator accepted (row 1); #1503 closed (lead decision 29)", + "blockedReason": null, + "createdAt": "2026-09-14", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 23, + "piece": "Discord connector: writes confined to the `shared-signals` root plus web fetch and search for the Discord Sage (MVP iteration 7)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage writes a naming shortlist into the repository from #ideas with the write and web calls in the turn record; a write outside the root is refused", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-16_discord-write-and-web-tools.md", + "anchor": "Discord Sage: writes into the strategy repository, and web research (#1509, QUEUE row 23)", + "blob": "69a5c5c6e4696dd54c696eb0002f5e31c7d755a2" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-27 (Sage, lead decision 29): committed and pushed 1685deb4; live turns wrote `vault/Businesses/naming.md` with web_search and web_fetch in the turn record; the outside-root refusal rests on the offline suite, not a live turn; reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-16", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 24, + "piece": "Discord connector: git verbs (status, commit, pull ff-only, push) for the Discord Sage on the `shared-signals` root, seat identity through the existing credential helper (MVP iteration 8)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage commits and pushes a decision file from #ideas; GitHub shows Sage as author with a Requested-by trailer; no token in any record", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-16_discord-git-tools.md", + "anchor": "Discord Sage: git for the strategy repository (#1509, QUEUE row 24)", + "blob": "4139fcc07ad18a355db31205769e054d9dc75a98" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-27 (Sage, lead decision 29): committed and pushed 1949ed8d; live-configured 2026-09-18, never used from Discord; records now go through row 25 and SetSpark cutover freezes `vault/`, so first real use is the check and a failure opens a new issue; reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-16", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 25, + "piece": "Discord connector: SetSpark record client for the Discord Sage, fixed verbs against setspark-api, connector-verified approvals (MVP iteration 9)", + "owner": "coordinator", + "issues": [ + 1509 + ], + "closes": [ + 1509 + ], + "state": "done", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Sage creates one work item from #sage-admin and the API shows it with revision 1; a proposal is approved by the Approve button and the audit row carries Sage's key id and Jason's Discord id separately; rev-code-02 approves on #1509", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-20_discord-setspark-client.md", + "anchor": "Discord Sage: SetSpark record client (#1509, QUEUE row 25)", + "blob": "19de61ce5a6ec2757b9456b9432ef49d6e63a1e6" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "done 2026-09-26: committed and pushed 43d7574d, live check passed (DEC-010, request 2, approved by button at 21:38:58Z, lead decision 19); approver rule enforced by the service since shared-signals cc74d92 (lead decisions 24 and 28); reviewer per Q12", + "blockedReason": null, + "createdAt": "2026-09-20", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 26, + "piece": "Registry increment 3 (headless identity-env leak)", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/CURRENT.md", + "anchor": "Completed checkpoint: #1500 increment 2 (historical)", + "blob": "ef462c4eb7b99b64b751fdcff2d81f85452d2017" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "#1500 closed on increment 2; Jason has not asked for 3", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 27, + "piece": "Auth/provider/harness registry review", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-03_auth-provider-harness-registry.md", + "anchor": "Harness declaration + centralized auth/provider registry", + "blob": "18b922b0b9ae8a4216ccba53ffb549e2d09787ff" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Paused for owner alignment", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 28, + "piece": "CI runners, second real adapter, push automation", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/ROADMAP.md", + "anchor": "Explicitly deferred", + "blob": "3d866ce8c1c9ba2c58876bf398f1d55d0a9faaff" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Deferred by owner 2026-09-03", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 29, + "piece": "Console features outside the refined session-chat brief, including Fresh creation and model switching", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/2026-09-13_webui-session-chat.md", + "anchor": "WebUI session chat: refined brief and delivery plan", + "blob": "58fb11f8ebd201097905b62f6f801b0e2e2d235a" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Deferred by WEBUI Q1; required history/control/stop now belong to row 5, not this parked item", + "blockedReason": null, + "createdAt": "unknown", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + }, + { + "id": 30, + "piece": "Open gaps from the MVP work", + "owner": "unassigned", + "issues": [], + "closes": [], + "state": "parked", + "previousState": null, + "required": false, + "requiredSince": null, + "gate": "Jason reopens", + "gateOwner": "jason", + "brief": { + "path": "docs/plans/DEFERRED.md", + "anchor": "Open", + "blob": "fd580118844bb02909d54726c83d08c7d53c393f" + }, + "after": [], + "reviewers": [], + "review": null, + "claim": null, + "note": "Fixed only when a gate needs them", + "blockedReason": null, + "createdAt": "2026-09-13", + "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedBy": "sage" + } + ], + "legacyView": "Lead: Sage from 2026-09-26 (Jason's ruling); Darkwing is a collaborating seat.\nJason is preparing the target for the next phase; until it arrives, the\npriority below stands.\n\nCurrent priority: Sage's goal order from the 2026-09-27 goals review (close\nwhat is open, queue as data, Gate E), ratified by Jason 2026-09-27. Earlier: row 6, after Jason accepted row 18. His newer standing continuation instruction supplies the\nstart; the earlier row-18-only priority is complete. Jason requires\nautomatic continuation to the next authorized item after each accepted iteration;\nno routine next-step prompt. Explicit dependencies and protected-action gates remain. Use the five internal agents, not fleet seats. No\n`~/.mosaic` changes or live fleet migration. Row 6 closed 2026-09-27 (lead decision 29),\nwhich clears rows 9-13 to proceed; it does not authorize publication/access changes.\n\n| # | Piece | Owner | Issue | State | Gate | Brief |\n|---|-------|-------|-------|-------|------|-------|\n| 1 | Control board MVP (scanner + page) | darkwing | #1503 | done 2026-09-27 (Sage, lead decision 29): D-001 MVP delivered, Gate A passed 2026-09-12, attention status operator-accepted (row 22), relaunch activity, attribution and Host guard landed; #1503 closed; cross-harness board work belongs to Gate E (row 5) | A passed 2026-09-12 | plan page, top |\n| 2 | Seat registration and `mosaic seat task` | darkwing | #1504 | done 2026-09-13 | B passed 2026-09-12 | plan page, Step 3 |\n| 3 | Reply-from-board (piece 2 on the plan page) | darkwing | #1505 | done 2026-09-12 | C passed 2026-09-12 | plan page, \"Piece 2: reply-from-board\" |\n| 4 | Ledger (piece 3 on the plan page) | darkwing | #1506 | done 2026-09-13 | D: 18.9 human messages per closed issue, week of 2026-09-06 | plan page, \"Piece 3: ledger\" |\n| 5 | WebUI first screen on the Console design (piece 4 on the plan page) | dewey; filbert reviews | #1507 | CHAT-00/01/01C contracts published (370823b3, 28d4e98a, b023841c); CHAT-02 done: backend a5beb6d9, Console c9e771cf, live check passed 2026-09-26; CHAT-03 brief approved and pinned 2026-09-27 (BRIEF.md 1ef15ac0, rescoped to Gate E, lead decisions 30 to 33; Filbert r3 approve, Rocko blocker closed, Filbert scope check pass); source author named by Sage after queue A2 lands; CHAT-04..08 not chartered; Gate E blocked | E: all-seat interactive demonstration then Jason workday ruling; live cutover separately approved | `2026-09-13_webui-session-chat.md`, CHAT-00..08 |\n| 6 | Darkwing on point: darkwing assigns and gates filbert's work (piece 5 on the plan page) | darkwing; filbert authors pilot; darkwing/dewey review | #1511 code phase; #1512 pilot | done 2026-09-27 (Sage, lead decision 29): #1511 and #1512 landed in af4203ca (pushed) and are closed; Gate F not passed: the ledger counts 2 human messages in filbert's T3 thread during #1512 (one is Jason's 09-26 seat takeover) and its first 11 days predate the T3 source; Gate G (row 9) now carries the zero-human-message test | F: filbert's item closes with zero human messages from Jason; code phase does not claim Gate F | `2026-09-15_relaunch-activity.md`; `2026-09-14_task-attribution.md`; plan page Piece 5 |\n| 7 | Weekly ledger run and rails number | sage (lead decision 27); Jason reads | — | recurring, every Monday; 09-13..19: 47.7, 09-20..26: 33.0 human messages per closed issue | under 10 human messages per closed issue for the week of 2026-09-13 | `packages/ledger/README.md` |\n| 8 | Fleet seats (`~/.mosaic`) onto `mosaic launch` | unassigned | — | parked by current owner direction; no `~/.mosaic` changes during internal bootstrap | Jason's call | none yet |\n| 9 | Queue as data: `docs/plans/queue.json`, `mosaic queue` is the only writer | darkwing; filbert reviews | #1508 | required; A1 (journal, lock, CLI, verify) committed 34a72af9 2026-09-27, Filbert approved; A2 (migration, render, dispatch) in progress, then genesis and hook install by Sage | G: a fresh seat told only \"run `mosaic queue next` and do it\" starts its piece with zero human messages | `2026-09-13_queue-as-data.md`, Piece A |\n| 10 | Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files) | coordinator | #1508 | required; AGENTS.md lines done 2026-09-13, rest after row 9 | verified by Gate G | `2026-09-13_queue-as-data.md`, Piece B |\n| 11 | Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief | darkwing | #1508 | required; template committed with A1 (34a72af9); `queue add` refusal lands with A2 | two briefs accepted by Jason with no scope question | `2026-09-13_queue-as-data.md`, Piece C |\n| 12 | Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/` | darkwing | #1508 | required; after row 9 | one review round with no new file under reviews/ | `2026-09-13_queue-as-data.md`, Piece D |\n| 13 | Ledger \"queue\" section: issue/row/seat drift printed with the weekly number | darkwing; filbert reviews | #1508 | required; after row 9 | first run Monday 2026-09-21, zero violations or every one moved same day | `2026-09-13_queue-as-data.md`, Piece E |\n| 14 | Discord connector pilot: Sage answers in Shared Signals (chat only, no tools, no repo writes) | coordinator; Filbert or orch-01 seat reviews | #1509 | 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 | H: offline suite green, eight-step live pilot with private receipts, then Jason says the reply reads as Sage | `2026-09-13_discord-connector-pilot.md` |\n| 15 | Discord connector: eyes reaction on every admitted message as a read receipt (MVP iteration 1) | coordinator | #1509 | done: committed 93d6b624, live check passed 19:21 UTC (turn record receipt ok, Jason: test is successful), receipt `mvp1-read-receipt-20260913T192158Z.json` in the private evidence dir; `rest.react` best effort, reaction placed at admission before the engine runs, outcome in the turn record, no reaction on drops or refusals; `scripts/test-discord.sh` 28/28 (90 node tests) | Jason sees the reaction on a live message | `2026-09-13_discord-connector-pilot.md` section 11 |\n| 16 | Repository-native development bootstrap: five internal agents, Darkwing coordination | darkwing; filbert reviews | #1510 | source approved by internal Filbert, exact R1 receipt 26204; six offline tests independently pass in both copies; 24 config tests and five no-effect checks are author evidence | source approved; Researcher live response passed 26216; existing native Rocko lock preserved, no new Rocko model test; no MVP acceptance/publication | `2026-09-13_internal-development-bootstrap.md` |\n| 17 | Discord connector: systemd user service with a supervised pre-start (`recover`, exit 3 never retried) (MVP iteration 2) | coordinator | #1509 | done, operator-verified by Jason 2026-09-13 (all four steps): `scripts/test-discord.sh` 40/40 (95 node tests); Sage seat migrated 19:35 UTC, SIGKILL recovered in 16 s with the dead lock cleared, brake held (exit 3, no restart), released and READY; receipt `mvp2-service-unit-*.json` in the private evidence dir. First cut (ExecStartPre) looped and was replaced by `run --supervised` before any traffic | the Sage connector runs under `mosaic-discord@shared-signals`, survives a kill with a clean restart, and stays down behind `discord.sh stop` | `2026-09-13_discord-connector-pilot.md` section 11 |\n| 18 | Control board row for the Discord connector (MVP iteration 3): discovery from binding files, liveness from run.lock, reply refused | darkwing (Jason's ruling 2026-09-13); coordinator answers connector-side questions | #1509 | done for bounded local delivery; Jason accepted visual test (parfait), R3 26257 reviewed, 322 tests and live 409 refusal verified; no publication or live connector state transitions claimed | a Sage (discord) row on the board shows live, offline and braked correctly, and reply from the board is refused | `2026-09-14_discord-board-row.md`; original pilot section 11 |\n| 19 | Discord connector: binding reload without a restart (`reload` verb, SIGHUP, `systemctl --user reload`); channels, users, limits and guildName apply in place, identity, engine and context stay fixed, an invalid file is refused and the old binding kept (MVP iteration 4) | coordinator | #1509 | done: caaef941; live 00:03 UTC: reload applied Carmen's entry with no restart, unknown key refused by the CLI (exit 2), fixed key refused in the process with the binding kept, `systemctl --user reload` applied; suite 41/41 (101 node tests); receipt `mvp4-5-reload-carmen-*.json` | edit the binding, run `scripts/discord.sh reload shared-signals`, the change applies with no restart, a broken edit is refused and journaled | `2026-09-13_discord-connector-pilot.md` section 11 |\n| 20 | Discord connector: per-user channel allowlist in the binding and Carmen enrolled (all listed rooms except #sage-admin) (MVP iteration 5) | coordinator | #1509 | done: caaef941 (`users[].channels` allowlist, `channel-not-for-user` drop); Carmen enrolled live by reload 00:03 UTC; her first message is the remaining check | Carmen gets a reply in #general and silence in #sage-admin; Jason unchanged | `2026-09-13_discord-connector-pilot.md` section 11 |\n| 21 | Discord connector: read-only tools for the Discord Sage through a Mosaic pi extension confined to declared roots (MVP iteration 6) | coordinator; reviewer per Q12 | #1509 | approved: rev-code-02 round 2 verdict 26276 (tree 43f0329b); committed locally; live check in #sage-admin with Jason next; Jason ruled R1–R7 2026-09-14 (roots docs/ and agents/sage/, Carmen included) | Sage answers a question from a file under a declared root with the reads in the turn record; a read outside the roots is refused and recorded | `2026-09-14_discord-readonly-tools.md` |\n| 22 | Board attention status: completed replies idle, explicit human input waiting | darkwing; filbert reviews | #1503 | source approved, receipt 26248; reviewer 193 per copy, author union 213 pass; actual Researcher scan idle | operator accepted full targeted status sequence: explicit request waiting, Seen hides attention but preserves waiting, completion returns idle; broader MVP/cross-harness acceptance and publication separate | `2026-09-13_board-attention-status.md` |\n| 23 | Discord connector: writes confined to the `shared-signals` root plus web fetch and search for the Discord Sage (MVP iteration 7) | coordinator; reviewer per Q12 | #1509 | done 2026-09-27 (Sage, lead decision 29): committed and pushed 1685deb4; live turns wrote `vault/Businesses/naming.md` with web_search and web_fetch in the turn record; the outside-root refusal rests on the offline suite, not a live turn | Sage writes a naming shortlist into the repository from #ideas with the write and web calls in the turn record; a write outside the root is refused | `2026-09-16_discord-write-and-web-tools.md` |\n| 24 | Discord connector: git verbs (status, commit, pull ff-only, push) for the Discord Sage on the `shared-signals` root, seat identity through the existing credential helper (MVP iteration 8) | coordinator; reviewer per Q12 | #1509 | done 2026-09-27 (Sage, lead decision 29): committed and pushed 1949ed8d; live-configured 2026-09-18, never used from Discord; records now go through row 25 and SetSpark cutover freezes `vault/`, so first real use is the check and a failure opens a new issue | Sage commits and pushes a decision file from #ideas; GitHub shows Sage as author with a Requested-by trailer; no token in any record | `2026-09-16_discord-git-tools.md` |\n| 25 | Discord connector: SetSpark record client for the Discord Sage, fixed verbs against setspark-api, connector-verified approvals (MVP iteration 9) | coordinator; reviewer per Q12 | #1509 | done 2026-09-26: committed and pushed 43d7574d, live check passed (DEC-010, request 2, approved by button at 21:38:58Z, lead decision 19); approver rule enforced by the service since shared-signals cc74d92 (lead decisions 24 and 28) | Sage creates one work item from #sage-admin and the API shows it with revision 1; a proposal is approved by the Approve button and the audit row carries Sage's key id and Jason's Discord id separately; rev-code-02 approves on #1509 | `2026-09-20_discord-setspark-client.md` |\n\nStart message for row 6, sent from the board to darkwing:\n\"Read docs/plans/QUEUE.md, then the plan page section \"Piece 5: darkwing on\npoint\", and execute it. Start with the first assignment for filbert. Report at\nGate F or when blocked.\"\n\n## Parked (not in order, needs Jason to reopen)\n\n| Item | Why parked | Where |\n|------|------------|-------|\n| Registry increment 3 (headless identity-env leak) | #1500 closed on increment 2; Jason has not asked for 3 | CURRENT.md, \"#1500 increment 2 (historical)\" |\n| Auth/provider/harness registry review | Paused for owner alignment | `docs/plans/2026-09-03_auth-provider-harness-registry.md` |\n| CI runners, second real adapter, push automation | Deferred by owner 2026-09-03 | `docs/plans/ROADMAP.md`, \"Explicitly deferred\" |\n| Console features outside the refined session-chat brief, including Fresh creation and model switching | Deferred by WEBUI Q1; required history/control/stop now belong to row 5, not this parked item | `2026-09-13_webui-session-chat.md` |\n| Open gaps from the MVP work | Fixed only when a gate needs them | DEFERRED.md, \"Open\" |\n\n", + "receipt": "ok genesis-2026-09-27 rev 0 genesis 30 rows" + }, + "viewSha": "3306b486be165b88c554ba13283cab4c79a5b67fbe3c2b6bfe72f987e1eddf07" + } + ] +}