Row 24. A writable root that is a git work tree may carry a git object in the binding; the seat then has git_status, git_commit (explicit paths, seat author, Requested-by trailer from the envelope requester, push at once per D6), git_pull (ff-only) and git_push (one branch, never force), plus reserve_id and per-write clone locks under protocol vault. Git children run with no host config and one credential helper, bin/git-credential.mjs, reading the 0600 seat token file named in the binding; the fleet helper serves only the Gitea hosts. Suite 58/58, node 143. rev-code-02 APPROVED round 1 (#1509 comment 26375, tree 82ab962f). Co-Authored-By: Claude Fable 5.1 <[email protected]>
18 KiB
QUEUE — the one task list
Read this first. One row per piece. Nobody needs to read the prose plans to know what is next; the Brief column says which section to open only when you are the owner of that row.
How to find your next thing:
- Jason: the first row whose State starts with
Jason:. - A seat: the first row where Owner is you and State is
in progress,in revieworbriefed. If there is none, you have nothing; say so on the board and stop. - Coordinator (Claude session): update this table at every gate, before anything else is written. CURRENT.md is the narrative log; this table wins if they disagree.
States: queued (no brief yet) → briefed (brief written, not started) →
in progress → in review → Jason: <what he must do> → done. parked
means not before the rows above it and not without Jason's say. required
means it cannot be parked or reordered below queued rows; only Jason moves it.
Brief locations: "plan page" is docs/plans/2026-09-12_control-board-mvp.md.
Gaps found while working go to docs/plans/DEFERRED.md, not here.
Pieces (in order)
| # | Piece | Owner | Issue | State | Gate | Brief |
|---|---|---|---|---|---|---|
| 1 | Control board MVP (scanner + page) | darkwing | #1503 | Jason: rule whether the page answers "who is waiting on me" without a terminal; then close #1503 and mark MOSAIC-STACK-D-001 completed | 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 | Jason: use WebUI Monday and give Gate E ruling; ea00ec66 published, Filbert approved, committed-tree 208/208 |
E: Jason works Monday 2026-09-14 from the WebUI without the terminal | plan page, "Piece 4: WebUI first screen (Console)" |
| 6 | Darkwing on point: darkwing assigns and gates filbert's work (piece 5 on the plan page) | darkwing | none yet | briefed; Jason: send the start message from the board on Sunday 2026-09-13 | F: filbert's item closes with zero human messages from Jason | plan page, "Piece 5: darkwing on point" |
| 7 | Weekly ledger run and rails number | Jason | — | recurring, end of Monday 2026-09-14 | 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 | — | queued; not before row 6 is done | Jason's call | none yet |
| 9 | Queue as data: docs/plans/queue.json, mosaic queue is the only writer |
darkwing; filbert reviews | #1508 | required; starts when row 6 is done, before row 8 | 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; with row 9 | 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 |
| 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 | briefed; assigned to darkwing, not started | a Sage (discord) row on the board shows live, offline and braked correctly, and reply from the board is refused | 2026-09-13_discord-connector-pilot.md 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 |
| 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 | in review: parts 1 and 2 (writes, web fetch and search) built 2026-09-16, suite 52/52, node 128; round 3 pinned for rev-code-02 on #1509 comment 26361 (supersedes rounds 1–2; adds the engine held-prompt fix); part 3 done live 2026-09-17 (SearXNG container on loopback, binding web key, restart; first live turn searched, fetched and wrote vault/Businesses/naming.md); Jason ruled D1–D4 2026-09-16 (SearXNG, Jason and Carmen write, any https host, rev-code-02) | 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-18: built (src/git.mjs, bin/git-credential.mjs, extension params, envelope requester, context paragraph, vault protocol via reserve_id and per-write locks); suite 58/58, node 143; rev-code-02 APPROVED round 1 (#1509 comment 26375, tree 82ab962f); D5 mechanism changed: the fleet helper declines github.com, so the package ships its own credential helper reading the 0600 seat token file; binding change and live check next | 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 |
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 screens beyond the first (launch, observe, stop, transcript, palette) | Needs a new brief after Gate E | DEFERRED.md |
| Open gaps from the MVP work | Fixed only when a gate needs them | DEFERRED.md, "Open" |
Log of table changes
-
2026-09-13 — created; rows 1 to 8 taken from CURRENT.md, DEFERRED.md and the plan page.
-
2026-09-13 — rows 9 to 13 added (#1508): the process itself becomes data with one writer and ledger checks. Jason: "I want this iron-clad." Required, not parked; rule: these rows cannot be moved to parked, only to done.
-
2026-09-13 — dewey: WebUI row advanced to Jason-owned Gate E after Filbert approval, exact committed-tree 208/208 and remote-verified
ea00ec66publication. No other row changed. -
2026-09-13 — rows 9 to 13 now point at the plan page
2026-09-13_queue-as-data.md(pieces A to E, Gate G). -
2026-09-13 — coordinator: row 14 added (Discord connector pilot for Sage on Shared Signals), briefed, unassigned, waiting on Jason for decisions D1-D7. No other row changed.
-
2026-09-13 — coordinator: row 14 moved to in progress (#1509) after Jason ruled Q1-Q27 through ms-grill-me. No other row changed.
-
2026-09-13 — coordinator: row 14 moved to in review; package, suite, wrapper, DISCORD-USER.md draft and README written, offline and existing suites green. No other row changed.
-
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round two findings (26121) fixed, round three requested. No other row changed.
-
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round three finding (26123, stale reclaim race) fixed by failing closed plus
unlock, round four requested. No other row changed. -
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round four finding (26132, unlock restore race) fixed with a
STOPquiescence gate, round five requested. No other row changed. -
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round five findings (26150, boot identity and unlock wording) fixed, round six requested. No other row changed.
-
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round six finding (26158, legacy record and unreadable record must refuse) fixed, round seven requested. No other row changed.
-
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round seven finding (26165, malformed identity strings must refuse) fixed, round eight requested. No other row changed.
-
2026-09-13 — coordinator: row 14 stays in review; rev-code-02 round eight finding (26168, noncanonical start digits must refuse) fixed, round nine requested. No other row changed.
-
2026-09-13 — coordinator: row 14 moved to in pilot; approved 26170, committed
786e379c(no push), check passed, connector running. No other row changed. -
2026-09-13 — coordinator: row 14 done; Gate H passed, Jason ruled the replies read as Sage. Connector stays up; MVP improvements come as new rows. No other row changed.
-
2026-09-13 — coordinator: row 15 added and done (Discord read receipt, Jason's request after the pilot); committed after suites green. No other row changed.
-
2026-09-13 — coordinator: row 15 moved to in verification; committed
93d6b624, connector running the new code, waiting for Jason's live message to show the reaction. No other row changed. -
2026-09-13 — coordinator: row 15 done; live reaction confirmed by Jason and by the turn record. No other row changed.
-
2026-09-13 — coordinator: rows 14–15 pushed on Jason's authorization (788515dc..dc5902aa to origin/refactor). No other row changed.
-
2026-09-13 — coordinator: row 17 added, in verification (Discord service unit, iteration 2 on Jason's "proceed as suggested"). No other row changed.
-
2026-09-13 — coordinator: row 17 done; the Sage connector runs under systemd, kill and brake checks passed live. No other row changed.
-
2026-09-13 — coordinator: row 18 added, briefed; board-side work in darkwing's package, owner for Jason to rule. No other row changed.
-
2026-09-13 — coordinator: rows 17–18 pushed (dc5902aa..90cb31f5 to origin/refactor) under the jarvis git identity on Jason's authorization. No other row changed.
-
2026-09-13 — coordinator: row 18 assigned to darkwing by Jason ("darkwing should build the board row"). Coordinator no longer holds a Discord row in progress. No other row changed.
-
2026-09-13 — coordinator: row 17 operator check passed (Jason: all tests successfully verified, 21:29 UTC). No other row changed.
-
2026-09-13 — coordinator: rows 19 (binding reload) and 20 (per-user channels, Carmen) added on Jason's "proceed in order"; row 19 in progress. No other row changed.
-
2026-09-13 — coordinator: rows 19–20 done (
caaef941, live reload 00:03 UTC, Carmen enrolled); Carmen's first message pending as the operator check. No other row changed. -
2026-09-14 — coordinator: row 21 (read-only tools) briefed on Jason's "let's move to tools"; Carmen's test deferred by Jason; waiting on D1–D3 in the brief. No other row changed.
-
2026-09-14 — coordinator: row 21 rulings in (brief section 7), built and approved by rev-code-02 (26276); suite 48/48, 116 node tests; committed locally, live check next. No other row changed.
-
2026-09-16 — coordinator: row 23 added and briefed (Discord writes and web, Jason: "A + web"); Discord profile Q16 line replaced by Jason's word and Sage restarted. No other row changed.
-
2026-09-16 — coordinator: row 23 part 1 (write_file, edit_file confined to roots marked write: true; extension renamed tools.mjs) built and pinned for rev-code-02 round 1; Discord Sage's stale pi session archived and the service restarted so old Q16 refusals stop repeating.
-
2026-09-16 — coordinator: row 24 (git verbs for the Discord Sage) briefed at Jason's word; row 23 writes enabled live in the private binding ahead of the review verdict, web tools built and under test.
-
2026-09-16 — coordinator: row 23 part 2 (web_fetch, web_search via SearXNG, src/web.mjs) built; engine test busy/settled race fixed in the test; suite 52/52, node 128; round 2 pinned on #1509 comment 26358 for rev-code-02. Row 24 still waits on D5–D7.
-
2026-09-16 — coordinator: row 23 part 3 live (SearXNG container mosaic-searxng on 127.0.0.1:8888, binding web key, restart); Jason's first web turn worked end to end but exposed a live defect: a second message during a turn was sent as a pi follow-up and lost the first answer. Engine now holds it until pi settles. Suite 52/52, node 129; round 3 pinned as #1509 comment 26361; service restarted with the fix. Row 24 rulings D5–D7 recorded.
-
2026-09-17 — coordinator: shared-signals-05 briefed the new id registry and file lock protocol (jetrich/shared-signals 8f0d946); folded into the row 24 brief section 6 (validate before commit, reserve_id tool, per-write clone lock, explicit-path staging). No row changed.
-
2026-09-18 — coordinator: row 23 pushed on Jason's word ("push as well"): refactor 90cb31f5..1685deb4, seven commits, identity jarvis. Row 24 built and under test: four git verbs plus reserve_id, package credential helper (the fleet helper cannot serve github.com), requester in the envelope, explicit-path staging; suite 58/58, node 143; review requested from rev-code-02 on #1509.