Files
stack/docs/plans/reviews/2026-09-13_webui-review-request.md
T

72 lines
3.9 KiB
Markdown

# WEBUI-1507-R1
Author Dewey, independent reviewer Filbert, coordinator Darkwing.
Workspace `/mnt/storage/src/mosaic-stack`, branch `refactor`, baseline
355b4308c31c4bd500a844787eb1461f98dd2be3. Jason authorized issue-first,
coordination, commit and push for plan piece 4. Issue #1507 is open; Gate E
remains Jason-owned Monday 2026-09-14. No user acceptance is claimed.
## Candidate
All and only files under `packages/webui/`, pinned in
`webui-1507/manifest.sha256`. Manifest SHA-256:
`509f20e53292d5731c866d84c73cfaf539a89104b38b12a43260075ee7c3cb4d`.
No board files, seat files, comms, scanner, root package or fleet changes.
Darkwing confirmed ownership and named you reviewer, transport rc 0 followed
by his acknowledgement in this session. He released CURRENT and SESSIONS at
fab40f25. Concurrent planning commits f80404f5/355b4308 preserved the intake
status, with the shared-checkout hazard explicitly recorded in DEFERRED.
Original uncommitted WUI drafts, skills and other owners' files are excluded.
Review for exact brief conformance, proxy boundary/refusals, draft and focus
behavior, same-origin/loopback safety, rendering and maintainability. Reproduce
checks and return APPROVED or concrete findings in
`docs/plans/reviews/2026-09-13_webui-verdict.md`, then notify Dewey via
agent-send. Do not edit source or publish. No real board scans or real-seat
messages are needed for this review.
## Evidence
- `node --test packages/webui/tests/`: 6/6, including two Chromium browser tests.
- Clean baseline-plus-candidate copy at `/tmp/webui-1507-clean-8KGiHN`:
`node --test packages/webui/tests/ packages/control-board/tests/
packages/seat/tests/ packages/ledger/tests/ packages/mosaic/tests/`: 208/208.
Output: `webui-1507/clean-tests.txt`.
- Browser checks use the real board scanner/server with temporary fixtures,
including registered, working, waiting, error and offline rows. Only the
board transport is stubbed. Exact counts and Seen/Reply round trips pass.
- Browser keyboard, draft/caret, failed receipt, concurrent send exclusion,
empty/loading/malformed/unreachable, stale registration, hostile/long text
and denied localStorage cases pass. No real messages sent.
- Rendered contrast across ten palettes and three modes: 330 samples pass,
lowest 4.504658476260286:1. Five layout widths 320 through 2560px pass.
- Screenshots in `webui-1507/`: Harbor light page at 320/1440 and Grove dark
inspector at 320/1440. Dewey inspected all but the Harbor 320 screenshot
before this request; that screenshot remains available to inspect.
- CLI argument, upstream redirect, exact POST bytes/status, bad JSON/content
type/size, hostile Host/Origin and asset allowlist cases pass.
- No root CI workflow exists. No task/release/live fleet tests, deployment or
owner acceptance is claimed. Direct refactor publication is authorized.
## Corrections during author verification
The first browser test used a wrongly quoted CSS selector; corrected the test.
The Host test initially used fetch, which did not transmit the overridden Host;
replaced that probe with node:http and verified rejection. The first clean-tree
run exposed a loading-fixture race, ending the held response before the request
arrived; an explicit request promise fixed it, then 208/208 passed. These were
test defects, not waived failures.
## Scope choices and remaining gate
The left project filter uses actual board project names and counts, not mockup
workspace registrations. Dense table fields and inspector detail come only from
the board. Unsupported controller/generation/config/turns/activity and non-board
controls are omitted and listed in DEFERRED. CSS/brand/fonts are copied unchanged;
`live.css` supplies page adaptations. Appearance selectors remain on the one page.
Gate E requires Jason's Monday workday and end-of-day ruling. README gives the
startup commands, test steps and rollback to the unchanged board. Keep #1507
open until acceptance; no artificial issue closure from test results.