WORK-QUEUE — #incident-viewer-taos-engine-app (Incident Viewer Taos Engine App)

**Bead document** from Bead: Incident Viewer Taos Engine App · [canonical source](https://redfish.acequia.io/guerin/.agents/cbf8b027-e80c-4b9f-8eb3-91d40af072d5/WORK-QUEUE.md) · discussion: Talk: Incident Viewer Taos Engine App

> Devops-style step queue (per [plan-stac-palisades-sandy](2026-06-11/artifacts/plan-stac-palisades-sandy.md)). Any CE/CV agent — or the [#agents-dashboard](https://redfish.acequia.io/guerin/.agents/45761f53-0f16-4bba-87db-d7edb3a25d0c/about.md) **Run** action — may claim the top unclaimed step: mark it `claimed-by:` + timestamp, do exactly that step, write outputs where specified, append to `log.md`, mark `done`. One step per run. Read `STATE.md` first.

## Epic 1 — STAC on Palisades + Sandy - [x] **WP-A** Palisades product inventory → `2026-06-11/artifacts/stac-inputs/palisades-inventory.json` — claimed-by: session-agent 2026-06-11 (background) — **DONE 2026-06-12T03:17Z** (6 fmv [3 N57B w/ KLV, 3 N328SF without], 6 perimeters, 16 imagery w/ KMZ bboxes, 4 anomalies; NOTE: filename clip-token ≈ clip END time, telemetry starts ~1–1.5 min earlier) - [x] **WP-B** Sandy product inventory → `2026-06-11/artifacts/stac-inputs/sandy-inventory.json` — claimed-by: session-agent 2026-06-11 (background) — **DONE 2026-06-12T03:24Z** (5 fmv — crosscheck vs incidents.json PERFECT ≤1 ms; 6 perimeters 183→2114 ac; 18 IR/HS pairs w/ bbox from mission.json; 2 partial mission.json snapshots — some times filename-derived, 8 anomalies noted; sibling `2026-CA-SandyFire/` holds the camera archive + YouTube/EGP media) - [x] **WP-C** alertwildfire cameras (both incidents) → `2026-06-11/artifacts/stac-inputs/cameras-inventory.json` — claimed-by: session-agent 2026-06-11 (background) — **DONE 2026-06-12T03:20Z** (Palisades: 101 AlertCA cams ≤50 km, 62 nearFire, incident-time az/fov from WatchDuty cache, Bel_Air_Ridge_1 at 0.7 km w/ local timelapse archive; Sandy: CLEAN LOCAL POSITIVE — `2026-CA-SandyFire/ops-alertcalifornia/` incident-time snapshot, 30 cams incl. South_Mountain_East_1 w/ 816 frames + per-frame az/elev/zoom telemetry; fire center [-118.7442,34.2482]; D3 MOOT — both snapshots are incident-time. geoEvents.json = dud, SPA shell not data) - [x] **WP-D** Build the STAC tree (`2026-06-11/artifacts/stac/`) from A+B+C outputs — claimed-by: session-agent 2026-06-12 (background) — **DONE 2026-06-12T03:35Z** (3 catalogs, 8 collections, **149 Items** / 160 files via reproducible `build-stac.mjs`; validation PASSED 1093 checks/0 errors; KLV-derived datetimes; N328SF marked `fmv:pose:"none"`; perimeter KMLs lack bboxes → incident-extent + proj:note; camera fov/tilt → `fov_deg`/`tilt_deg` pending ext decision) - [x] **WP-E** Generate viewer-3d `incidents.json` FROM the STAC (projection proof) — claimed-by: session-agent 2026-06-12 (background) — **DONE 2026-06-12T03:42Z** (8/8 clips matched by video file; Sandy 5/5 BIT-IDENTICAL on all 7 fields; Palisades deltas = projection more canonical: KLV times vs filename-derived (+0.9s/−88.4s/−68.1s), ts/ vs parent binding both HEAD 200; N328SF correctly gated out; outputs in `artifacts/stac/projections/`) - [x] **WP-F** Geometry enrichment (Stephen's catch: "you can make the bbox of the kmls") — claimed-by: session-agent 2026-06-12 (background) — **DONE 2026-06-12T03:55Z** (all 12 perimeter Items = real MultiPolygons, 27,604 pts; aggregate kmz resolved incl. NetworkLinks, 98 polys; 4 Sandy KMZ bboxes recovered; rebuild 149 items / 1093 checks / 0 errors; ONLY remaining placeholders = the 3 telemetry-less N328SF clips → #pose-ux-ui customers) - [x] **OFFER** — **DONE 2026-06-12** (D1 resolved: bound to `simtable.acequia.io/incidents/stac/`, 160 files, anon 200; viewer-3d projection re-generated + pushed).

## Epic 2 — viewer (next batch, Stephen 2026-06-12) - [x] **V-1..V-4** — **DONE 2026-06-12 (`ac368f5`, background agent)**: h-lock track culling via per-track ECEF bounding sphere vs range; `clipInWindow()` gates tracks/marker/cap/projector (opacity owned per-frame in updateProjector); <10px heat marks → solid centered 10px; STAC cameras rendered (62+30, green octahedra + az wedges, heightAt w/ self-correcting fallback, `camChk`). CDP-verified 0 exceptions. HARNESS LESSON: occluded CDP Chrome stops rAF → stale per-frame assertions; cdp-chrome.sh now disables occlusion backgrounding. - [x] **Camera marker VISIBILITY fix** — **DONE 2026-06-12 (`7f16af7`, deployed)**: V-4's 25 m ground octahedra were terrain-buried + green-on-green from overhead → invisible (pixel-verified, not just count-verified). Replaced with floated octahedron-on-stem glyph (buildCamGlyphMesh, 70 m mast). Up-close CDP-verified both incidents + Sandy 15801 billboard. - [x] **ToA debug raw-RGB drape** — **DONE 2026-06-12 (`3765562`, deployed)**: gear toggle drapes the source PNG raw (no recolor) to validate base-255 decode + orientation; confirmed vs `2026_CAVNC_042326_sandy.png` (black W ignition, green E, north-up). - [x] **E2-S3 — Perimeter layer** — **DONE 2026-06-12 (`2a371d0`, deployed)**: densified (≤40 m) terrain-following ribbons, z=heightAt+drape-lift, datetime ≤ playhead (latest bright / earlier embered). Master span extended by perimeter datetimes. CDP-verified Palisades 22:09→21:06 = 1→4 perimeters (770→15,832 ac).

## Maintenance / deploy hygiene - [ ] **M-1 — santafe.live deploy collision (gated on D6).** Viewer deploys to `santafe.live/` root, which co-tenants the recovered set-space-time app (note 15, dock 2026-06-16 from #set-time-space). Move the viewer deploy to `santafe.live/incident-viewer/` subpath, or keep root + add a no-root-cleanup guard to the deploy script. **Until resolved: never run a root cleanup/delete on santafe.live — it would destroy set-space-time's source data folders.**

## /cameras point (write target: #wildfire-imagery-acquisition b3461c66) - [ ] **C-1** Camera-feeds processing discussion (alertlive-like + geocamera): session outputs land in b3461c66's dated notes/; format questions relayed to #catalog via uploads dock, not re-decided. Mount table: `namespace.session.json`.

## References (bead cross-links) - Bead: Agents Dashboard · [canonical](https://redfish.acequia.io/guerin/.agents/45761f53-0f16-4bba-87db-d7edb3a25d0c/)