Map: 'Live' pill is driven by node heartbeats, so the wall reads live while transcription/correlation are dead #232

Closed
opened 2026-10-05 02:08:33 -04:00 by logan · 0 comments
Owner

Problem

LiveView.tsx:99-101 resets lastUpdated whenever nodes, activeCalls or activeIncidents change, so node check-ins alone keep '● Live · Ns ago' fresh. configuredButQuiet (LiveView.tsx:226) shows 'Listening — last check-in Xm ago' whenever nodes exist and no incident is active. Nothing in drb-frontend reads /health/ai (main.py:199, auth-free by design). During #196 (AI dark since 09-29/30) the wall therefore shows a calm county, not a blind one. This is the screen's own health instrument reporting wrong, not just a UX gap.

Who asked

TOC, NOC, GSOC, OEM, NEWS, FD (6 of 8). Ranked #1 pain point by the panel: 'a TOC screen that lies about being live is worse than one that's off.'

Proposal

Replace the pill with a truth strip keyed to the pipeline, not heartbeats:

  • radio: newest call started_at; STT: newest call with a transcript; AI: newest incident write + /health/ai tiers; context feeds: 511 / camera provider status already returned by /traffic/511 and /cameras.
  • Any stage dry past a threshold → full-width amber bar: 'DEGRADED — radio heard, not transcribed since 12:15'. Grey the rail.
  • 'Listening' empty state only when every stage is healthy.
  • /health/ai is in-memory per process and resets on restart, so derive staleness from data timestamps too, not from it alone.

Data source and terms

Internal only (/health/ai, Firestore call/incident timestamps, existing feed status). No licence concern.

Effort

S

Acceptance criteria

  • With nodes checking in but no transcript for > N min (configurable, default 10), the wall shows the degraded bar and no green 'Live'.
  • A /health/ai tier in a degraded state is named on the bar.
  • The 'nodes up' KPI counts nodes with recent calls, not merely not-offline (or is relabelled).
  • Verified by simulating STT off locally (feature flag) and confirming the bar appears.

Notes

Related: #14 (closed — backend AI-tier alerting), #196 (the outage that would have been masked).


Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items).
Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.

## Problem `LiveView.tsx:99-101` resets `lastUpdated` whenever `nodes`, `activeCalls` or `activeIncidents` change, so node check-ins alone keep '● Live · Ns ago' fresh. `configuredButQuiet` (`LiveView.tsx:226`) shows 'Listening — last check-in Xm ago' whenever nodes exist and no incident is active. Nothing in `drb-frontend` reads `/health/ai` (`main.py:199`, auth-free by design). During #196 (AI dark since 09-29/30) the wall therefore shows a calm county, not a blind one. This is the screen's own health instrument reporting wrong, not just a UX gap. ## Who asked TOC, NOC, GSOC, OEM, NEWS, FD (6 of 8). Ranked #1 pain point by the panel: 'a TOC screen that lies about being live is worse than one that's off.' ## Proposal Replace the pill with a truth strip keyed to the pipeline, not heartbeats: - radio: newest call `started_at`; STT: newest call with a transcript; AI: newest incident write + `/health/ai` tiers; context feeds: 511 / camera provider status already returned by `/traffic/511` and `/cameras`. - Any stage dry past a threshold → full-width amber bar: 'DEGRADED — radio heard, not transcribed since 12:15'. Grey the rail. - 'Listening' empty state only when every stage is healthy. - `/health/ai` is in-memory per process and resets on restart, so derive staleness from data timestamps too, not from it alone. ## Data source and terms Internal only (`/health/ai`, Firestore call/incident timestamps, existing feed status). No licence concern. ## Effort S ## Acceptance criteria - With nodes checking in but no transcript for > N min (configurable, default 10), the wall shows the degraded bar and no green 'Live'. - A `/health/ai` tier in a degraded state is named on the bar. - The 'nodes up' KPI counts nodes with recent calls, not merely not-offline (or is relabelled). - Verified by simulating STT off locally (feature flag) and confirming the bar appears. ## Notes Related: #14 (closed — backend AI-tier alerting), #196 (the outage that would have been masked). --- Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items). Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.
logan added the
type
bug
area/maparea/frontend
priority
p1
kind
measurement-bug
labels 2026-10-05 02:08:33 -04:00
logan closed this issue 2026-10-05 02:47:02 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: logan/server-26#232