Map: history mode — make the TimeScrubber playhead move (resolved_at already exists; #18 closed) #240

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

Problem

TimeScrubber.tsx:1-12 says the playhead is pinned to NOW because incidents lack resolved_at. That premise is stale: #18 is closed and resolved_at is written at incident_correlator.py:2021/2160/2365 and summarizer.py:196. The map only queries status == 'active' (useIncidents.ts:142), so 'what was on the map at 02:14' and overnight replay are impossible.

Who asked

All 8 personas (shift brief, after-action review, delay attribution, SITREP, story reconstruction).

Proposal

  • c2-core range endpoint: incidents active at T / within [t0,t1] (started_at <= t1 AND (resolved_at IS NULL OR resolved_at >= t0)), calls by time range, paged (mind #197: GET /incidents times out at scale).
  • Playhead drag re-renders pins, paths (drawn stop-by-stop to T) and spine; amber 'Replaying history' banner per UI_REDESIGN §5.3.
  • Update UI_REDESIGN chunk 13 / DEFERRED.md status — they still say blocked.

Data source and terms

Internal.

Effort

L

Acceptance criteria

  • Dragging to a past time shows exactly the incidents active then, resolved ones greyed.
  • End times from the idle sweep are labelled approximate.
  • Pre-#18 incidents with null resolved_at are treated as unknown, not as still active.

Notes

Measurement caveat: per #155 nearly every resolved_at comes from the 90-min idle sweep, not a real clear, so replayed end times run up to 90 min late. That is a recording bug in the data, not in this feature; ship with the label and let #155 fix the source.


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 `TimeScrubber.tsx:1-12` says the playhead is pinned to NOW because incidents lack `resolved_at`. That premise is stale: #18 is closed and `resolved_at` is written at `incident_correlator.py:2021/2160/2365` and `summarizer.py:196`. The map only queries `status == 'active'` (`useIncidents.ts:142`), so 'what was on the map at 02:14' and overnight replay are impossible. ## Who asked All 8 personas (shift brief, after-action review, delay attribution, SITREP, story reconstruction). ## Proposal - c2-core range endpoint: incidents active at T / within [t0,t1] (`started_at <= t1 AND (resolved_at IS NULL OR resolved_at >= t0)`), calls by time range, paged (mind #197: GET /incidents times out at scale). - Playhead drag re-renders pins, paths (drawn stop-by-stop to T) and spine; amber 'Replaying history' banner per UI_REDESIGN §5.3. - Update UI_REDESIGN chunk 13 / DEFERRED.md status — they still say blocked. ## Data source and terms Internal. ## Effort L ## Acceptance criteria - Dragging to a past time shows exactly the incidents active then, resolved ones greyed. - End times from the idle sweep are labelled approximate. - Pre-#18 incidents with null `resolved_at` are treated as unknown, not as still active. ## Notes Measurement caveat: per #155 nearly every `resolved_at` comes from the 90-min idle sweep, not a real clear, so replayed end times run up to 90 min late. That is a recording bug in the data, not in this feature; ship with the label and let #155 fix the source. --- 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
feature
area/maparea/frontend
priority
p2
labels 2026-10-05 02:08:36 -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#240