Frontend Kernel-to-Mental-Model Map¶
LoopX needs a rich kernel because long-running agent work has real failure modes: drifting goals, hidden gates, duplicated work, stale evidence, lost handoffs, and uncontrolled compute. The frontend should not expose that kernel as the user's everyday vocabulary.
The product rule is:
Keep the kernel explicit for correctness, but compress it into a smaller mental model for daily operation.
Five User Concepts¶
The default management surface should teach only five concepts.
| User concept | User question | Primary UI job |
|---|---|---|
| Goal | What are we trying to achieve now? | Show current objective, boundary, and selected anchor. |
| Next step | What will the agent do next? | Show one bounded action plus a few nearby candidates when useful. |
| Blocker / permission | Where is human judgment required or forbidden? | Show concrete decisions, gates, and safety boundaries. |
| Evidence | Why should I believe progress happened? | Show compact validation, artifacts, and confidence. |
| Continue state | Can I hand this back to the agent? | Show run/wait/observe/repair/handoff readiness. |
Every top-level card, navigation label, and empty state in the ops surface should map to one of these concepts.
Kernel Concepts¶
The kernel can keep the concepts it needs for correctness.
| Kernel concept | Why it exists | Default exposure |
|---|---|---|
goal_state |
Durable truth about objective, boundary, and current belief. | Compressed into Goal. |
user_gate |
Human decision boundary that the agent cannot cross. | Visible only when action is needed, under Blocker / permission. |
todo |
Executable work units and owner/user tasks. | Visible as Next step plus a small queue. |
claim |
Multi-agent collision avoidance. | Hidden by default; show as lane owner or diagnostic detail. |
scope |
What a specific agent can and cannot do. | Summarized under agent lane or blocker detail. |
evidence |
Proof that a state transition is trustworthy. | Visible as compact Evidence. |
run_history |
Audit log and replay/debug substrate. | Folded behind evidence or diagnostics. |
quota |
Whether an automatic turn may spend compute now. | Rendered as Continue state, not raw counters. |
handoff |
Context package for the next loop or agent. | Rendered only when copying, resuming, or debugging. |
These objects are not redundant. They separate truth, work, authority, ownership, proof, compute, and transfer. The UI's job is to prevent users from paying that complexity cost unless they are debugging.
Projection Contract¶
The read model should provide an explicit compression layer instead of letting each component invent labels.
mental_model_projection_v0:
goal:
title: "Current objective"
boundary_summary: "What is in and out of scope"
anchor: "Optional selected proof path"
next_step:
primary_action: "One bounded action"
nearby_candidates: ["Optional small queue"]
selected_reason: "Why this action is first"
blocker_permission:
status: clear | needs_user | forbidden | needs_repair
concrete_question: "Only when needs_user"
boundary_reason: "Only when forbidden or needs_repair"
evidence:
latest_summary: "Compact validation or artifact pointer"
confidence: strong | partial | missing
drilldown_ref: "Run or artifact id"
continue_state:
status: can_run | waiting | observe_only | needs_repair | handoff_ready
reason: "Short operator-readable reason"
next_safe_transition: "Optional CLI/control-plane transition"
diagnostics:
goal_state_ref: "debug only"
todo_ids: ["debug/search"]
claims: ["debug/multi-agent"]
quota_ref: "debug only"
run_history_refs: ["debug/audit"]
The same kernel source can still power search, debug, and audit views. The default surface should read from the compressed fields first.
Interaction Rules¶
- Default navigation and first-screen headings should use the five user concepts, not kernel names.
- Search can still accept todo ids, run ids, agent ids, and kernel terms because debugging needs exact handles.
claim,quota,scope, andhandoffshould appear as detail chips, tooltips, or diagnostic rows unless they require user action.- A user gate is not a generic "owner gate"; it must show the concrete decision and the consequence of approving, rejecting, or deferring.
- Evidence should be compact by default and link to audit details. Raw logs, private traces, local paths, and sensitive material must not appear in public fixtures.
- A continue state should never say "run" only because quota allows compute. It must also respect gates, scope, write boundary, and evidence requirements.
- Review-feed cards should produce feedback in user language, then map it back
to typed events such as
review_event_v0,feedback_signal_v0, ortodo_update.
Dashboard Layout Implication¶
For the ops surface, a simple first screen is:
- Goal: objective, active anchor, and boundary summary.
- Next step: selected action, a small todo queue, and why it was selected.
- Needs your judgment: concrete user gates and forbidden actions.
- Evidence: last validated result, confidence, and artifact pointer.
- Can continue?: run/wait/observe/repair/handoff state.
Diagnostics can sit behind expandable panels:
- todo explorer;
- agent lane details;
- claims and scope;
- quota and run history;
- handoff packet.
This keeps LoopX honest for long-running work while making the product feel like a management surface, not a schema browser.
Acceptance Criteria¶
The frontend mapping is acceptable when:
- a new user can explain the first screen using the five concepts above;
- every visible kernel label has a reason to be visible, such as search, debugging, or an active user decision;
- all diagnostic expansion still preserves exact ids for audit and recovery;
- the same projection can represent one project, all projects, and multi-agent lanes;
- review-feed actions use user-facing labels but write typed LoopX events.