Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user