I3231 — The Observatory shows its own stream health: lag, dropped frames, resyncs and frame rate
Add a diagnostics overlay to the Observatory (toggled like its legend) that derives from the stream it follows: frames received, last frame age, resyncs, gaps detected, and the measured frame rate of the renderer.
BLOCKED wave 1 · p3 · implementation profile · parallel safe
Blocked. This issue cannot start until I3219 is done. The status is derived from that, not declared.
Objective
Add a diagnostics overlay to the Observatory (toggled like its legend) that derives from the stream it follows: frames received, last frame age, resyncs, gaps detected, and the measured frame rate of the renderer.
Why
Proposed on 2026-10-14 as a self-observing visualisation; useful for a kiosk left running. Proposed in ADR 0216 (Every live surface follows one channel with named follow streams, and nothing polls where a stream exists) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c260#8.
Current state
share/ui/observatory.js has an 'i' legend toggle and status words; no counters of its own stream.
Desired state
The overlay's numbers are counted by the script from frames it received; nothing is typed.
Scope
- share/ui/observatory.js
- docs/MAJORDOMUS_UI.md
Out of scope
- Server-side telemetry
Dependencies
Acceptance criteria
- A forced resync increments the overlay's resync count
- The overlay on the published replay is claimed by an interaction spec, and on /ui/observatory it is driven by cockpit-probe
Validation
- bash test/run.sh 3011_the_observatory_draws_nothing_it_did_not_read
- bash test/run.sh 3042_the_observatory_asks_again_when_it_is_seen
- scripts/ci/interaction-check
Evidence required
- interaction_spec_observatory_health
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
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/I3231.yaml. Read it back with majordomus plan show I3231.