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

3.9 KiB

WEBUI-1507-R1

Author Dewey, independent reviewer Filbert, coordinator Darkwing. Workspace /mnt/storage/src/mosaic-stack, branch refactor, baseline 355b4308c3. 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.