@@ -71,11 +71,13 @@ themselves reflect the different cadences at which conditions are produced.
7171
7272## Delivery is a separate channel from status
7373
74- Diagnostics travel to the browser on their own channel over the same websocket
75- hub that carries the rest of the live state, distinct from the channel that
76- carries producer status. The store publishes a full snapshot of the current set
77- whenever its contents change, and coalesces bursts of changes into a single
74+ Backend diagnostics travel to the browser on their own channel over the same
75+ websocket hub that carries the rest of the live state, distinct from the channel
76+ that carries producer status. The store publishes a full snapshot of the current
77+ set whenever its contents change, and coalesces bursts of changes into a single
7878publish so a flurry of re-emissions does not turn into a flurry of messages.
79+ The browser can add local diagnostics for conditions only it observes, such as a
80+ frontend decode failure or a metric that was present and then stops arriving.
7981
8082An earlier option was to attach diagnostics directly to the status message, so
8183that a status update and the conditions explaining it would always arrive
@@ -106,15 +108,19 @@ or an override that disagrees with the detected setup, are raised as soon as
106108there is enough information to identify the problem. Producer identification can
107109use receiver, aircraft, statistics, or outline files, so a setup with generic
108110receiver metadata may stay unknown until another file provides enough evidence.
109- An unknown or ambiguous producer is itself a diagnostic condition rather than a
110- stream of per-file warnings.
111+ Ident gives startup a short observation window before warning that the producer
112+ is unknown, because the first file to arrive is often incomplete evidence. An
113+ unknown or ambiguous producer is a diagnostic condition rather than a stream of
114+ per-file warnings.
111115
112116Because receiver and producer-identification conditions are event-driven and may
113- not change for hours, a heartbeat re-raises active startup conditions every few
114- minutes so a stable misconfiguration does not quietly expire between file
115- changes. The heartbeat is deduplicated through the same condition identity rules
116- as every other diagnostic, so refreshing a condition does not create a second
117- notification.
117+ not change for hours, heartbeats re-raise active startup conditions so a stable
118+ misconfiguration does not quietly expire between file changes.
119+ Producer-identification conditions use a shorter heartbeat because startup
120+ classification can resolve quickly once more files arrive; receiver
121+ configuration conditions use a slower one. Both are deduplicated through the
122+ same condition identity rules as every other diagnostic, so refreshing a
123+ condition does not create a second notification.
118124
119125## Expiry must not be mistaken for success
120126
0 commit comments