**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/04-fov-tilt-and-scrub-fixes.md) · session 2026-07-02 · discussion: Talk: 2026 St Catherines Fire Santa Fe
Stephen's report: (a) FOV and tilt not honored, worst on Tesuque Peak; (b) the timeline scrubber wasn't changing Tesuque's frames while Picacho scrubbed fine.
## (a) FOV/tilt — viewer bug, fixed in v0.3.2 (deployed BOTH hosts, `index-CXBUQozN.js`) `loadCamFrames` kept only `{ts,url,az}` per telemetry frame — **`camViewWidth` (PTZ zoom hfov) and `camElevation` (tilt) were dropped**, and `buildCamCard` sized every card at a fixed 50° hfov, boresight level. Tesuque was zoomed to ~3° and tilted −5° → its card was ~16× oversized and aimed above the fire. Fix (commit `feat/elevation-assertion`, v0.3.2): frames carry `el`+`fov`; the card is sized from the frame's hfov, the boresight tilted by its elevation (card-up kept ⊥ boresight, right-vector renormalized); rebuild triggers on az/el/fov drift; look-through pose + terrain projector inherit the same tilt/fov. Standing stills read `pose:hfov`/`pose:elevation` when present.
## (b) Scrub stuck — STAC data bug, fixed in the emitter (no viewer change) For a non-FMV event the master clock spans `itemsSpanBounds()` = union of item time-ranges, where a range falls back to the item's single `datetime`. Our per-camera items carried only `datetime` = latest frame → **the master span collapsed to the ~5 min between the two cameras' latest-frame instants** (00:29:52Z vs 00:35:24Z — exactly the 31:00–35:00 sliver in Stephen's screenshot). Picacho had ~20 s-cadence frames inside that sliver (scrubbed "fine"); Tesuque's frames all ended at the sliver's start (never re-textured). Fix: [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) now writes **`start_datetime`/`end_datetime` = the timelapse footprint** (derived from the frame-items collection links); the viewer already parses those into ranges. Timeline now spans 17:11Z → 02:35Z.
## Verification (CDP probe [tools/stcath-check.mjs](c:/Users/steph/Documents/src/incident-viewer/tools/stcath-check.mjs), against the DEPLOYED redfish URL) - 2 cards, 623/603 frames; per-frame pose flows: Tesuque `fov 3.08° el −5.12°` at a zoomed frame, `65.33° el −2.99°` at a wide frame — per-frame, as intended (probe's static `fov<10` assertion is brittle by design of the data, not a bug). - Scrub: `masterSeek(18:00Z)` → `Tesuque_Peak_1_1783015197`; `masterSeek(00:30Z)` → `Tesuque_Peak_1_1783038592`. **Both cameras re-texture across the archive.** Screenshot `tools/_stcath-fovtilt.png`.
## Deployment/provenance - Viewer commits on `feat/elevation-assertion`: `5fe6aa4` (v0.3.1 re-anchor) → v0.3.2 (fov/tilt + probe). Both deployed to redfish + santafe.live together, old chunks deleted. - Forage run 3 (2026-07-03 02:35Z): collection now spans 17:11:49Z → 02:35:37Z (Tesuque 623 / Picacho 603 frame-items). - Follow-up candidates: viewer-side `camSpanBounds()` so the master clock also covers card frames when a catalog lacks ranges; probe assertion should compare fov against the frame's telemetry rather than a constant.