Gate D written; brief for piece 4, the WebUI first screen on the Console design (#1506, #1503)

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
2026-09-12 19:05:44 -05:00
co-authored by Claude Fable 5.1
parent 46ded3fcba
commit b7f8d1cc35
3 changed files with 73 additions and 8 deletions
@@ -238,6 +238,63 @@ ledger's output, not from memory.
- If a number cannot be computed from evidence it prints "unknown", never a
guess.
## Piece 4: WebUI first screen (Console)
Approved by Jason 2026-09-12 ("speed walk to success") after Gate D. Decision
MOSAIC-STACK-D-002: Dewey's design 3, Console
(`agents/dewey/work/wui/mockups/d3-console.html`), is the WebUI starting
point. The board is its first and only screen. Owner: dewey. Dewey opens the
issue and updates `CURRENT.md` when picking it up.
### What it is
`packages/webui`: `node packages/webui/src/cli.mjs serve [--port N]
[--board http://127.0.0.1:7331]`. Loopback only. One page, the Console
layout from the mockup, populated from the control board's `/api/board`
JSON: project tree on the left, dense session table (state, task with its
source tag, active project, workspace, model, registered line, last
activity), inspector drawer on the row with the last assistant text and the
reply box. Actions proxy to the board: `POST /api/seen` and `POST /api/reply`
unchanged in shape. "Simulated" notices from the mockup are gone; every
control either does the board thing or does not exist yet.
- Data: only what `/api/board` already serves. No new scanner, no new
sources, no seat writes. If the mockup shows a field the board does not
have, the field is dropped for this piece and a line goes to
`docs/plans/DEFERRED.md`.
- Style: the mockup's CSS and brand assets as they are, palette and
appearance switches kept if they are already built, otherwise dropped.
- Refresh: same as the board page (its scan on load or refresh); no polling
loop beyond what the board page already does.
- No auth, no accounts, no settings page, no second screen, no router.
### Gate E (yes/no)
Jason works Monday 2026-09-14 from the WebUI and does not open the board's
own page or a terminal to a repo seat to answer "who is waiting on me". Pass
is his say-so at the end of the day, with any exception written as a line in
`DEFERRED.md` with the reason.
### Tests
- Page renders the fixture `/api/board` JSON (the board's own test fixture)
into the table and tree; counts match the fixture.
- Seen and reply proxy to the board with the same body; a fake board on
localhost captures the requests.
- Board unreachable: page says so with the URL, no blank screen.
- Loopback bind only, as the board.
- Dewey's existing mockup verifier (`work/wui/checks/mockups-verify.mjs`)
or its equivalent runs against the served page for contrast and 320px
width.
### Boundaries
- `packages/control-board` changes only if the WebUI needs a field the
scanner already computes but does not serialize; each such change is one
commit with a test, nothing else.
- No fleet sources, no comms changes, no `packages/seat` changes.
- Dewey coordinates with Darkwing before touching any board file.
## How the scanner decides state
The scanner reads the newest pi session log for each agent, plus whether
+13 -4
View File
@@ -50,10 +50,19 @@ Gate C passed 2026-09-12 on 867619dc (logged by Jason at 4f830680):
answered in its own session with no send attempt, and the row showed the
answer on the next scan. #1505 is closed.
Next action: Jason runs Gate D for piece 3, the ledger, under #1506:
`node packages/ledger/src/cli.mjs --since 2026-09-06 --until 2026-09-12`.
Choose one number to move next week and write that sentence with the number
into this file. Do not infer acceptance from the implementation or tests.
Gate D (2026-09-12, Jason's run of the ledger for 2026-09-06 to 2026-09-12):
**18.9 human messages per closed issue.** That is the number to move next
week: every message Jason types to a seat is a nudge the rails did not
absorb. Target for the week of 2026-09-13: under 10, by assignment through
`mosaic seat task` and the board instead of the terminal, then the
orchestrator seat. Companion numbers from the same run, for context only:
8 issues closed, median 2.7 hours open, 1.9 follow-up commits per issue.
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 closes #1506 (Gate D written) and #1504 (registration
shipped, Gate B passed), then holds for piece 5 (orchestrator seat) unless
Jason calls it. #1503 stays open until Jason rules on "who is waiting on me".
`packages/ledger` is implemented: read-only local refactor subjects, one
Gitea issue request, repo seats' user messages, two tables and JSON. Ledger
+3 -4
View File
@@ -55,13 +55,12 @@ at every gate. Started 2026-09-12 during the control board MVP.
## Queue (Jason's order)
1. Ledger (piece 3, in progress, Gate D).
2. WebUI on Dewey's Console design absorbs the board as its first screen
(MOSAIC-STACK-D-002).
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.
4. Fleet launch through `mosaic launch`: the stress test.
## Done
- (none yet)
- Ledger (piece 3, #1506): shipped cd0aa5fb, Gate D written 2026-09-12 (18.9 human messages per closed issue).