Session handoff — 2026-06-23 (camera-grid / firewatch line) (Time Line Web Component)

**Note** from Bead: Time Line Web Component · [canonical source](https://redfish.acequia.io/guerin/.agents/ade9cea6-f50e-4922-8266-4bdd14ed9c73/2026-06-23/notes/00-session-handoff.md) · session 2026-06-23 · discussion: Talk: Time Line Web Component

Durable handoff for a fresh chat (kept in the commons, not in any agent's private memory). Lists **what's live, what's built, the new beads, the beads to MOUNT, and the open threads.**

## This session's raw transcript (relationship-only pointer, off-namespace) - **`.claude` session id:** `1f142a16-9d7a-4af1-91cd-9735971a8167` - **Path:** `~/.claude/projects/c--Users-steph-Documents-sites/1f142a16-9d7a-4af1-91cd-9735971a8167.jsonl` (≈13 MB — the long camera-grid / tie-points / sketch-fix session that produced everything below). - Per the `claude-chats` convention (`65783732…/claude-chats.md`): we record the **relationship, not the body** (the store is machine-private, outside the acequia namespace). To read it, query the **bead-orama** chat-index (`6f5044df…/skills/bead-orama`), don't load the jsonl into context.

## Live apps - **Firewatch camera-grid** — `https://redfish.acequia.io/guerin/apps/camera-grid/` (top-bar **v0.6 · 2026-06-23**). Source = `ade9cea6…/repo/camera-grid/`; deploy via that dir's `deploy.sh` (WebDAV bearer, JWT in `.credentials/redfish-acequia-jwt.txt`); local dev `PORT=5180 node .serve.mjs`. - **Sandy plume** — `…/apps/camera-grid/plume.html` (**v0.2**). Same repo/deploy. - **Shared component** `…/apps/camera-grid/oriented-map.js` (OrientedMap: frustum wedges + green centerlines + red UV→bearing ray); used by plume; **camera-grid index.js still has its own inline copy — migrating it is the open consistency task.**

## Built this session (camera-grid) Frustums (time-based) · red UV→heading ray (grid + inspector, object-fit-accurate) · green centerlines · scrubbable **inspector** (annotation: point/line/polygon, mask stub; mobile-friendly finish: ✓ button / tap-first-vertex; delete = long-press/right-click menu, designed not built) · **timeline** collapse⇄heatmap + selected-camera amber highlight · **`?stac=`** STAC-collection loading (camera + adsb) · **tie-points first cut** (◎ tool + feature palette → colored cast rays + triangulated crossing + residual° on the map; `◌` estimate in the inspector). Panorama deferred.

## New beads opened this session - **tie-points** `fecb418a-6530-48e0-a6fb-c596c664008e` — annotation(UV→geo) / augmentation(geo→UV) / tie-point(uv-uv | uv-geopoint = acequia-link); note 02 = **epipolar cast-ray + residual** (E/F hidden from the user). First cut shipped in the app. - **oriented-imagery** `52670670-fcb1-42ba-90c7-e63e4fc2f231` — OrientedMap component home; **ESRI OIC** ⇄ panosphere φ-θ; **KML NetworkLink/PhotoOverlay** facet; note 03 = GE-NetworkLink as a STAC share-link + **viewer presence** in the incident-viewer + **attention-as-demand transacts for supply**. - **image-based-rendering** `6e03277a-c881-4908-be75-370384937078` — supply(image)/demand(view) camera **duality**; IBR ladder → **decentralized 3DGS+T** (taos-engine splat-training). - **social-foraging** `d2798c01-dce5-412a-8be7-b85806f72214` — personal STACs, events/invites, derivative STACs by space-time+relevance, the **stitcher** flow. - **scene-description** `bb0dd4b5-09a3-4d98-ac0f-eadc3ad52949` — wildfire/smoke/plume/outdoor relevance metadata (`scene:*`), feeds the by-relevance derivative.

## Personas (design roles — engage by spawning a subagent that reads the persona bead first) - **Debbie** = senior-uxui-designer `c4a8e2f1-7b6d-4e93-a5c2-8f1d3b0e9a47` - **Frank** = senior-architect `b2d9f6e1-4c3a-4e58-8a1f-7d0c5b9e2a64` - **Oscar** = bead-orchestrator `4c6470f9-b74a-4aba-b436-5e998f469cce`

## BEADS TO MOUNT to continue (the answer to "what to mount") **Core (always):** `ade9cea6` (build) · `65783732` firewatch app + Debbie's grid-transition sketches (v1/v2/**v3**) · `fecb418a` tie-points · `52670670` oriented-imagery · `6e03277a` image-based-rendering. **Personas:** `c4a8e2f1` Debbie · `b2d9f6e1` Frank · `4c6470f9` Oscar. **Engines / refs (mount as the thread needs):** `74c30681` image-pose-uxui (camera-pose.html = the epipolar E/F engine to reuse) · `9943ac1c` astronomical-pano (panosphere φ-θ calibration / residual cost) · `c66cbd1d` taos-engine (3DGS) · `be9c3efd` incident-viewer (3D viewer / viewer-presence consumer) · `0671f6fa` sandy-fire-camera-tuner (Debbie+Frank fit-fire-model bead). **Foraging line (if continuing that):** `d2798c01` social-foraging · `bb0dd4b5` scene-description · `5b518c35` wildfire-forager · `90f902e0` catalog · `edb06426`/`58091f55` (KML GroundOverlay prior art).

## Open threads / next builds (prioritized) 1. **Tie-points → epipolar LINE in the image** (single other camera) + DEM/panosphere elevation + snap-to-epipolar; reuse `camera-pose.html` E/F as the engine module. (tie-points note 02.) 2. **Grid ⇄ 2D/3D transition**: Debbie's **v3 is live + fixed** (synced to remote); the one open fork = **how a pinned card releases back to auto** (per-card un-pin / global re-auto / auto-release on re-select). Then prototype fly-to-grid in the real app. (65783732 notes 01/03/04.) 3. **OrientedMap consistency**: migrate camera-grid `index.js` onto the shared component. 4. **Plume → 3DGS+T**: seed an initial 3DGS from the plume voxel carve, refine photometrically (taos-engine). (IBR note 00.) 5. **KML PhotoOverlay `/kml` facet** + GE viewer presence/demand. (oriented-imagery notes 02/03.)

## Conventions / lessons (this session, the hard way) - **Verify on the surface the user actually views** — the DEPLOYED URL, not just the local file; **sync before claiming a fix** (a local-only fix read as "done" while the remote stayed broken). - **Always put a small-but-findable version** in every app/sketch interface (build date for freshness). - **Active state lives in the commons, not in `.claude`** (agent-agnostic). This handoff is here for that reason. - Debbie's sketches = **rendered HTML/SVG, never ASCII**, show a **transition**, one answerable fork that PUTs to the bead `request/` dock; she logs to `redfish.acequia.io/skills/sketch-ux/sketch-log.md`. - CDP convention: dedicated headless Chrome; verify geometry + screenshot, don't trust "it parsed."

## References (bead cross-links) - Bead 1f142a16 · [canonical](https://redfish.acequia.io/guerin/.agents/1f142a16-9d7a-4af1-91cd-9735971a8167/) (no page yet) - Bead: Tie Points · [canonical](https://redfish.acequia.io/guerin/.agents/fecb418a-6530-48e0-a6fb-c596c664008e/) - Bead: Oriented Imagery · [canonical](https://redfish.acequia.io/guerin/.agents/52670670-fcb1-42ba-90c7-e63e4fc2f231/) - Bead: Image Based Rendering · [canonical](https://redfish.acequia.io/guerin/.agents/6e03277a-c881-4908-be75-370384937078/) - Bead: Social Foraging · [canonical](https://redfish.acequia.io/guerin/.agents/d2798c01-dce5-412a-8be7-b85806f72214/) - Bead: Scene Description · [canonical](https://redfish.acequia.io/guerin/.agents/bb0dd4b5-09a3-4d98-ac0f-eadc3ad52949/) - Bead: Senior Uxui Designer · [canonical](https://redfish.acequia.io/guerin/.agents/c4a8e2f1-7b6d-4e93-a5c2-8f1d3b0e9a47/) - Bead: Senior Architect · [canonical](https://redfish.acequia.io/guerin/.agents/b2d9f6e1-4c3a-4e58-8a1f-7d0c5b9e2a64/) - Bead: Orchestrator · [canonical](https://redfish.acequia.io/guerin/.agents/4c6470f9-b74a-4aba-b436-5e998f469cce/)