diff --git a/docs/plans/QUEUE.md b/docs/plans/QUEUE.md index a986c38a..442d766e 100644 --- a/docs/plans/QUEUE.md +++ b/docs/plans/QUEUE.md @@ -7,15 +7,20 @@ refuse a table that isn't the render. `packages/queue/README.md` has the verbs. How to find your next thing: -- **A seat**: run `scripts/mosaic queue next`. It names the row to resume, - review or start, or says there is nothing; if nothing, say so on the board - and stop. +- **A seat**: run `scripts/mosaic queue next SEAT` (or set + `$MOSAIC_AGENT_NAME`). It names the row to resume, review or start, or + says there is nothing; if nothing, say so on the board and stop. - **Jason**: rows in state `waiting-on-jason`, and parked rows to reopen. - **Sage, project lead** (Jason's ruling 2026-09-26): changes the queue with `scripts/mosaic queue` and commits `queue.json` with QUEUE.md through `scripts/queue-commit.sh`. CURRENT.md is the narrative log; the queue wins if they disagree. +Priority: the north star and goal order in +`docs/plans/2026-09-27_goals-review.md`, ratified by Jason on 2026-09-27. +Rows serve that order. A new priority from Jason goes there or into a row, +not into this header. + States: `queued` (brief exists, not accepted) → `briefed` → `in-progress` → `in-review` → `waiting-on-jason` → `done`. `blocked` returns to the state it left. `parked` rows wait for Jason to reopen them. A `required` row can't be @@ -28,7 +33,7 @@ Gaps found while working go to `docs/plans/DEFERRED.md`, not here. -Generated from `docs/plans/queue.json` revision 6 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`. +Generated from `docs/plans/queue.json` revision 12 by `queue render`. Do not edit between the markers; change the queue with `scripts/mosaic queue`. | # | Piece | Owner | Issues | State | After | Gate | Brief | Note | |---|---|---|---|---|---|---|---|---| @@ -41,13 +46,13 @@ Generated from `docs/plans/queue.json` revision 6 by `queue render`. Do not edit | 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; waiting-on-jason | — | G: a fresh seat told only "run `mosaic queue next` and do it" starts its piece with zero human messages (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece A: queue record and `mosaic queue` (QUEUE row 9) | A1 34a72af9 and A2 6ca116b7 committed; Filbert approved both, and review round 1's candidate 6ca116b7 matches the approved A2 manifest 21/21 (agents/filbert/work/queue-a2-review-r1-2026-09-27.md); genesis 3377b877 by Sage; waits on Gate G, which also verifies row 10 and carries Gate F's zero-human-message test | -| 10 | Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files) | sage | #1508; closes none | required; 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 | +| 10 | Seats read the queue, not CURRENT.md (AGENTS.md cadence, seat context files) | sage | #1508; closes none | required; waiting-on-jason | — | verified by Gate G (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece B: seats read the queue, not CURRENT.md (QUEUE row 10) | source 5efe28ab: AGENTS.md cadence, pointer and recovery rule, six seat CONTEXT files, queue README n3; QUEUE.md header points at the goals review (n2). Gate G verifies it: a seat starts from queue next with no human message | | 11 | Brief template `docs/plans/BRIEF-TEMPLATE.md`; `queue add` refuses a missing brief | darkwing | #1508; closes none | required; waiting-on-jason | — | two briefs accepted by Jason with no scope question (jason) | `docs/plans/2026-09-13_queue-as-data.md` § Piece C: brief template (QUEUE row 11) | 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) | +| 12 | Reviews as issue comments posted by `queue move ID in-review`, not files in `docs/plans/reviews/` | darkwing | #1508; closes none | required; in-progress | — | 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 | — | rows 9 to 12 done, then a Monday ledger run with zero queue violations, or every one moved the same day (sage) | `docs/plans/2026-09-13_queue-as-data.md` § Piece E: ledger checks the queue (QUEUE row 13) | starts once genesis is committed; closes #1508 when done, so rows 9 to 12 close nothing; first run is the Monday after E is approved (Q7) | | 14 | Discord connector pilot: Sage answers in Shared Signals (chat only, no tools, no repo writes) | coordinator; reviewers filbert | #1509 | done | — | H: offline suite green, eight-step live pilot with private receipts, then Jason says the reply reads as Sage (jason) | `docs/plans/2026-09-13_discord-connector-pilot.md` § Discord connector pilot: Sage on Shared Signals | done: rev-code-02 APPROVE 26170 (round 9), committed 786e379c; pilot steps 1-8 done with private receipts, Gate H passed (Jason, 2026-09-13: replies read as Sage); connector left running for MVP iteration; reviewer lane was Filbert or orch-01 | | 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 | +| 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 | Sage checked 2026-09-27: acceptance items 1 to 5 are met, source landed in af4203ca and d41f81aa and is pushed, and the seats are in daily use under Jason's 2026-09-26 ruling (Sage leads, so the title's Darkwing coordination is superseded). No quote from Jason accepts #1510 itself, so it stays here until he closes it or says to | | 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` | diff --git a/docs/plans/queue.json b/docs/plans/queue.json index c6143a2b..8ce34516 100644 --- a/docs/plans/queue.json +++ b/docs/plans/queue.json @@ -1,7 +1,7 @@ { "version": 1, "canonicalRoot": "/mnt/storage/src/mosaic-stack", - "revision": 6, + "revision": 12, "rows": [ { "id": 1, @@ -314,7 +314,7 @@ 1508 ], "closes": [], - "state": "briefed", + "state": "waiting-on-jason", "previousState": null, "required": true, "requiredSince": "2026-09-13", @@ -327,12 +327,31 @@ }, "after": [], "reviewers": [], - "review": null, - "claim": null, - "note": "AGENTS.md lines done 2026-09-13; the rest starts once genesis is committed", + "review": { + "rounds": [ + { + "n": 1, + "op": "row10-review-r1", + "by": "sage", + "at": "2026-09-27T01:23:20.299Z", + "issue": 1508, + "candidate": { + "kind": "commit", + "digest": "5efe28ab01c275c41979db2974b422a449dbf1e9", + "text": null + }, + "request": "none" + } + ] + }, + "claim": { + "seat": "sage", + "op": "row10-start" + }, + "note": "source 5efe28ab: AGENTS.md cadence, pointer and recovery rule, six seat CONTEXT files, queue README n3; QUEUE.md header points at the goals review (n2). Gate G verifies it: a seat starts from queue next with no human message", "blockedReason": null, "createdAt": "2026-09-13", - "updatedAt": "2026-09-27T01:16:40.574Z", + "updatedAt": "2026-09-27T01:23:20.429Z", "updatedBy": "sage" }, { @@ -375,7 +394,7 @@ 1508 ], "closes": [], - "state": "briefed", + "state": "in-progress", "previousState": null, "required": true, "requiredSince": "2026-09-13", @@ -389,12 +408,15 @@ "after": [], "reviewers": [], "review": null, - "claim": null, + "claim": { + "seat": "darkwing", + "op": "darkwing-12-start-1" + }, "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" + "updatedAt": "2026-09-27T01:19:33.192Z", + "updatedBy": "darkwing" }, { "id": 13, @@ -523,10 +545,10 @@ "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", + "note": "Sage checked 2026-09-27: acceptance items 1 to 5 are met, source landed in af4203ca and d41f81aa and is pushed, and the seats are in daily use under Jason's 2026-09-26 ruling (Sage leads, so the title's Darkwing coordination is superseded). No quote from Jason accepts #1510 itself, so it stays here until he closes it or says to", "blockedReason": null, "createdAt": "2026-09-13", - "updatedAt": "2026-09-27T01:14:44.440Z", + "updatedAt": "2026-09-27T01:23:26.447Z", "updatedBy": "sage" }, { @@ -2029,6 +2051,150 @@ "receipt": "ok darkwing-9-note-closeout-2 rev 6 row 9 note" }, "viewSha": "55d8988b0a095eb907d7452ccdf5d213402ce7d5b21c03e3622b422798bf57c9" + }, + { + "rev": 7, + "op": "row10-start", + "verb": "move", + "args": { + "id": 10, + "to": "in-progress", + "reason": null, + "candidate": null, + "evidence": null, + "issue": null + }, + "by": "sage", + "at": "2026-09-27T01:18:54.047Z", + "semantics": 1, + "result": { + "row": 10, + "from": "briefed", + "to": "in-progress", + "round": null, + "issue": null, + "candidate": null, + "receipt": "ok row10-start rev 7 row 10 briefed→in-progress" + }, + "viewSha": "9fe7ea03b06f4123d96e19f31497045dc3f8987d9fd2a8d527aabd3a43391dd9" + }, + { + "rev": 8, + "op": "darkwing-12-start-1", + "verb": "move", + "args": { + "id": 12, + "to": "in-progress", + "reason": null, + "candidate": null, + "evidence": null, + "issue": null + }, + "by": "darkwing", + "at": "2026-09-27T01:19:33.192Z", + "semantics": 1, + "result": { + "row": 12, + "from": "briefed", + "to": "in-progress", + "round": null, + "issue": null, + "candidate": null, + "receipt": "ok darkwing-12-start-1 rev 8 row 12 briefed→in-progress" + }, + "viewSha": "3de3fb832f58b718da490a230bd5135de8f7b0c6d03aacb6565b2e74683f951a" + }, + { + "rev": 9, + "op": "row10-review-r1", + "verb": "move", + "args": { + "id": 10, + "to": "in-review", + "reason": null, + "candidate": "5efe28ab01c275c41979db2974b422a449dbf1e9", + "evidence": null, + "issue": null + }, + "by": "sage", + "at": "2026-09-27T01:23:20.299Z", + "semantics": 1, + "result": { + "row": 10, + "from": "in-progress", + "to": "in-review", + "round": 1, + "issue": 1508, + "candidate": { + "kind": "commit", + "digest": "5efe28ab01c275c41979db2974b422a449dbf1e9", + "text": null + }, + "receipt": "ok row10-review-r1 rev 9 row 10 in-progress→in-review round 1 on #1508" + }, + "viewSha": "4f7ae5584d499d9f3a00b882808e66574ca3f40f5340d80b15dae13f25bda867" + }, + { + "rev": 10, + "op": "row10-wait-gate-g", + "verb": "move", + "args": { + "id": 10, + "to": "waiting-on-jason", + "reason": null, + "candidate": null, + "evidence": null, + "issue": null + }, + "by": "sage", + "at": "2026-09-27T01:23:20.365Z", + "semantics": 1, + "result": { + "row": 10, + "from": "in-review", + "to": "waiting-on-jason", + "round": null, + "issue": null, + "candidate": null, + "receipt": "ok row10-wait-gate-g rev 10 row 10 in-review→waiting-on-jason" + }, + "viewSha": "1ea954471befe6d1efe3ad82c90e7a969051d878057511844bd1944e5a78030c" + }, + { + "rev": 11, + "op": "row10-note-r1", + "verb": "note", + "args": { + "id": 10, + "text": "source 5efe28ab: AGENTS.md cadence, pointer and recovery rule, six seat CONTEXT files, queue README n3; QUEUE.md header points at the goals review (n2). Gate G verifies it: a seat starts from queue next with no human message" + }, + "by": "sage", + "at": "2026-09-27T01:23:20.429Z", + "semantics": 1, + "result": { + "row": 10, + "field": "note", + "receipt": "ok row10-note-r1 rev 11 row 10 note" + }, + "viewSha": "35be5f3fc9231ee78c1afa2f579e76863a5ad834f41dc0796f540de55b0e0a0b" + }, + { + "rev": 12, + "op": "row16-note-sage-check", + "verb": "note", + "args": { + "id": 16, + "text": "Sage checked 2026-09-27: acceptance items 1 to 5 are met, source landed in af4203ca and d41f81aa and is pushed, and the seats are in daily use under Jason's 2026-09-26 ruling (Sage leads, so the title's Darkwing coordination is superseded). No quote from Jason accepts #1510 itself, so it stays here until he closes it or says to" + }, + "by": "sage", + "at": "2026-09-27T01:23:26.447Z", + "semantics": 1, + "result": { + "row": 16, + "field": "note", + "receipt": "ok row16-note-sage-check rev 12 row 16 note" + }, + "viewSha": "9656335d0fcdde82a0478dea94149afd8dadf819f06e29f458321c0069ea680a" } ] }