# Structural proof preflight

## Product contract

- **Surface:** desktop operational product UI
- **Selected source:** `reference/selected-option-2.png`
- **Concept sentence:** For an owner supervising an OpenClaw run, Run Control
  should feel like live mission instrumentation by combining an authoritative
  agent topology with one connected decision inspector, while avoiding a
  dashboard inventory of unrelated cards.
- **Evidence boundary:** authored controlled prototype; no backend or provider
  request
- **Supported width:** 1100 CSS px and wider; primary proof at `1440 x 1024`
- **Explicit exclusion:** no mobile layout and no standalone Mobile Chat page

## Entry mode

`task-first`. The selected run name, runtime state, session reference, active
agent path, and pending approval are visible before the first material action.
The first material action is `Review approval`; it opens a connected dialog
without changing the mock decision.

## Section grammar

| Section | Role | User question | Grammar |
|---|---|---|---|
| Sidebar/topbar | Orient | Where am I and which run is active? | fixed navigation and compact run metadata |
| Status strip | Orient | Is anything waiting or blocked? | one lightweight status row |
| Agent topology | Explain | Who is doing what, and what depends on whom? | spatial nodes with one highlighted execution path |
| Event rail | Prove | What happened and where did the state come from? | chronological rows opening event details |
| Inspector | Explain/Act | What is selected and what can I do safely? | one persistent context rail |
| Approval dialog | Act | What exactly am I approving? | scope, impact, immutable context, explicit decision |
| Toast/recovery | Recover | What changed and can I reverse the mock action? | connected status plus visible undo/restart |

## Signature gesture

The active topology path is the single dominant gesture. A restrained glow may
echo on the selected node and primary approval action. Event rows, dense
metadata, error/recovery copy, and modal body text must remain plain and
high-contrast.

## State and copy truth table

| State | Visible facts | Allowed action | Forbidden claim | Recovery/focus |
|---|---|---|---|---|
| Pending approval | Executor waiting; scope not yet approved | inspect agents/events/session/provider; review approval | deployment started | dialog close restores trigger focus |
| Approval dialog | exact authored scope and no-production-mutation impact | approve, request changes, close | live policy check | close returns to approval trigger |
| Approved | decision recorded; Executor preparing artifacts | inspect; undo mock decision | deployment executed | undo restores pending state |
| Paused | run overlay and paused label | resume; inspect details | agents advancing | Resume in topbar |
| Stopped | stopped overlay and recovery card | inspect; restart mock run | runtime still active | Restart restores pending approval |
| Event detail | actor, time, correlation, source | close | live trace evidence | close restores event-row focus |
| Provider/session detail | authored connected state and explicit no-request copy | close | verified live provider or secret visibility | close restores metadata-row focus |
| Ask Iris | explicit mock label and authored response | submit local text, close | live model response | close restores topbar trigger |

## Proof selectors and settle condition

- Primary canvas: `[data-testid="run-canvas"]`
- Executor node: `[data-testid="agent-executor"]`
- Approval node: `[data-testid="approval-node"]`
- Review trigger: `[data-testid="review-approval"]`
- Confirmation: `[data-testid="confirm-approval"]`
- Settle condition: local fonts loaded, the canvas is visible, no dialog
  transition is pending, and the selected node geometry is stable.
