UI Interview - V2 Card Mosaic
Alignment Status: confirmed · Tier: prototype · Category: product-design · Skill: ui-interview · Confirmed: 2026-06-29
Summary. This is the confirmed alignment page for the approved V2 Card Mosaic UI branch under monitoring-start. The two-round live UI interview, scoped mockup, and final compiled gate YAML have been consumed.
Canonical artifacts written: design/ui-v2-card-mosaic.md, design/ui-v2-card-mosaic-interview.md, and the V2 decision metadata in design/flow-tree-personal-workstation.yaml.
Alignment Confirmed
- alignment_status
- confirmed
- Approval source
- Compiled response YAML submitted 2026-06-29 with
approval_status: ready-for-agent-review,required_gate_status: complete, all six required gates answered, and no unanswered required questions. - Decision
- approve - V2 Card Mosaic is a valid UI experiment/control branch.
- Confirmed artifacts
design/ui-v2-card-mosaic.md;design/ui-v2-card-mosaic-interview.md;design/flow-tree-personal-workstation.yaml.- Archive record
- Pre-confirmation page and working artifacts archived under
docs/history/archive/2026-06-29/134241/. - Downstream route
- Continue with the next UI branch/variation review; downstream prototype remains gated.
This page is current for the completed alignment cycle. It is finished but amendable: later research or design changes must archive this confirmed page first and highlight what changed.
Interview Stage
Invocation: /ui-interview v2-card-mosaic. Mode: full UI branch review, not requirements-only. Interview provenance: live-ui-interview.
The stage-zero interrogation loop completed in two HTML rounds. Round 1 confirmed the UI assumptions manifest and accepted the recommended defaults; Round 2 passed the coverage checkpoint and added the user aesthetic directive: polish, minimalism, as little text as possible, icon buttons where possible with text tooltips.
Confirmed action: the branch decision is recorded as approved. The next workflow step is another UI branch/variation review, not downstream prototype work.
Source Evidence
| Source | Decision-relevant role | Confidence |
|---|---|---|
design/ux-variations-monitoring-start/v2-card-mosaic.md | Selected UX variation thesis, screens in scope, axes, layout and component expectations. | High |
design/flow-tree-personal-workstation.yaml | Design-tree manifest identifying v2-card-mosaic as recommended next UI interview under monitoring-start. | High |
design/user-flow-personal-workstation.md | Upstream screen inventory and happy path for S3 board, S4 launch, and folded S5/S6 detail. | High |
design/_working/ux-variations-monitoring-start-brief.md | Confirmed reframe: two-layer surface, folded tool-adaptive detail, all-web PWA. | High |
interrogation/ui-interview-r1-v2-card-mosaic.html and research/_working/interrogation-ui-interview-r1.yaml | Round 1 confirmed assumptions and accepted open-item recommendations, with the scope correction to build just V2. | High |
interrogation/ui-interview-r2-v2-card-mosaic.html and research/_working/interrogation-ui-interview-r2.yaml | Round 2 coverage checkpoint passed and supplied the minimal-polish directive. | High |
research/positioning.md, research/journey-map.md, research/icp.md, research/concept-brief-gblock-party-personal.md | Product and persona context for the Agent Conductor personal workstation. | Medium-high |
Confirmed Assumptions & Resolved Open Items
Every stage-zero assumption in Round 1 was confirmed except E2, which was corrected to build just this variation. The accepted open-item recommendations fixed card dimensions, stdout preview line count, side rail collapse, filter affordance, and mobile terminal ergonomics. Round 2 confirmed that coverage was complete.
- Scope: S3 Agent Board, S4 Start Agent modal, folded S5/S6 Agent Detail only.
- Branch role: baseline/control branch for the broader five-variation set.
- Detail model: one folded tool-adaptive detail route; no Mode A/B user toggle.
- Navigation: board at
/; detail at/agents/:id; modal launch stays in place. - Visual directive: polished, minimal, icon-led chrome with tooltips; keep card information density intact.
Interactive V2 Mockup
Branch-contract preview. Fixture data and simulated terminal output are prototype-only; the layout, controls, detail containment, and approval behavior reflect the V2 branch contract. Use the demo strip to switch board/detail/API views, empty state, connection banner, and responsive widths.
git push origin auth-refactor — this writes to the remote.Start Agent
Approved UI Packet
The approved V2 UI packet is rendered below as structured HTML. Its behavior language is the branch-level contract unless explicitly marked as fixture-only; the canonical packet now lives at design/ui-v2-card-mosaic.md.
UI Interview — V2 Card Mosaic (approved UI branch packet)
Approved canonical UI branch packet. Finalized from this alignment page after final compiled YAML approval on 2026-06-29. Fixture data and simulated terminal output in the reviewed mockup remain prototype-only. Confirmed artifacts:design/ui-v2-card-mosaic.md,design/ui-v2-card-mosaic-interview.md, anddesign/flow-tree-personal-workstation.yaml.
0. Source Evidence
| # | Source | What it provides | Confidence |
|---|---|---|---|
| E1 | design/ux-variations-monitoring-start/v2-card-mosaic.md | The selected UX variation spec — thesis, screen scope, axes, per-screen layout, components, risks, prototype scope. Primary input. | High (canonical, approved-as-proposed) |
| E2 | design/flow-tree-personal-workstation.yaml | Flow-tree manifest: branch monitoring-start is in-progress; V2 now has approved UI review/experiment metadata; recommended_next_ui_interview: v1-operator-console; sibling variations v1/v3/v4/v5; open questions. | High |
| E3 | design/user-flow-personal-workstation.md | Upstream flow map: S3 board / S4 modal / S5/S6 detail; happy path steps 3–6 + Path C; failure & recovery table; server-canonical state. | High |
| E4 | design/_working/ux-variations-monitoring-start-brief.md | The confirmed reframe (folded tool-adaptive detail; two-layer surface; all-web PWA) load-bearing across all variations. | High |
| E5 | interrogation/ui-interview-r1-v2-card-mosaic.html + research/_working/interrogation-ui-interview-r1.yaml | Round-1 assumptions manifest (A1–E2) + open items (O1–O5), all confirmed / recommendation-accepted; E2 corrected to "build just this variation." | High (user-confirmed) |
| E6 | interrogation/ui-interview-r2-v2-card-mosaic.html + research/_working/interrogation-ui-interview-r2.yaml | Round-2 coverage checkpoint: gate pass; scope re-confirmed (build just V2); coverage confirm-complete; aesthetic directive OF1. | High (user-confirmed) |
| E7 | research/positioning.md, research/journey-map.md, research/icp.md, research/concept-brief-gblock-party-personal.md, research/competitive-analysis.md | Product/persona/competitive context (Agent Conductor persona; Vercel/Railway/Render/CI dashboard lineage as reference feel). | Medium-High |
| E8 | Final compiled alignment YAML, 2026-06-29 | Gates A-F complete; V2 mockup approved as a valid control branch; canonical file paths and manifest update approved; route confirmed to the next UI branch/variation review while downstream prototype remains gated. | High (user-approved) |
Stage-1 research note: No design/*/design-inspirations-.md artifact exists. Reference feel is supplied by the V2 spec itself (Vercel / Railway / Render / CI dashboard lineage) and the competitive analysis; live web inspiration research was not required for this baseline/control branch. Research folded into design.
1. Confirmed UI Assumptions Manifest (stage 0, round 1 — all confirmed)
| ID | Source | Assumption | Decision |
|---|---|---|---|
| A1 | artifact | V2 is the baseline / control of the 5-variation set; tracks the flow-map most literally; "boringly competent" is the goal; does not innovate on the four variant axes. | Confirm |
| A2 | spec | Screens in scope = exactly three: S3 Agent Board, S4 Start Agent (modal), folded S5/S6 Agent Detail. Flow = Happy Path steps 3–6 + Path C "Parallel Sprint." S9/S8/S10 linked but not designed in depth. | Confirm |
| A3 | artifact | The four axes are fixed at the flow-map default and NOT reopened here: responsive card grid · full-page detail route · modal launch · co-equal responsive. Axis changes route back to /ux-variations. | Confirm |
| A4 | artifact + brief | Detail is folded into one tool-adaptive route: terminal-primary (xterm.js/WebSocket) for CLI tools, structured-primary for API-native. No Mode A/B toggle. Mode C / IDE out of scope. | Confirm |
| A5 | brief + spec | Single-user personal workstation: sharing, collaboration, permissions, multi-tenant are N/A; no such UI is designed. Only "handoff" is the same user across their own devices (server-canonical state). | Confirm |
| B1 | artifact | Route map: / board (hub) · /agents/:id folded detail. S4 modal + S8 recap are overlays/interstitials, not routes. Deep links resolve to a route, fall back to board. Browser back first-class. | Confirm |
| B2 | artifact | Whole card is the click target → full-page detail; board unmounts (V2's defining choice + main risk). Back to Board re-reads server-canonical state. Launch (modal) never navigates away. | Confirm |
| B3 | artifact | Persistent header: app name · approval-queue badge · Start Agent · QR/"Open on Mobile" · settings gear. Default sort error > waiting > running > idle; waiting re-sorts toward top. | Confirm |
| C1 | artifact | Agent Card stacks: (1) name + status badge; (2) tool · repo (· branch); (3) elapsed · tokens; (4) live stdout preview (mono, auto-scroll, fade-truncate) — the signature region; (5) conditional error/completion strip. | Confirm |
| C2 | artifact | Density comfortable, not dense — large, well-spaced cards. Grid 3 col >1024 · 2 col ≤1024 · 1 col ≤640; columns capped at very large widths. Accepted tradeoff: ~12 agents scroll. | Confirm |
| C3 | artifact | Color reserved almost entirely for status (green/amber/red/grey); chrome grayscale; accent #4dabf7 only for primary CTA + links. Dark house palette; terminal bg darker than card. | Confirm |
| D1 | artifact | State coverage shown: card states (starting/running/waiting-pulse/error/idle/completed + hover/focus); board states (empty, connection-lost banner); modal states (loading skeleton, required-field markers, submit-time error highlights, transient launching spinner, inline error/tool-unavailable). | Confirm |
| D2 | artifact + inferred | Accessibility baseline-by-default: logical keyboard order & focus mgmt; ≥44px mobile tap targets; colorblind-safe status (badge carries shape/label, not color alone); reduced-motion respected. | Confirm |
| E1 | artifact | Prototype scope = S3 board (6–8 mixed-state cards + empty + connection-lost) · S4 modal end-to-end (incl. tool-unavailable) · folded detail both renderings (CLI xterm + API structured) · 3-breakpoint responsive proof · approval round-trip. | Confirm |
| E2 | prompt + gate | Build order corrected: UI-interview FIRST (this mockup + approve/reject/retry), and per the user's correction build just this variation (V2) in this run — do not fan out to all five here. Downstream /prototype, /uat, /consolidate stay gated behind V2 approval. | Correct → build just V2 |
2. Resolved Open Items (stage 0, round 1 — recommendations accepted)
| ID | Question | Resolution (accepted) |
|---|---|---|
| O1 | Card dimensions & stdout-preview line count | ~220–280px tall desktop; 4-line stdout preview (range 3–5); monospace ~12px; fade-truncated at bottom. |
| O2 | Detail side-rail width & collapse | ~24% width desktop (range 20–30%); collapsible on tablet; collapses below the primary region at ≤640px (terminal/stream full-width on phone). |
| O3 | Light filtering affordance | A single optional chip row (status filter + repo filter) only. Heavy/faceted filtering is V1's territory; V2 leans on big legible cards + sort. |
| O4 | Mobile terminal ergonomics | Phone CLI terminal is read-mostly with hint "Heavy typing? Open on desktop →"; structured (API-native) detail stays fully usable on phone. |
| O5 | Free floor | "All looks good, this v2 mockup will calibrate how I deal with all the other variations." (Reference feel = Vercel/Railway/Render/CI dashboards per spec; accepted.) |
2b. Round-2 Aesthetic Directive (coverage checkpoint, OF1)
OF1 (user, verbatim): "Polish, minimalism, as little text as possible, icon buttons where possible with text tooltips."
How applied: icon buttons with title/aria-label tooltips replace text buttons wherever the action is unambiguous (header QR/settings, detail stop/restart/back, card retry, approval verbs); chrome copy is minimized so status badges + live stdout carry the signal; generous whitespace; calm, restrained motion; premium, non-generic finish. The one always-labeled action is the primary Start Agent CTA. This directive refines — does not override — the V2 spec's "comfortable, legible, boringly competent" tone: minimalism here means less chrome text, not less information per card.
3. Parent Flow, Branch Role & Coordination
- Parent user-flow branch:
monitoring-start— "Board Monitoring & One-Click Start" (flow paths:
happy-path, C; screens S3, S4, S5, S6).
- Selected UX variation:
v2-card-mosaic— the baseline/control. Takes the flow-map-native
position on all four axes (board=card grid · connection=full-page route · launch=modal · posture=co-equal responsive).
- Touched sibling flows (linked, not designed here):
recovery(Path D — error card → detail
remediation), approval (Path B — push-triggered approval; V2 surfaces the global queue badge/preview + focused-agent inline approval), diff-review (S9 — "Review diffs →" handoff), device-handoff (QR / async recap S8), settings (S10 — credential/tool fixes link out from card/modal).
- Sibling UX variations this control is measured against: v1-operator-console, v3-kanban-pipeline,
v4-command-first, v5-glanceable-stream. V2 deliberately introduces the fewest net-new concepts so the others' single-axis deviations have a measuring stick.
- Shared (not net-new) cost: the folded tool-adaptive detail (xterm.js/WebSocket + structured
stream) and live stdout previews are shared across all five variations.
4. Page Inventory & Route Map
| Screen | Route / surface | Purpose | Success condition |
|---|---|---|---|
| S3 Agent Board | / (route, home/hub) | Glance the fleet; answer "what is each agent doing?" without drill-in; launch new work. | User reads fleet status + reaches what needs them (sorted top) at a glance. |
| S4 Start Agent | modal overlay over current view | Launch a new agent (repo + tool + prompt). | A new starting→running card appears; launch never costs the user their place. |
| S5/S6 Folded Detail | /agents/:id (route) | Deep work on one agent: live terminal/stream + inline approval + prompt injection. | User can monitor, approve, and steer one agent, then return losslessly. |
| S8 Async Recap | interstitial over board (stub-linked) | Long-absence catch-up timeline. | Out of deep scope; linked. |
| S9 Diff Review | route (stub-linked) | Review completed work diffs / ship. | Out of deep scope; "Review diffs →" handoff. |
| S10 Settings | /settings (stub-linked) | Tool/key/credential management. | Out of deep scope; linked from card/modal failure paths. |
Overlays/interstitials (S4 modal, S8 recap) stack over whatever route is active; they are not routes. Deep links resolve directly to /agents/:id, falling back to /.
5. Global Shell Rules
- Persistent header (~56–64px, sticky, full width): left = app name/logo (minimal). Right cluster
(icon buttons + tooltips per OF1): approval-queue badge (count), QR / "Open on Mobile", settings gear, and the primary Start Agent CTA (accent; the one always-labeled action).
- Connection banner (conditional, under header): "Reconnecting to workspace…" with exponential
backoff retry; cards freeze at last-known state; Start/Stop disabled until reconnect.
- Optional chip row (O3): single row — status filter chips + repo filter chip. Light only.
- Detail top bar replaces the board header on
/agents/:id: Back to Board (chevron icon) · agent
identity · stop/restart icon controls.
6. Page-by-Page Anatomy
S3 — Agent Board (mosaic)
- Header (above) → conditional connection banner → conditional chip row → mosaic (fills rest).
- Grid: 3 col >1024px · 2 col ≤1024px · 1 col ≤640px, generous gutters, columns capped (~3–4) at
very large widths so cards stay readable.
- Empty state replaces the mosaic: centered minimal glyph + "Start your first agent" + single
prominent Start Agent CTA + muted quick-start link + muted "Open settings." Approval/diff hidden.
Agent Card (canonical component; vary by state)
Regions top→bottom (~220–280px tall desktop):
- Top row: agent name (left) + status badge (right; colorblind-safe = shape/icon + short label, not color alone).
- Meta row: tool · repo (· branch) — small/muted.
- Metrics row: elapsed · token usage — small/muted, right-aligned.
- Live stdout preview: ~4 lines (range 3–5), monospace ~12px, auto-scrolling tail, fade-truncated at bottom. V2's signature; best-effort raw tail, not a structured promise.
- Conditional strip: one-line error summary (error) or "completed — Review diffs →" (completed).
- Whole card = click target →
/agents/:id. Hover = subtle lift/accent. Left-edge accent by status.
Waiting cards pulse gently (reduced-motion-respecting). Sort: error > waiting > running > idle.
S4 — Start Agent (modal overlay)
- Backdrop ~50% scrim, click-to-cancel. Centered ~520px desktop; near-full-width bottom sheet on mobile.
- Title "Start Agent." Fields: Repo picker (dropdown, GitHub-OAuth-populated, skeleton while
loading) · Tool selector (dropdown) · Prompt (textarea, tallest, ~4–6 rows) · "More options" toggle → optional Branch field.
- Footer: Start Agent (primary accent, right; validates required repo/tool/prompt on submit and highlights missing fields) · Cancel
(secondary, left). Inline error region above footer.
- States: loading skeleton · required-field markers · submit-time error highlights · transient launching spinner ("Starting agent…", fields
disabled briefly; success closes the modal and shows a starting card; a permanent spinner is a bug) · inline launch error + Retry · tool-unavailable warning + "Install tool" link (→ S10), Start disabled.
S5/S6 — Folded Agent Detail (/agents/:id)
- Top bar: Back to Board (chevron icon, left) · agent name · tool · repo · status badge · elapsed
(center) · stop / restart icon controls (right; destructive → confirm).
- Primary region (bounded to the active detail viewport):
- CLI tools → terminal-primary: large xterm.js terminal (~75–80% desktop), darker console bg,
live interactive stream. Long terminal history scrolls inside the terminal body only; the rendered terminal shell, full detail route, top bar, side rail, inline approval, and prompt controls stay inside the detail viewport. Switching between reviewed approvals resets detail stream and scroll state so stale terminal output cannot push the next detail view.
Error terminal semantics: for a failed CLI agent, the terminal view is the preserved session transcript and error output up to the failure, not decorative window dressing and not a replacement summary that discards prior history. The reviewed mockup uses representative fixture output only because it has no real agent session buffer.
- API-native → structured-primary: parsed activity stream (steps, progress, file-change list)
in the same footprint. Structured progress scrolls internally and must not push inline approval or prompt controls out of reach.
- Side rail (right ~24% desktop — O2): global approval-queue count, previewed next item, Approve shown / Review shown actions, Triage all approvals stub, and file-change summary.
Collapsible on tablet; collapses below the primary region at ≤640px.
- Inline approval card (when waiting): Approve / Reject / Modify / Defer — in-flow (overlay/badge
over terminal for CLI; inline in stream for structured). Approval actions stay reachable after Review shown switches between queued approvals.
- Footer: prompt-injection textarea + send (both renderings).
- Mobile: CLI terminal remains viewport-contained and read-mostly with "Heavy typing? Open on desktop →" hint (O4);
structured detail fully usable on phone.
7. Component Inventory
Agent Card · Status Badge (error/waiting/running/idle/starting/completed; drives color, sort, pulse; colorblind-safe) · Live stdout Preview · Start Agent button (header) + Start Agent modal (repo/tool/ prompt/branch/Start/Cancel) · Approval-queue badge (header) + global queue preview/actions (rail) + focused-agent inline approval card (detail) · xterm.js terminal (CLI) / parsed activity stream (API) · prompt-injection textarea · stop/restart/retry controls · connection/recovery banner + reconnecting overlay · Back to Board control · QR / Open-on-Mobile + PWA install prompt · Async Recap interstitial (stub) · optional status/repo filter chips.
8. Control & Link Inventory (behavior)
| Control | Behavior |
|---|---|
| Start Agent (header / empty) | Opens S4 modal over current view; never navigates. Disabled only on connection loss. |
| Start Agent (modal footer) | Fires launch only after repo+tool+prompt validate; incomplete submit highlights missing required fields; spinner + fields disable briefly during launch; success → modal closes, starting card drops in, then transitions to running; failure → inline error + Retry. |
| Cancel (modal) | Closes modal, no side effects. |
| Agent Card (whole) | Navigates to /agents/:id. Hover lift/accent. |
| "Review diffs →" (completion strip) | Routes to S9 (linked). |
| Retry (error strip / detail) | Re-launches with same prompt; card → starting. |
| Back to Board (detail) | Navigates to /; re-reads live state. |
| Approve / Reject / Modify / Defer / Approve shown | Inline actions target only the focused detail agent; rail approval targets only the previewed global queue item. Reject is destructive → confirm. |
| Approval-queue badge / Review shown | Reviews the shown global queue item with fresh detail timers and scroll state; disabled when the approval queue is empty. |
| Triage all approvals | Stub route to the future approval branch S7 Approval Triage / Approval Inbox. |
| Settings gear / QR / Install-tool link | → S10 / QR overlay / S10 (remembering modal selection). |
| Browser back | First-class; back from detail → board. |
Destructive/irreversible actions (stop, reject) get a confirmation affordance; launching and approving do not (happy path, reversible enough).
9. Layout, Density, Hierarchy & Responsive
- Density: comfortable, not dense (deliberate tradeoff — buys per-agent glanceability + co-equal
touch usability, costs fleet density). Card ~220–280px tall; in-card controls ≥44px on mobile.
- Hierarchy (card): status badge + name (primary) → stdout preview (secondary) → meta/metrics
(tertiary, muted). Color reserved for status; rest grayscale.
- Board hierarchy: sort + pulse + red badges pull the eye; header approval badge is the single
global alarm.
- Detail hierarchy: primary region (terminal/stream) dominates; chrome quiet.
- Type scale: name ~15–16px; meta/metrics ~12–13px muted; stdout ~12px mono.
- Color: dark house palette `--bg:#1a1a2e; --card:#16213e; --border:#2a2a4a; --accent:#4dabf7;
--text:#e0e0e0; --muted:#8b8fa3`; status green/amber/red/grey on top; terminal bg darker than card.
- Responsive (3 breakpoints): Mobile ≤640 = 1-col stack, header condenses (Start may be sticky FAB
/ full-width), modal = full-screen sheet, detail rail collapses below, CLI terminal history scrolls inside the terminal body and remains read-mostly. Tablet ≤1024 = 2-col, full card richness, modal ~480–520px, rail visible ~30% (collapsible). Desktop >1024 = 3-col generous gutters, modal ~520–560px, rail persistent ~24%, terminal ~75–80%. Columns capped at very large widths. No breakpoint is "the real one" — co-equal posture.
10. Visual Tone
Familiar, trustworthy, boringly competent — a polished deploy/CI dashboard (Vercel/Railway/Render lineage) for instant fluency. Dark palette; calm grayscale chrome with status color as the only loud element; soft card elevation; restrained motion (fade-in on launch, gentle waiting pulse, smooth stdout scroll — no gratuitous animation). Terminal reads as a real console. Refined per OF1 toward icon-led, minimal-text chrome.
11. Interaction States (coverage)
Card: starting · running (streaming) · waiting (pulse, sorted top) · error (red badge + summary + re-sort to top) · idle · completed (Review diffs →) · hover · focus. Board: default · empty · connection-lost banner. Modal: loading skeleton · required-field markers · submit-time validation errors · transient launching spinner · success close/card insertion · inline error · tool-unavailable. Detail: streaming · waiting/inline-approval · reconnecting overlay · stop/restart confirm · mobile read-mostly.
12. Accessibility Requirements (baseline, not optional)
Logical keyboard order + focus management; visible focus rings; ≥44px mobile tap targets; colorblind- safe status (badge = shape/icon + label, not color alone); prefers-reduced-motion disables pulse + auto-scroll; aria-labels + title tooltips on every icon button; correct button/link semantics; the whole-card click target also keyboard-activatable.
13. Prototype-First Section
- First clickable journey: land on S3 board → click Start Agent → fill modal → watch a starting card become running with live stdout → click a waiting card → approve in detail → Back to Board.
- Experiment route map (this run): build just V2 (per E2 correction). After V2 approval, continue with the next UI branch/variation review; downstream prototype work remains gated until UI branch decisions are complete enough for build-plan synthesis.
- Fake / fixture data: agent list, stdout streams, token/elapsed metrics, repo/tool lists, approval prompts — all fixture/in-memory for the mockup. In production, detail terminal output must come from the actual agent session buffer, including the transcript leading into any error.
- Visually mocked, not implemented: WebSocket live state, simulated xterm.js-over-tunnel terminal output, Web Push, GitHub OAuth, model-key auth, server-canonical persistence, QR deep-link auth.
- Deferred production infra: xterm.js sub-100ms keystroke echo over tunnel; Multica-style stdout-parsing generality; iOS Safari Web Push reliability; agent resource isolation at 5-12 concurrent; BYO-client connectivity.
14. Risks & Failure Modes
- Cards waste space at scale (~12 agents scroll; no single-screen overview) — mitigated by column cap +
sort-to-top, ceiling is real (this is why V1's dense table exists).
- Route-switch drops board context (detail unmounts the board) — mitigated by fast back + lossless
server state + deep links; round-trip cost inherent to V2.
- stdout-preview reliability bounded by stdout-parsing open question — treat as best-effort tail.
- Terminal latency in folded CLI detail unproven — phone read-mostly + desktop handoff.
- "Generic" risk — being the familiar control, may underwhelm a power user (loses by being merely fine).
- Modal launch friction at high volume — mitigate with remembered last repo/tool defaults.
- No fleet-bottleneck spatiality (can't see a pileup as a column like V3) — inferred from badge + sort.
15. Non-Goals
Multi-user sharing / collaboration / permissions (single-user); Mode A/B user toggle (folding is tool-driven); Mode C / IDE (code-server); heavy/faceted filtering (V1's job); in-depth S8/S9/S10 design (linked); reopening the four fixed axes (route to /ux-variations).
16. Implementation Notes
Lowest build complexity of the five (baseline): standard responsive CSS-grid of card components fed by one WebSocket state stream; plain routing (/, /agents/:id) + modal + interstitial; reuses shared stack + design system. Owns only its grid layout, card component, and modal. The two non-trivial pieces (folded tool-adaptive detail; live stdout previews) are shared across all five variations, not net-new relative to the set.
17. Open Questions Carried Forward (not blockers)
Terminal latency over tunnel (Open Q #1); stdout-parsing generality (Open Q #2); iOS Safari push reliability (Open Q #3); Mode C ROI (Open Q #4); resource isolation at 5–12 (Open Q #5); BYO connectivity (Open Q #6). These are evaluation criteria for /uat, not resolved here.
18. Build Screen Batch Plan
Downstream prototype work remains gated, but this approved UI packet provides the ordered visual-screen batch slice for $build-ui-screens when the prototype phase is later authorized.
| Batch | Flow step / surface | Minimum UI target | Acceptance check |
|---|---|---|---|
| B1 | S3 Agent Board / populated return state | Sticky header, status/filter chip row, mixed-state responsive card mosaic, approval badge, connection banner state available. | User can scan error/waiting/running/idle/completed cards and identify the next blocker without opening detail. |
| B2 | S4 Start Agent modal | Start Agent opens over the board, validates repo/tool/prompt, shows required-field errors, tool-unavailable warning, launching spinner, and cancel path. | Empty submit explains blockers; valid submit inserts a starting card without losing board context. |
| B3 | S3 launch progression | New starting card appears, then transitions to running with live stdout preview and sort/filter behavior intact. | First-agent activation reads as "the agent is now working" from the board alone. |
| B4 | S5/S6 CLI detail | Full-page detail route with bounded terminal-primary region, preserved terminal transcript, inline approval card, prompt injection, side rail queue preview, and Back to Board. | Long output scrolls inside the terminal; approval controls stay reachable; Back to Board returns to the mosaic. |
| B5 | S5/S6 API-native detail | Structured activity stream/progress/file list in the same detail footprint with inline approval and prompt controls. | API detail stays viewport-contained and preserves approval reachability after Review shown. |
| B6 | Recovery / approval edge states | Error card retry, global Approve shown / Review shown, empty approval queue state, reduced-motion behavior, mobile rail collapse/read-mostly hint. | Focused approval and global queue actions target different items correctly; mobile and reduced-motion modes remain usable. |
19. Final Branch Decision
Decision: approve — V2 Card Mosaic is a valid UI experiment/control branch. Advance after canonical write.
Decision source: final compiled response YAML submitted 2026-06-29 with approval_status: ready-for-agent-review, required_gate_status: complete, and no unanswered required questions.
Route: continue with the next UI branch/variation review; downstream prototype remains gated.
20. Canonical File Destinations
design/ui-v2-card-mosaic.md— approved UI branch packet.design/ui-v2-card-mosaic-interview.md— interview log and branch decision record.design/flow-tree-personal-workstation.yaml— V2ui_reviews[],ui_experiments[], anddecisions[]records withdecision_id: ui-v2-card-mosaic-approve-2026-06-29.docs/history/archive/2026-06-29/134241/research/_working/preliminary-ui-interview-research.md— archived pre-approval working packet.docs/history/archive/2026-06-29/134241/research/_working/ui-interview-v2-card-mosaic-mockup.html— archived pre-approval mockup source.alignment/ui-interview-v2-card-mosaic.html— confirmed alignment page.
21. Interview Log
Provenance: live-ui-interview. Stage-0 interrogation loop, 2 rounds, confidence gate passed.
Round 1 — Assumptions Manifest (A1–E2): presented as the UI Assumptions Manifest; user confirmed A1, A2, A3, A4, A5, B1, B2, B3, C1, C2, C3, D1, D2, E1; corrected E2 → "build just this variation" (V2 only this run, not fan-out). 20/20 items resolved.
Round 1 — Open items (O1–O5): O1 accept (~220–280px, 4-line preview), O2 accept (~24% rail, collapse below ≤640), O3 accept (single chip row), O4 accept (read-mostly mobile terminal + "open on desktop" hint), O5 free: "All looks good, this v2 mockup will calibrate how I deal with all the other variations."
Round 2 — Coverage checkpoint: gate pass; G-scope confirm (build just V2); G-coverage confirm-complete; OF1 (free): "Polish, minimalism, as little text as possible, icon buttons where possible with text tooltips." → applied as the chrome/finish directive (§2b).
Options & recommendations presented: O1–O4 each offered a recommendation with rationale/tradeoff (accepted as-is). Axes A3 explicitly flagged as out-of-scope-to-reopen (→ /ux-variations).
Mockup feedback / retry notes: Gate B approved the mockup as a valid V2 control branch. The reviewer asked whether the error terminal view represents the run up to the error or is window dressing. Decision: in production, the error terminal is the preserved agent session transcript plus failure output; the mockup's error stream is representative fixture output only.
Final branch decision: approve — valid UI experiment/control branch; advance after canonical write.
Risks & Open Questions
Known non-blockers carried forward: terminal latency over tunnel, stdout-parsing generality, iOS Safari push reliability, Mode C ROI, resource isolation at 5-12 concurrent sessions, and BYO-client connectivity. These remain prototype/UAT evaluation criteria, not blockers to deciding whether the V2 UI direction is worth prototyping.
- V2's card grid trades fleet density for glanceability; large fleets will scroll.
- Full-page detail navigation drops board context while the user is in a single agent.
- Live stdout previews are best-effort tails, not structured status guarantees.
- The baseline/control branch may feel too familiar for expert operators; that is the reason sibling variations exist.
Canonical Artifacts & Archive Record
| Path | Confirmed action |
|---|---|
design/ui-v2-card-mosaic.md | Approved UI branch packet written. |
design/ui-v2-card-mosaic-interview.md | Interview log and decision record written. |
design/flow-tree-personal-workstation.yaml | V2 ui_reviews[] / ui_experiments[] and decisions[] records written. |
docs/history/archive/2026-06-29/134241/research/_working/preliminary-ui-interview-research.md | Pre-approval working packet archived and removed from active working state. |
docs/history/archive/2026-06-29/134241/research/_working/ui-interview-v2-card-mosaic-mockup.html | Pre-approval mockup source archived; approved preview remains embedded in this page. |
docs/history/archive/2026-06-29/134241/alignment/ui-interview-v2-card-mosaic.html | Pre-confirmation alignment page archived. |
alignment/ui-interview-v2-card-mosaic.html | Converted to confirmed/read-only. |
Approval Record
The final compiled response YAML approved the V2 branch and the canonical write set. The selected gate answers are preserved below as read-only decisions.
| Gate | Selected answer | Notes |
|---|---|---|
| Gate A - Interview Stage & Provenance | Yes - live-ui-interview provenance is sufficient for this review page | Accepted the recovered two-round live UI interview provenance. |
| Gate B - V2 Mockup Direction | Approve - the mockup is a valid V2 control branch | Clarified that production error terminal views preserve the run transcript plus failure output; the mockup stream is representative fixture data only. |
| Gate C - Branch Decision Record | approve - valid UI experiment branch; advance after canonical write | Recorded as ui-v2-card-mosaic-approve-2026-06-29. |
| Gate D - Artifact Destination & Proposed File Changes | Yes - approve the proposed canonical files and manifest update | Target path: design/ui-v2-card-mosaic.md. |
| Gate E - Coverage Checkpoint | No missing decision-critical coverage | No additional required coverage. |
| Gate F - Post-Approval Route | Continue with the next UI branch/variation review; keep downstream prototype gated | Manifest now recommends v1-operator-console as the next UI interview candidate. |