Note 02 — JOB-0 done: branches reconciled, both hosts synced (Incident Viewer Epic 5)

**Note** from Bead: Incident Viewer Epic 5 · [canonical source](https://redfish.acequia.io/guerin/.agents/84395793-e621-4739-81e4-fe247b9e6003/2026-06-25/notes/02-job0-reconcile-ship.md) · session 2026-06-25 · discussion: Talk: Incident Viewer Epic 5

**2026-06-25.** Resumed Epic-5. First task per [bead-bind-startup](https://redfish.acequia.io/guerin/.agents/84395793-e621-4739-81e4-fe247b9e6003/bead-bind-startup.md): reconcile the diverged lines and sync the two out-of-sync deploys to one chunk.

## What was diverged - `feat/multi-progression` `a057543` — multi-progression (all ToA + per-item eye) + camera re-drape-on-LOD + nearest-frame. **Was live on redfish (`index-CwsK59if.js`).** - `dev/engine-update` `3cb7b06` — engine bump (`e07fdf93`) + STAC-manager Ship A/B + Load dialog + layer-tree phase 1 + layer-tree UX (concurrent session). **Was live on santafe (`index-fvNw5vOg.js`).** - Both branch cleanly off the same base `18116ef`.

## The reconciliation - New branch `reconcile/epic5` off `dev/engine-update`; `git merge feat/multi-progression`. - **Clean auto-merge, zero conflicts** (`5cef747`). Overlap was only `index.ts`; the ort strategy interleaved non-overlapping hunks. Both feature sets' symbols present (layer-tree ×25, re-drape/heightAt ×25, progression ×37). - `npm run build` → `dist/assets/index-BR1bSKpa.js` (105 kB), clean.

## Pixel-verify (CDP, real GPU) - Local `dist/` + `?stac=.../2026SandyFire/catalog.json`: layer-tree renders the union folder tree (ToA / perimeters / imagery-info / **progression** / cameras), timeline renders. [`tools/_e5-recon-sandy.png`]. - **Live redfish** after deploy, same catalog: terrain + satellite imagery render; layer tree shows fmv(5)/perimeters(6)/imagery-info(18)/progression(1)/cameras(30); default "1 progressions on." [`tools/_e5-live-redfish.png`]. - **Known headless limits (not regressions):** `[cameras] 0 loaded` (camera frames auth-gated — confirm in an authed browser); one transient `[toa] decode failed` on the live cross-origin fetch (decoded fine locally: 651,184 burned px).

## Deploy — BOTH hosts to the SAME chunk - redfish [apps/incident-viewer/](https://redfish.acequia.io/guerin/apps/incident-viewer/): PUT `assets/index-BR1bSKpa.js` (201) + `index.html` (204); DELETE old `index-CwsK59if.js` (204). - santafe [/](https://santafe.live/): PUT chunk (201) + `index.html` (204); DELETE old `index-fvNw5vOg.js` (204). - **Verified both now serve `index-BR1bSKpa.js`.** No host is ahead of the other.

## Residual / next - **Owed to Stephen:** confirm the camera re-drape + nearest-frame fix in an **authed browser** on live redfish (headless can't load camera frames). The re-drape code is byte-identical to what was already live on redfish, so this is a confirmation, not a risk. - `reconcile/epic5` is the new mainline candidate; can fast-forward `master` onto it once the camera fix is human-confirmed. - Then Epic-5 todos: STAC pose-elevation assertion ([a55f5270 note 04](https://redfish.acequia.io/guerin/.agents/a55f5270-1767-475b-924a-1ef59ee09e90/2026-06-15/notes/04-elevation-as-a-soft-uri-assertion.md)) → height-reference modes → roll-fix → web-component adoption → restore the Image Cache Manager.

## References (bead cross-links) - Bead: Nuke Geo Camera · [canonical](https://redfish.acequia.io/guerin/.agents/a55f5270-1767-475b-924a-1ef59ee09e90/)