Files
stack/agents/darkwing/work/queue-migration-map.md
T
jason.woltjeandClaude Opus 5.5 6ca116b7ba feat(queue): queue as data A2, migration, render and dispatch (#1508)
Filbert approved round 1 (f167b85e). Manifest 782bcb62, 21 files, plus
the QUEUE.md markers and the TOOLS.md section. Lead decision 35.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-26 20:14:09 -05:00

879 lines
35 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Queue migration map (#1508, A2)
Darkwing, 2026-09-27. This is the reviewed input to `queue genesis --map
agents/darkwing/work/queue-migration-map.md`. Genesis reads the one
`json queue-map` block at the end. Everything above it is for review.
Built from `docs/plans/QUEUE.md` blob `c8e3d34e6efcb98070ebf226157ac027811ffa54`
(HEAD c9539baa). If a row in QUEUE.md changes before genesis, the map has to
change with it. `queue-a2/map-check.mjs` lists the table lines that differ
from that blob and any piece or owner that no longer matches.
## What genesis keeps
- Rows 1 to 25 keep their ids. The five parked items become rows 26 to 30,
in table order, with state `parked`, owner `unassigned` and no issue
(plan Q9). `highWater` is 30 and nothing is retired.
- The text between the QUEUE.md markers goes into genesis as `legacyView`,
byte for byte. That covers every row, the parked table, the start message
and the priority paragraph. A shortened note loses nothing, because the
full State text is there.
- The State column becomes `state` plus `note`. Piece and Gate are copied
verbatim. Every text passes A2's rule: no `\` or `<`, piece and gate at
most 300 characters, notes at most 500.
- Each row has one brief, `{path, anchor}`, and genesis pins the blob. Every
anchor occurs once as a heading in HEAD. Done and parked rows keep their
briefs; `verify --current` skips them.
- `createdAt` comes from the log of table changes. Parked items 1, 2, 3 and 5
date from 7c8e530a, the commit that created QUEUE.md (2026-09-13 UTC). Item
4 has no evidence before 2026-09-26, so it is `unknown`.
- `requiredSince` for rows 9 to 13 is 2026-09-13, the log line that made them
required.
- `reviewers` holds seats under `agents/` only. A lane named for a fleet seat
(`rev-code-02`, `orch-01`) stays in the note.
- Genesis gives a claim to each `in-progress`, `in-review` and
`waiting-on-jason` row: 5, 7, 9, 11 and 16.
## Choices Sage should check
1. **Row 7 stays a row.** Plan Q9 retired it, but lead decision 27 made it
Sage's weekly ledger run, with `packages/ledger/README.md` as its brief.
The map keeps it as `in-progress` with Sage's claim, so `queue next sage`
resumes it and Sage records the weekly number with `queue note 7`.
Retiring it would instead need `retired: [7]` and a pointer line under
the markers.
2. **Row 10 keeps owner `coordinator`.** No seat can act as `coordinator`,
so only Jason or Sage can move the row, and its work edits AGENTS.md,
which is Sage's. I recommend `queue assign 10 sage` as the first
operation after genesis, so the change is logged instead of hidden in
the migration.
3. **Rows 10, 12 and 13 have no `after`.** QUEUE.md says "after row 9", but
row 9 stays open until Gate G, and Gate G also verifies row 10, so `after:
9 done` would hold row 10 behind a gate that needs it. A's code is in place
once genesis is committed, and each note says so.
4. **Row 11 is `waiting-on-jason`.** QUEUE.md says the `queue add` refusal
lands with A2. It landed in A1: `add` runs the same brief check genesis
does. Only the gate is left, and the gate is Jason's.
5. **Gate owners.** Jason holds every gate except rows 12 and 13, which the
map gives to Sage. Both are checks the lead can see: a review round with
no new file under `reviews/`, and the ledger run Sage does each Monday.
With Sage as gate owner, J5 lets `in-review` → `done` happen without
Jason.
6. **Row 16 stays open, as `waiting-on-jason`.** Its State doesn't say done.
Lead decision 29's "rows 14 to 25 are done" sits in the #1509 paragraph,
and row 16 is #1510. If #1510 is closed, change the row to `done` before
the map is committed.
7. **`closes`.** Rows 9 to 12 close nothing and row 13 closes #1508, so piece
E won't report #1508 open under a done row 9. This is J6's narrowing, and
this line is its reason. Every other row closes its issues.
8. **Row 5's note** matches QUEUE.md at c9539baa: the CHAT-03 brief is
pinned, and Sage names the source author after A2 lands. When the row
changes before genesis, the note changes with it.
## Row by row
| # | State | Owner; reviewers | Issues | Required | After | Gate owner | Created | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | done | darkwing | #1503 | no | none | jason | 2026-09-13 | Done per lead decision 29. |
| 2 | done | darkwing | #1504 | no | none | jason | 2026-09-13 | Brief: the plan page's Step 3. |
| 3 | done | darkwing | #1505 | no | none | jason | 2026-09-13 | |
| 4 | done | darkwing | #1506 | no | none | jason | 2026-09-13 | |
| 5 | in-progress | dewey; filbert, rocko | #1507 | no | none | jason | 2026-09-13 | Rocko added as reviewer (adversarial lane). The note is shortened; the full State text is in `legacyView`. |
| 6 | done | darkwing; dewey | #1511, #1512 | no | none | jason | 2026-09-13 | Done per lead decision 29. One brief per row, so the plan page's Piece 5; the other two briefs are named in the note. Dewey is the reviewer; Filbert authored the pilot. |
| 7 | in-progress | sage | none | no | none | jason | 2026-09-13 | Kept as a live row, not retired (see question 1). Recurring, so `in-progress` with Sage's claim. |
| 8 | parked | unassigned | none | no | none | jason | 2026-09-13 | Brief: Sage's stub (J9). |
| 9 | in-progress | darkwing; filbert | #1508; closes none | yes, 2026-09-13 | none | jason | 2026-09-13 | No `after`: lead decision 29 took the wait on row 6 off rows 9 to 13. The note is written as of genesis. |
| 10 | briefed | coordinator | #1508; closes none | yes, 2026-09-13 | none | jason | 2026-09-13 | Owner kept as `coordinator` (see question 2). No `after`: see question 3. |
| 11 | waiting-on-jason | darkwing | #1508; closes none | yes, 2026-09-13 | none | jason | 2026-09-13 | Both parts are in A1 already, so only the gate is left (see question 4). |
| 12 | briefed | darkwing | #1508; closes none | yes, 2026-09-13 | none | sage | 2026-09-13 | Gate owner `sage` (see question 5). |
| 13 | briefed | darkwing; filbert | #1508 | yes, 2026-09-13 | none | sage | 2026-09-13 | Closes #1508; rows 9 to 12 close nothing. Gate owner `sage` (question 5). |
| 14 | done | coordinator; filbert | #1509 | no | none | jason | 2026-09-13 | Reviewer lane named Filbert or orch-01; Filbert kept, orch-01 isn't a seat under `agents/`. |
| 15 | done | coordinator | #1509 | no | none | jason | 2026-09-13 | |
| 16 | waiting-on-jason | darkwing; filbert | #1510 | no | none | jason | 2026-09-13 | Kept open as `waiting-on-jason` (see question 6). |
| 17 | done | coordinator | #1509 | no | none | jason | 2026-09-13 | |
| 18 | done | darkwing | #1509 | no | none | jason | 2026-09-13 | The note keeps the coordinator's part. |
| 19 | done | coordinator | #1509 | no | none | jason | 2026-09-13 | |
| 20 | done | coordinator | #1509 | no | none | jason | 2026-09-13 | Done: lead decision 29 closed #1509 with rows 14 to 25 done. |
| 21 | done | coordinator | #1509 | no | none | jason | 2026-09-14 | Done: lead decision 29. `rev-code-02` isn't a seat under `agents/`, so no reviewer. |
| 22 | done | darkwing; filbert | #1503 | no | none | jason | 2026-09-14 | Done: #1503 closed (lead decision 29). |
| 23 | done | coordinator | #1509 | no | none | jason | 2026-09-16 | Done per lead decision 29. |
| 24 | done | coordinator | #1509 | no | none | jason | 2026-09-16 | Done per lead decision 29. |
| 25 | done | coordinator | #1509 | no | none | jason | 2026-09-20 | Done per lead decision 29. |
| 26 | parked | unassigned | none | no | none | jason | 2026-09-13 | Parked item 1. |
| 27 | parked | unassigned | none | no | none | jason | 2026-09-13 | Parked item 2. |
| 28 | parked | unassigned | none | no | none | jason | 2026-09-13 | Parked item 3. |
| 29 | parked | unassigned | none | no | none | jason | unknown | Parked item 4. First committed 2026-09-26 (0f5b7cb9); no earlier evidence, so `unknown`. |
| 30 | parked | unassigned | none | no | none | jason | 2026-09-13 | Parked item 5. |
## Map
```json queue-map
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"note": "done 2026-09-13",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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"
},
"after": [],
"reviewers": [],
"note": "done 2026-09-12",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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)"
},
"after": [],
"reviewers": [],
"note": "done 2026-09-13",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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"
},
"after": [],
"reviewers": [
"filbert",
"rocko"
],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [
"dewey"
],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"note": "parked by current owner direction; no `~/.mosaic` changes during internal bootstrap",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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)"
},
"after": [],
"reviewers": [
"filbert"
],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"note": "AGENTS.md lines done 2026-09-13; the rest starts once genesis is committed",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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)"
},
"after": [],
"reviewers": [],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"note": "starts once genesis is committed; the live posting test needs the per-seat credential file (8.9)",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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)"
},
"after": [],
"reviewers": [
"filbert"
],
"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"
},
{
"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"
},
"after": [],
"reviewers": [
"filbert"
],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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"
},
"after": [],
"reviewers": [
"filbert"
],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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"
},
"after": [],
"reviewers": [],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"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"
},
{
"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"
},
"after": [],
"reviewers": [
"filbert"
],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"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"
},
{
"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)"
},
"after": [],
"reviewers": [],
"note": "#1500 closed on increment 2; Jason has not asked for 3",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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"
},
"after": [],
"reviewers": [],
"note": "Paused for owner alignment",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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"
},
"after": [],
"reviewers": [],
"note": "Deferred by owner 2026-09-03",
"blockedReason": null,
"createdAt": "2026-09-13"
},
{
"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"
},
"after": [],
"reviewers": [],
"note": "Deferred by WEBUI Q1; required history/control/stop now belong to row 5, not this parked item",
"blockedReason": null,
"createdAt": "unknown"
},
{
"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"
},
"after": [],
"reviewers": [],
"note": "Fixed only when a gate needs them",
"blockedReason": null,
"createdAt": "2026-09-13"
}
],
"retired": [],
"highWater": 30
}
```