I1017 — Live state is an overlay that degrades to nothing
Let the running Cockpit overlay live state — health, peers, runtime metrics, deployment status — over the same graph, through the transport the process already has, degrading cleanly where there is none.
BLOCKED wave 4 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I1006 is done. The status is derived from that, not declared.
Objective
Let the running Cockpit overlay live state — health, peers, runtime metrics, deployment status — over the same graph, through the transport the process already has, degrading cleanly where there is none.
Why
Live state is what makes a control plane worth opening. It is also what makes a static page lie, so it has to be an overlay that is visibly absent rather than a field that is silently stale.
Current state
The process has a health capability and peers. No surface subscribes to anything.
Desired state
Live values arrive over the existing transport, are visibly distinct from the snapshot, and are absent rather than stale where no backend answers.
Scope
- apps/majordomus-cli/src/cockpit/html.rs
Out of scope
- A transport invented for the Cockpit alongside one that already exists
- A reconnect loop with no bound
Dependencies
What waits on this
Acceptance criteria
- Live updates use the process's existing event transport rather than a new one
- Live values are visually and structurally distinguishable from snapshot values
- The static projection renders the useful equivalent — what the endpoint is, and that the value is available when a server runs — rather than an empty card
- Reconnection is bounded and backs off, and a failed connection does not produce a request storm
Validation
- scripts/cockpit-probe
- cargo test --workspace --all-features
Evidence required
- overlay_live
- degrades_cleanly
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
Live overlays are where credentials leak into browsers. Everything sent to the client is an allowlisted safe field.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I1017.yaml. Read it back with majordomus plan show I1017.