| name | cockpit-rendering |
| description | Use when designing or revising Emerge cockpit presentation, summaries, filters, action labels, or empty/error states without changing the HTTP API contract. |
Cockpit Rendering
Purpose
Keep cockpit code focused on serving state and validating actions. Put presentation judgment here: what sections matter, how to label them, and how to keep the operator focused on flywheel progress.
Rendering Principles
- Lead with actionable flywheel state: stable pipelines, canary risks, blocked synthesis, runner health.
- Treat cockpit copy as operator guidance, not implementation truth. Source data still comes from
/api/* and resources.
- Do not invent new API fields. If a view needs data, first check existing endpoints and only propose API expansion explicitly.
- Prefer short status labels over narrative prose in tables and cards.
- Expose confidence and verification state when a recommendation could trigger operator action.
Empty States
- No stable intents: explain that repeated successful spans are needed before zero-inference execution appears.
- No runners: point to
admin-runner-operations or runner-install-url instead of embedding long setup flow in code.
- Synthesis blocked: show the reason and the latest sample/job ID so the operator can inspect the right artifact.
Action Labels
Use verb-first labels: Freeze policy, Resume policy, Open runner, Resolve conflict, Retry synthesis. Avoid labels that imply human approval gates for auto-promoted paths.