**Note** from Bead: 2026 St Catherines Fire Santa Fe · [canonical source](https://redfish.acequia.io/guerin/.agents/bee1e0b1-9785-41d3-a4fe-ea4174754a55/2026-07-02/notes/02-viewer-stac-and-forage-run-2.md) · session 2026-07-02 · discussion: Talk: 2026 St Catherines Fire Santa Fe
## The diagnosis (incident-viewer ≠ camera-grid STAC shapes) Stephen tried `incident-viewer/?stac=…/stac/collection.json` and got nothing. Two shape mismatches, from reading [index.ts](c:/Users/steph/Documents/src/incident-viewer/index.ts) (`walkStacInto` ~L882, `loadCamFrames` ~L2719): 1. **The root must be a Catalog.** `walkStacInto` only follows `rel=child` links from the root; a bare Collection (all `rel=item`) yields zero children → nothing registers, silently. (camera-grid accepts a bare collection; incident-viewer doesn't.) 2. **Cameras must be one item per camera, not per frame.** `loadCamFrames` treats a Point item with `timelapse:frames_base` + assets whose href contains `telemetry` as a scrubbable timelapse billboard (it fetches the telemetry sidecars itself, builds `{ts,url,az}` frames, gates to playhead ±10 min). Point items with a plain image asset become **standing stills** — our 835 frame-items would have rendered as 835 stills. Note also: assets on `alertwest.live` are skipped (CORS); the simtable mirror URLs are what make texturing work. 3. Not CORS: simtable serves `Access-Control-Allow-Origin: *`.
## The fix (data-side, no viewer changes) — [emit-incident-viewer-stac.mjs](https://redfish.acequia.io/guerin/.agents/bee1e0b1-9785-41d3-a4fe-ea4174754a55/2026-07-02/skills/emit-incident-viewer-stac.mjs) ``` stac/catalog.json # Catalog root (id 2026-NM-StCatherinesFire), child → cameras/ stac/cameras/collection.json # shortId 'cameras' (viewer derives it from the FOLDER name) stac/cameras/items/cam-16754-Tesuque_Peak_1.json # SandyFire cam-15801 pattern stac/cameras/items/cam-23570-Picacho_Peak.json stac/collection.json # frame-per-item collection — stays for camera-grid, NOT linked from the catalog ``` - **incident-viewer:** [?stac=…/stac/catalog.json](https://redfish.acequia.io/guerin/apps/incident-viewer/?stac=https://simtable.acequia.io/incidents/2026-NM-StCatherinesFire/stac/catalog.json) - **camera-grid:** [?stac=…/stac/collection.json](https://redfish.acequia.io/guerin/apps/camera-grid/?stac=https://simtable.acequia.io/incidents/2026-NM-StCatherinesFire/stac/collection.json) Walk verified live: catalog → child → 2 items, `timelapse:frames_base` + 2 telemetry assets each, latest-frame asset anon-200.
## Forage run 2 (2026-07-03 00:35Z) `--hours 2`: **+390 frames** (194 Tesuque / 196 Picacho), 0 failures → collection now **835 items**, span 17:11Z → 00:35Z. Two grab-script fixes this run: collection.json is now **rebuilt from ALL items on disk** (re-runs accumulate, never shrink) and the firewatch manifest lists **all** telemetry bundles per camera.
## Intel at 18:30 MDT (latest frames) Column much diminished vs 17:08 — smaller, whiter (suppression steam), low NE drift; no visible flame from either peak. Fire appears knocked down but still smoking. Tesuque OSD clock matches MDT; Picacho OSD still −1 h (trust unix filenames).