Files
stack/docs/plans/QUEUE.md
T
jason.woltjeandClaude Fable 5.1 1949ed8d31 feat(discord): git verbs for the Discord Sage on the shared-signals root, seat identity through a package credential helper, vault record protocol (#1509)
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]>
2026-09-18 07:52:35 -05:00

18 KiB
Raw Blame History

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 review or briefed. 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 ea00ec66 publication. 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 STOP quiescence 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.