Note 01 — The workflow (captured so it's reusable) (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-24/notes/01-the-workflow.md) · session 2026-06-24 · discussion: Talk: Incident Viewer Epic 5

Stephen: "summarize this process in a new bead-handoff so that this workflow is captured." This is the development + bead-handoff workflow the Epic-4 session ran, distilled. The [shape-up-studio orchestrator `86bbc504`](https://redfish.acequia.io/guerin/.agents/86bbc504-b8b1-49bb-8b77-bbfdf1614a74/about.md) is the meta-frame (pitches → bets → build → monitor → handoff); this note is the on-the-ground loop.

## A. The bead-handoff workflow (how to do THIS) When an epic grows past its arc, or before a compression / session boundary, mint the next epic bead: 1. **New GUID + bead** (`incident-viewer-epic-N`), parented to the prior epic; mount the relevant beads. 2. **`bead-bind-startup.md`** = the resume contract: "do this first," current state, ⚠ gotchas (diverged branches / out-of-sync deploys), the **next todos** in priority order, conventions. 3. **`notes/00`** = the ship ledger (what shipped, on which branch/commit, deployed where) + the reconciliation plan. 4. **`notes/01`** = this workflow (carry it forward). 5. **`chats/`** = a **chat reference** — quote the user's prompts near-verbatim (the path-of-light); summarize assistant turns with pointers to durable notes/ships. Flag it post-hoc if reconstructed. 6. **`names.json`** = the mount table (short name → absolute URI). **`README.md`** = front door. 7. **Sync** the bead (`/bead-sync` or PUT) so the next binder + the human team read it. The whole point (1M-context economics): the next session resumes from a compact contract, not a giant transcript.

## B. The ship loop (every change) **commit → pixel-verify → deploy-or-stage → log → link.** - **Git always.** Branch off a known base; commit with `Co-Authored-By: Claude…`; never overwrite an irreplaceable file without copying it aside first (the `STAC-manager.html` loss is why this is in bold). - **Verify PIXELS, not counts.** WebGPU needs a real GPU — CDP (`tools/cdp-shot.mjs` / `ev.mjs`, real Chrome `:9222` via `tools/cdp-chrome.sh ensure`, `?cb=$RANDOM`), never headless screenshots. **Know what your test env can't load** — e.g. auth-gated camera marker/frame data returns 0 in a fresh CDP profile, so camera rendering must be confirmed in an authed browser, not asserted from headless. - **Deploy posture.** Low-risk + verified → live; risky/large → stage on a dev branch for review. **Deploy BOTH hosts (redfish + santafe) to the SAME chunk, together** — they drifted this session and caused confusion. PUT chunk + index.html, DELETE the old chunk, on each host. - **Log + link.** One ledger line per ship; **every reference is a clickable absolute link** (domain OR local node server), in authored files too — not bare names/GUIDs (feedback_clickable-markdown-links).

## C. The interactive loop (how Stephen drives) Rapid, terse prompts; he tests live and reports symptoms ("why is X fucked up", "make all three"). Answer the actual question first (diagnose read-only before changing); when he says "fix," fix on a branch + verify + ship. When uncertain between interpretations, **ask once** (he'll say "ask me 3 questions then run unattended"); otherwise act. Surface tradeoffs as choices, not prose. Don't keep "helping" past a "stop" — answer what was asked.

## D. Cross-bead collaboration Other beads/chats run concurrently (e.g. [ants-in-taos `b6fcda63`](https://redfish.acequia.io/guerin/.agents/b6fcda63-c171-4293-9d99-75297f4205bb/about.md) shipped a fire model in parallel; another session advanced `dev/engine-update`). Coordinate via **offer-only dock envelopes** (`<bead>/uploads/…md`, "hey-you-it's-me") — never edit another bead's tree. A timely answer in a dock unblocks a sibling (the `mesh.destroy()` leak warning saved an overnight OOM). Watch for **branch divergence** when siblings touch the same repo — reconcile before stacking new work.

## E. The technical spine (recurring principles) - **The catalog is the spine.** Sensor imagery, sim output (Rothermel→ToA), and pose all reduce to STAC items the same viewer plays back. One `?stac=` URL = test any viewer against any data. - **Soft priors everywhere.** ADS-B track, VO rotation, fire ToA, and **camera elevation** are all reweightable, URI-addressable nodes — not truth (every-constraint-is-soft); estimates relax via through-the-lens calibration / bundle adjustment. - **Re-drape on terrain LOD.** Anything draped on the DEM (fire ToA, camera markers/cards, perimeters) must re-sample `heightAt` and rebuild on drift, or it sinks below the refined terrain. - **URI-as-resource.** Panels/timelines become web components; elevations/poses become URI'd assertions; the union of catalogs is just tree data. Don't reify — bind + mount.

## References (bead cross-links) - Bead: Shape Up Studio · [canonical](https://redfish.acequia.io/guerin/.agents/86bbc504-b8b1-49bb-8b77-bbfdf1614a74/) - Bead: Ants In Taos · [canonical](https://redfish.acequia.io/guerin/.agents/b6fcda63-c171-4293-9d99-75297f4205bb/)