MC-4223 Live UA/Browser Sign-Off
Run time: 2026-05-26 10:12 SAST
Target: http://100.118.207.3:3001/
Method: live Mission Control in Chromium via Playwright, desktop 1440x1000 and mobile 390x844 with touch events. This was not a DOM/unit-test pass.
Gate prompt used exactly:
Run a real UA/browser sign-off, not a DOM/test sign-off. Use live Mission Control, desktop and mobile, click through every visible link/button in scope, complete the main user flow, verify scroll/touch behavior, check console/network errors, attach screenshots, and explicitly list what was not tested. Do not close the ticket until those pass.
Verdict
FAIL.
The live UI is broadly usable, but the regression gate is not clean: Home chat navigation and New Chat creation throw a reproducible JavaScript page error. Fix ticket created and routed: MC-4232. MC-4119 remains open/waiting.
Screenshots
Desktop evidence:
- Home: home-desktop.png
- Board: board-desktop.png
- Ticket detail: ticket-desktop.png
- Tasks: tasks-desktop.png
- Workbench: workbench-desktop.png
- Settings after safe theme toggle: settings-desktop-after-theme-toggle.png
- New Chat opened: home-desktop-new-chat-opened.png
- New Chat created: home-desktop-new-chat-created.png
- Workbench console panel: workbench-desktop-console-click.png
Mobile evidence:
- Home: home-mobile.png
- Home menu: home-mobile-menu-open.png
- Board: board-mobile.png
- Ticket top: ticket-mobile-top.png
- Ticket detail after touch scroll: ticket-mobile-scroll.png
- Tasks chips: tasks-mobile.png
- Tasks chips after touch horizontal scroll: tasks-mobile-chips.png
- Workbench: workbench-mobile.png
- Workbench console after closing switch overlay: workbench-mobile-console-after-close-overlay.png
Raw interaction log: interaction-results.json
Coverage Notes
Home/cockpit:
- Desktop Home loaded; sidebar/controller/recent chat rail visible.
- Controller row clicked and navigated to `/?thread=1`.
- First recent chat clicked and navigated to `/?thread=323`.
- Recent chat kebab opened without navigation failure.
- New Chat modal opened, title entered, and chat created: `/?thread=324&chat_created=1` with title `MC-4223 UA sign-off smoke 100847`.
- Settings opened; safe appearance setting changed Light -> Auto and stayed usable.
- Board, Tasks, Workbench, Settings, mobile hamburger, and bottom More were clicked.
Board:
- Desktop and mobile ticket cards remain readable; long titles wrap rather than collapsing to useless ellipses.
- Representative card opened a correct ticket URL: `/ticket/4231`.
- Mobile bottom navigation to Board worked.
Ticket detail:
- Desktop and mobile MC-4223 detail loaded with long description readable.
- Mobile touch scroll worked: `scrollY 0 -> 653`.
- Primary actions were visible/reachable; state-changing actions were not submitted.
- Activity/comments area loaded. Comment textarea accepted typed text; it was not submitted from the browser because that form is human-authored. Durable Luci progress comments were posted via mc-coord instead.
Tasks:
- Desktop Tasks loaded; status chips were visible and clickable.
- Mobile Tasks showed explicit overflow cue `›` on filter chips.
- Mobile horizontal touch scroll worked on chip rail: `scrollLeft 0 -> 338`.
- Mobile `Failed` and `All` filters were tapped successfully.
Runtime/workbench/chat surfaces:
- Workbench opened for MC-4223 on desktop/mobile.
- Chat/Raw, Min/Full, Switch, and Console controls were exercised.
- Console button changes the panel in place rather than changing URL; no 404 observed.
Console / Network Notes
Blocking JS error:
- Severity: Major.
- Repro: open Home, click Controller row or first Recent Chats row; also repros after New Chat -> Create chat.
- Actual: browser pageerror:
`Failed to execute 'insertBefore' on 'Node': Identifier 'MC4123_PROVIDERS' has already been declared`
- Stack source: `/static/vendor/htmx.min.js` while processing the htmx response.
- Impact: violates the required clean console gate after a scoped route/interaction. Fix routed as MC-4232.
Non-blocking noise observed:
- `net::ERR_ABORTED` for `/api/v1/stream`, `/api/v1/stream?topics=...`, `/api/v1/tickets?limit=200`, and `/api/v1/tickets/4223/stream` during route changes. These are browser-aborted long-poll/SSE/fetch requests while navigating, not server 4xx/5xx responses.
- Headless Chromium emitted WebGL `GPU stall due to ReadPixels` warnings while screenshots were captured on Workbench; no app failure followed.
No obvious 404s or HTTP 5xx responses were observed in scoped routes.
Issues
1. Major: Home chat htmx navigation re-injects scripts and throws duplicate `MC4123_PROVIDERS` declaration.
- Steps: open http://100.118.207.3:3001/; click Controller row or a Recent Chats row.
- Steps: open http://100.118.207.3:3001/; click New chat; enter a title; click Create chat.
- Expected: thread/chat navigation completes with no page errors.
- Actual: pageerror above is emitted on each path.
- Routed: MC-4232, assigned to Luci, status todo.
2. Minor observation: mobile Workbench top toolbar has tight horizontal overflow; the left `Board` toolbar control can be clipped while bottom nav remains usable. Not the binary blocker, but should be polished after the console-error fix.
Not Tested
- Did not click destructive/state-changing controls: ticket Done/Cancel/Todo, scheduler Run/Enable/Delete/Reap stale runs, runtime Start/Restart/Stop/Switch runtime, or dispatch buttons such as Send to Larry/Ask Tessa/Council.
- Did not send a message into the runtime from New Chat or Workbench, to avoid spawning live work during QA. New Chat creation itself was completed.
- Did not submit a browser ticket comment because the visible form is human-authored; typed-field behavior was verified and Luci progress used mc-coord.
- Did not exhaustively open every ticket card or every scheduler task row; representative rows and all scoped navigation/filter controls were tested.
- Did not test authentication/logout flows; no login/logout surface was present in this live session.