**Note** from Bead: Incident Viewer Epic 4 · [canonical source](https://redfish.acequia.io/guerin/.agents/be9c3efd-ed6e-440e-9e88-653db538931d/2026-06-14/notes/03-overnight-handoff.md) · session 2026-06-14 · discussion: Talk: Incident Viewer Epic 4
Stephen went to sleep with: "bead-bind taos-engine, pull latest TAOS engine, dev branch, test nothing breaks … keep working … use git so you can back out." Here's everything done, where it lives, and how to deploy / merge / revert. **Nothing was deployed to production** — it's all on dev branches.
## TL;DR - **Engine updated** `7ed597e`→`e4512828` (+50 commits) on a branch; viewer **regression PASSED**, no viewer changes needed. - **STAC manager built** (Ships A+B): no Palisades default · multi-catalog **union** · IndexedDB store · **per-domain memory** · **Load dialog** (URL/drag-drop/local-file, history with remove+re-add). - **Sibling agent** (`b6fcda63` ants-in-taos) helped + shipped; my GPU-leak warning saved their build. - Everything CDP-verified, committed, **recoverable**. Live hosts untouched (still master / camera-follow + timeline-fix).
## Branches + revert anchors | repo | safe (unchanged) | working branch | revert | |---|---|---|---| | taos-engine `Documents/src/taos-engine` | `main` = `7ed597e` (tag `misb-port-pin`) | `dev-engine-update-2026-06-15` = `e4512828` | `git -C ../taos-engine checkout main` | | incident-viewer `Documents/src/incident-viewer` | `master` = `6175c57` | `dev/engine-update` (HEAD `18116ef`) | `git checkout master` | Commits on `dev/engine-update`: `e7dfd92` (Ship A) → `18116ef` (Ship B). (Engine update needed 0 viewer commits.)
## What's verified (CDP pixels/state, dev only — chunks NOT on the live hosts) - **Engine regression:** Palisades FMV · Sandy camera-follow · FMV sensor-lock · 0 exceptions. (Note 02.) - **Ship A:** empty = no Palisades (active=0, blank viewer) · `?stac=a,b` = active=2/3 incidents grouped by STAC · plain reload restores active=2 from IndexedDB · history+domain stores populated. - **Ship B:** dialog opens with active+history · add URL + drag-drop URL · Apply unions (`?stac=a,b` → 3 incidents) · uncheck+Apply removes · remove-from-history shrinks IDB · `?stac` preserved in the shared URL. **Local-file drop is implemented but lightly tested** (CDP can't cleanly synthesize a File drop) — session-only, additive; relative child hrefs won't resolve from a blob.
## Decisions / notes for review - **Union without namespacing (v1):** distinct catalogs' incident ids coexist; same-id-in-two-STACs is last-wins. The **singleton-by-URI** model you described (display-twice, independent view props, shared model) is the deferred follow-up. (Note 01 §Deferred.) - The empty-state seed `incidentId` is still cosmetically `'2025Palisades'` (harmless — registry empty, nothing renders); can null it if you want it gone.
## To go live (your call — I did NOT deploy) 1. Review `dev/engine-update`. If happy: `git checkout master && git merge dev/engine-update`. 2. Decide the engine: keep `taos-engine` on `dev-engine-update-2026-06-15` (e4512828) for prod, or pin. 3. `npm run build` → deploy the chunk + index.html to BOTH `redfish.acequia.io/guerin/apps/incident-viewer/` and `santafe.live/` (WebDAV PUT + DELETE old chunk), per the usual recipe. - **Heads-up:** Ship A removed the simtable/Palisades fallback. The **redfish** deploy has no same-origin `./stac/catalog.json`, so first-visit there is now **empty** (Load dialog) instead of simtable incidents. If you want redfish to still default to the simtable catalog, either add a same-origin `stac/catalog.json` or seed the domain memory. **santafe.live** is unaffected (it has its own same-origin catalog).
## Next (agreed sequence, not yet built) Per your picks: **re-platform the items panel onto the Charlestown `/lib/layer-tree.js`** (vendor it; folders + inline opacity + properties panel + popout; the union is the tree data) → **camera-pose inspector + roll-fix** (gear caret showing intrinsics+extrinsics; the look-through roll is the frame-up-vs-local-up tilt) → fold the Load dialog into that panel. These are the larger, design- sensitive pieces I intentionally left for your review rather than building blind overnight.
## Sibling collaboration (b6fcda63 ants-in-taos) — closed You gave the GUID `fa3b0dc9` (that's "business-model-and-strategy", empty dock) — the real bead is **`b6fcda63` (ants-in-taos)**. They build a slope-responsive AgentScript fire model on the hosted `/taos` bundle (no shared clone → my engine branch-switch didn't touch them). I offered engine-pattern pointers + answered their 4 questions; **they shipped** `guerin/agentscript/ants-in-taos.html` (public). My Q1 warning (call `mesh.destroy()` each tick — `mesh.ts:211`) made them fix a per-tick GPU-buffer leak that "would've silently OOM'd by morning." Threads in my `uploads/` + their dock. No open questions.