diff --git a/docs/plans/2026-09-12_control-board-mvp.md b/docs/plans/2026-09-12_control-board-mvp.md index 59830781..51a35b3b 100644 --- a/docs/plans/2026-09-12_control-board-mvp.md +++ b/docs/plans/2026-09-12_control-board-mvp.md @@ -295,6 +295,69 @@ is his say-so at the end of the day, with any exception written as a line in - No fleet sources, no comms changes, no `packages/seat` changes. - Dewey coordinates with Darkwing before touching any board file. +## Piece 5: darkwing on point (orchestrator behaviour) + +Approved in principle by Jason 2026-09-12 evening ("have darkwing on the +fleet running point"). Starts when Jason sends darkwing the start message, +planned Sunday 2026-09-13. Owner: darkwing. Purpose: move the Gate D number +(18.9 human messages per closed issue) by having a seat do the assigning. + +### What it is + +Mostly behaviour, with one small code change. + +**Code (one commit, with tests):** `mosaic seat task` records who set the +task: a `taskSetBy` field from `MOSAIC_AGENT_NAME`, or `--by NAME`, or +"unknown"; the scanner serializes it and the page shows it next to the task +source. Closes the "set by" line in `DEFERRED.md`. + +**Behaviour, darkwing's loop for every item it runs:** + +1. Read `docs/plans/CURRENT.md` and `docs/plans/DEFERRED.md`. Take the next + queue item Jason has called, or one bounded Open line from DEFERRED that + touches no file another seat is on. Never take two. +2. Open the Gitea issue with the acceptance sentence and the owning seat. +3. Set the owning seat's task with `scripts/mosaic seat task ""`. +4. Send the start message to the seat through `tools/tmux/agent-send.sh` + aimed at the tmux session in the seat's registration (ms-communications + rules apply; a refusal is a finding, not something to route around). +5. Receive the seat's report the same way. Verify: tests run, review by a + seat that did not write the code, acceptance sentence met. +6. Close the issue, move the DEFERRED line to Done with the commit, update + `CURRENT.md`. +7. Report to Jason only at a gate or a block, in darkwing's own session + (the board reads it). No progress narration. + +**What darkwing does not do:** brief new pieces (Jason and the coordinator +do), start a queue item Jason has not called, push anywhere but `refactor`, +touch `~/.mosaic`, or message Jason for routine decisions the plan already +settles (AGENTS.md "Decide and continue"). + +### First assignment under this piece + +Filbert: the DEFERRED line "Relaunched seat shows the old last message": +when a registration's `startedAt` is newer than the session's last activity, +the row shows "relaunched at X, no messages since" instead of the stale +activity. Board test with a fixture registration newer than the log. +Darkwing runs steps 1 to 7 for it without Jason's involvement. + +### Gate F (yes/no) + +Filbert's item goes from a DEFERRED line to a closed issue with Jason having +sent filbert nothing. Evidence: the ledger for 2026-09-13 shows filbert's +Human column at 0 and the issue closed; Jason's only start message that day +is the one to darkwing. + +### Boundaries + +- No new package, no scheduler, no daemon; darkwing runs the loop while its + session is live and stops when it is not. +- No fleet seats, no changes to `tools/tmux/agent-send.sh` or the comms + skill; a refusal from either is reported as a finding. +- `packages/seat` and `packages/control-board` change only for the + `taskSetBy` field. + ## How the scanner decides state The scanner reads the newest pi session log for each agent, plus whether diff --git a/docs/plans/CURRENT.md b/docs/plans/CURRENT.md index 7ac2ac70..e76938ed 100644 --- a/docs/plans/CURRENT.md +++ b/docs/plans/CURRENT.md @@ -60,7 +60,14 @@ orchestrator seat. Companion numbers from the same run, for context only: Next action: piece 4, the WebUI on Dewey's Console design (MOSAIC-STACK-D-002). Brief on the plan page, section "Piece 4: WebUI first screen (Console)". -Owner: dewey. Darkwing closed #1506 (Gate D written, comment 26067) and +Owner: dewey, issue #1507 opened HTTP 201 on 2026-09-13 UTC. Implementation +in `packages/webui`; Darkwing confirmed no source overlap and released tracking +at fab40f25. Filbert is the independent reviewer. Board files stay unchanged; +any needed board edit requires exact ownership coordination first. Next: verify +Console against board fixtures and browser checks, then pin for review and +publish to refactor under Jason's explicit commit/push authority. Gate E remains +Jason's Monday acceptance; tests do not close that gate. +Darkwing closed #1506 (Gate D written, comment 26067) and #1504 (registration shipped, Gate B passed, comment 26069) on 2026-09-13 UTC. Darkwing holds for piece 5 (orchestrator seat) until Jason calls it. #1503 stays open until Jason rules on "who is waiting on me". diff --git a/docs/plans/DEFERRED.md b/docs/plans/DEFERRED.md index e0072241..90d172e1 100644 --- a/docs/plans/DEFERRED.md +++ b/docs/plans/DEFERRED.md @@ -57,8 +57,9 @@ at every gate. Started 2026-09-12 during the control board MVP. 1. WebUI on Dewey's Console design absorbs the board as its first screen (piece 4, MOSAIC-STACK-D-002, Gate E on Monday 2026-09-14). -3. Orchestrator seat: assigns tasks through `mosaic seat task`, closes the - "set by" gap. +3. Darkwing on point (piece 5, briefed on the plan page; starts Sunday + 2026-09-13 on Jason's message; Gate F: filbert's item closes with zero + human messages to filbert). Closes the "set by" gap. 4. Fleet launch through `mosaic launch`: the stress test. ## Done