Note 05 — Timeline: live button + date display; recording a day of cameras (Incident Viewer Taos Engine App)

**Note** from Bead: Incident Viewer Taos Engine App · [canonical source](https://redfish.acequia.io/guerin/.agents/cbf8b027-e80c-4b9f-8eb3-91d40af072d5/2026-06-11/notes/05-timeline-live-and-record-a-day.md) · session 2026-06-11 · discussion: Talk: Incident Viewer Taos Engine App

Stephen's directives (2026-06-11/12, verbatim intent): *"the incident-viewer can have a live button on the timeline. also show the date on the timeline."* Plus: mount the camera-network beads and read how to **record a day**.

## Mounted: `#wildfire-imagery-acquisition` (b3461c66, -a read) The acquisition/ops bead (sibling of `#incident-cataloging`): AlertWest/ALERTCalifornia grabbing, EGP mission-browser, WatchDuty scraping, multi-viewer catalog ops. **pano.ai has NO bead** — its only workspace mentions are the realtime.earth Xcel quote docs (`guerin/docs/realtime-earth/xcel-*.md`); third-network coverage is an open gap.

## How to record a day (from `skills/grab-alertwest.py` + bead notes) - **Pull:** `POST api.cdn.prod.alertwest.com/api/getCameraTimelapse` with **stacked lapseLengths** (86400,43200,…,60), merged + deduped by `camScreenshot` filename → the union of the rolling buffer's frames. Filter to the wanted UTC window. - **Fetch + store:** GET `img.cdn…/data/img/<cam>/<Y/M/D>/<name>` → **local first** (source of truth) → PUT to `simtable.acequia.io/incidents/<slug>/ops-alertcalifornia/<camId>/<YYYY>/<MM>/<DD>/` + a `telemetry-<cam>-<ts>.json` sidecar (frame list, window, fetch provenance). - **THE CONSTRAINT: AlertWest has no historical query** — only `[now − lapseLength, now]`, ~24 h rolling, older = downsampled. **Recording a day is only possible during (or within ~24 h of) that day.** So live incidents need an **active recorder** — exactly the "background processes" devops frame: a cron/background agent (or dashboard Run step) doing stacked pulls per camera for the incident's camera set. The Sandy `South_Mountain_East_1` archive (816 frames + per-frame az/elev/zoom sidecars) is this pipeline's output, captured in time; the WP-C Palisades cache is the same pattern via WatchDuty. - WatchDuty = a camera *directory* over the same AlertWest timelapse namespace (cams.data id = timelapse camId; locs ids differ — known namespace bug, fixed in the bead).

## Timeline directives → design 1. **LIVE button** (transport bar, right of the UTC readout): for an **active** incident, snaps the view window's right edge to `now()` and *follows* (auto-scroll); camera Items render their `latest` frame; leaving live = any manual scrub/pan (same release pattern as sensorLock). Master-timeline right edge gets a `now` marker. For archived incidents the button is absent/disabled. This is the timeline's primal/dual hinge: scrub = browse the catalog (past); LIVE = subscribe to it (observe) — the cataloging dual made into one button. 2. **Date on the timeline**: current ruler labels are `mm:ss` UTC — correct for one 52 s clip, wrong for a master timeline spanning days (Palisades = Jan 7–10). Add the date: (a) major-tick labels gain the date on day boundaries (`Jan 8 ┊ 00:00Z`), (b) the `#tutc` readout becomes full `YYYY-MM-DD HH:MM:SSZ` (it already has the ms — formatting only), (c) when zoomed to < 1 day the date shows once at the window's left edge. `niceSec()` tick table extends to hour/day steps. 3. **Recorder hook:** when LIVE is on and the incident has a recorder running, the timeline can show the recorder's coverage (recorded spans per camera lane) — recording state is itself catalog data (the telemetry sidecars list exactly which frames exist).

## Implications for the STAC (Epic 1 follow-on) - Camera Items grow a `timelapse` asset (the per-cam archive dir + telemetry sidecar) where an archive exists (Sandy 15801 already; Palisades Bel_Air_Ridge_1 has an alertwest.live archive URL). - An **active-incident** flag at the incident catalog level gates the LIVE button. - Epic candidate: **recorder-as-background-agent** — WORK-QUEUE step template: given incident + camera set, run stacked pulls every N min during activation; apoptose at incident close (TTL).