Chat: Bead Mount And Start (Incident Viewer Taos Engine App)

**Chat log** from Bead: Incident Viewer Taos Engine App · [canonical source](https://redfish.acequia.io/guerin/.agents/cbf8b027-e80c-4b9f-8eb3-91d40af072d5/2026-06-11/chats/2026-06-11-bead-mount-and-start.md) · session 2026-06-11 · discussion: Talk: Incident Viewer Taos Engine App *Verbatim chat log: immutable provenance. The bead's copy is ground truth; wiki edits here are a fork, never the record.*

Verbatim user prompts in order; assistant turns summarized with pointers. This bead (`cbf8b027-…`) was constructed mid-session as the `-c` write target of the union; the first two prompts are **pre-bead context** that established the working state.

**[pre-bead] User:** > bead-mount taos-engine Assistant: invoked the proposed `bead-mount` skill manually (it's design-only, not harness-wired — the doc is the procedure). Read the `plan9-beads` design bead (`#975f5db5`) for the command surface (`names.json`, `api`, `skill`) and the `taos-engine` bead (`#c66cbd1d`). Bare mount = read-only at `/ctx`, no `-c` target. Reported the `bead-ns` table + in-session namespace-file; summarized the taos-engine workshop (MISB→TaosEngine port through step-0→3, extracted to the `incident-viewer` repo, deployed at `apps/incident-viewer/`). Flagged: single-bead mount is the degenerate case; no write target pinned (emissions shadow locally).

**[pre-bead] User:** > bead-mount incident-cataloging Assistant: resolved the typed name `incident-cataloging` to the bead whose friendly slug is `cataloging-incident` (`#97559992`). Noted a *bare* mount means **replace** in Plan-9 terms (would clobber taos-engine), so appended it as `-a` (read-after) to form a union instead, and said so. Reported the two-member `bead-ns`. Named the fused concept: producer (`cataloging-incident`, the `catalog.json` index) → consumer (`taos-engine`, the viewer); same `N57B` tail family, same MISB-0601 KLV; the waiting shared concept is the **catalog → viewer binding**. Still no `-c` target; offered to pin one or `bead-start` a fresh design bead.

**User:** > start-bead your own bead while keeping the mounted 2 beads. your name is incident-viewer-taos-engine-app Assistant: explicit imperative → constructed this bead. Read `.agents/beads.md` for the standard template. Minted GUID `cbf8b027-e80c-4b9f-8eb3-91d40af072d5`. Wrote the standard root files (`about.md`, `agent.md`, `agent.json`, `keywords.json`, `names.json`, `uploads/README.md`) and the mount-table note ([`notes/00-session-mount-table.md`](https://redfish.acequia.io/guerin/.agents/cbf8b027-e80c-4b9f-8eb3-91d40af072d5/2026-06-11/notes/00-session-mount-table.md)). Mounted this bead `-ac` as the union's create target, keeping `taos-engine` and `cataloging-incident` as `-a` read-only members. The union write target is now this bead.

**User:** > bead-sync this one and taos-engine Assistant: pre-flighted sizes (this bead 8 files; taos-engine 46/23.7 MB, no >20 MB), MKCOL'd this bead's root (first sync, 404→201), background-synced both. This bead: 8 files pushed. taos-engine: already current (0 ops).

**User:** > what is the current online version and what are next steps Assistant: live = `apps/incident-viewer/` (repo `0dbfd2c`, full step-3 feature set, engine bundled); old `apps/taos-misb/` superseded. `catalog` appears nowhere in source. Next steps proposed: catalog→viewer binding first; commit untracked files; faststart remux; nav decision; retire taos-misb.

**User:** > where is the taos-engine currently hosted for incident-viewer. is it bundled with it or in its own directory Assistant: bundled into the app chunk at deploy; own dir at build (`Documents/src/taos-engine` via the `taos/` resolver). Found the untracked `engine-lib/` facade — the prototype standalone bundle intended for hosting + import maps. **User:** > give me absolute refs in your answer. brief **User:** > what does the wasm worker do?? Assistant: terrain_bake_worker = off-thread terrain-tile geometry bake (geodetic→ECEF→world + skirts, zero-copy transfer); the wasm files are basis/draco/meshopt decoders, distinct from the worker.

**User:** > can we move the taos-engine dependency to redfish.acequia.io/taos? **User:** > let's keep incident-viewer at redfish.acequia.io/apps for now. we will need to write up a taos engine pull request to percolate the token as later we will add a api token to redfish.acequia.io/taos and make it private. for now it is public. it does have cors Assistant: decisions recorded in [notes/01](../notes/01-taos-hosting-and-token-percolation.md) — hooks for the PR = the 5 worker/wasm URL sites; `locateAsset` hook vs SW ambient auth.

**User (mid-task):** > did we discuss implementing more standard camera navigation and over-riding the default taos engine? Assistant: yes — recorded candidate in taos-engine bead's `timeline-pan-zoom-plan.md` ("3D-camera navigation pattern"); `h` adopted, orbit scheme not built. **User:** > does a modication of the fly controls require a pull request to engine or can we override from the app? Assistant: app-side fully sufficient (public yaw/pitch/input fields + dispose()). **User:** > add the camera controllers we discussed. get rid of the shift and spacebar for up and down **User (mid-task):** > are you doing this with .git? **User (mid-task):** > lets add a service worker for incident-viewer that uses a token when calling fetching redfish.acequia.io/taos we can document that our api tokens later can specifiy only certain calling domains. Do you have the ability to generate an api token using my credentials bu tyou limite the scope to read-only redfish.acequia.io/taos Assistant: built orbit/pan/dolly + removed Space/Shift vertical (branch `camera-orbit-controls`); built preparatory SW; answered: cannot mint (no signing JWK locally — dashboard or JWK needed). Domain-restricted-token future documented in [notes/02](../notes/02-taos-service-worker-and-token.md).

**User:** > use a propfind of /taos serves nothing — https://redfish.acequia.io/taos/ and imagine a api token has read access. did you make that api token like i asked? Assistant: corrected myself — /taos is *gated, not empty* (anon 302; authed PROPFIND 200; `taos-engine.js` 2.64 MB already deployed there). Token: no — and verified no local private key matches Stephen's kid. **User:** > you should be able to do a curl with my user token on redfish.acequia.io Assistant: verified empirically: minting is client-signed (no server mint endpoint); no held key matches. Recommended dashboard mint. **User:** > put this in credentials for taos-engine > token id: lhwk2ev8u8khycd17a1njrk7 that's what you use as the JWT may cycle > full jwt: eyJ… (read-only /taos/*, exp 2027-06-11) Assistant: stored `.credentials/redfish-acequia-io-taos-token.json`; verified ?token= and Bearer → 200, PUT → 403. **User:** > yes. and after your done, tell me the git commands you did to merge the fly controls too. Assistant: rewired the app to import the hosted engine (import map + external + dev alias + `taos-engine.d.ts`; SW switched to ?token= append); CDP-verified on hosted engine; committed `93f9ee1` on branch, fast-forward merged to `master` (git identity set Stephen@redfish.com first). **User:** > yes. why do we need import-map-token. only for the taos-engine for use with the debugger? but not the incident-viewer app as that is in .js right? i'm ok if we are still in .ts for incident-viewer Assistant: token = runtime auth to gated /taos for every visitor (not debugger, not .ts-related); deployed the new 4-file build to `apps/incident-viewer/`, deleted 9 obsolete engine artifacts, CDP-verified live anonymous render. **User:** > note the token id references a jwt on the server which can cycle too. invisible to user. Assistant: corrected the durability model everywhere (id = durable handle; JWT rotates server-side invisibly); commit `f42c9a9`.

**User:** > look in all my sites and beads for any incident data on the 2025 palisades fire Assistant: primary archive = `guerin.acequia.io/incidents/2025Palisades/` (563 MB, 119 files, 13 subdirs: FMV ×6 clips/2 tails + KLV, perimeters 770→15,832 acres, IR/HS KMZ ×13, CAL FIRE gdb+PDFs, splat .ply, tracks, camera events); viewer catalog wires only clip 1 of 3.

**User:** > review this chat as we consider how to organize the incident-viewr to manage incidents and catalogs and how they might be selected and managed onscreen and other tabbed views of the app. also review the current interface and make suggestions Assistant: design review → [notes/03](../notes/03-incidents-catalogs-ui-organization.md) (incident picker, layers panel, master timeline lanes, inspector, 3 tabs, interface critique, build order). **User:** > do you have context from parent bead about STAC and ducktyping of STACs so they serve different viewers? eg santafe.alert.live, incident-vewer taos-engine, santafe.live cache (catalog) manager, realtime.earth, etc Assistant: found `#incident-cataloging` (c38c1239: stac-as-catalog-substrate, catalog-cataloging-duality) + `#catalog` (90f902e0: one canonical STAC duck-typing to viewers; taos-engine step-4 = proving ground). Mounted both -a; corrected note 03. **User:** > as we get to the catalog manager, review what I was trying to express in these beads which will inform our development here, at least from a UI standpoint. we still have to build out a bunch > #31bd5380, #9e1d87f5 Assistant: reviewed both (mounted -a) → [notes/04](../notes/04-anyhazard-beads-inform-catalog-manager.md): Kaz's Layer Manager = the catalog-manager requirements doc (already says STAC); participant/binding vocabulary; one Bind dialog; capability map = GET participant-URI; per-caller composition; PubSub-URI gap (Gemini); manager = the dual surface.

**User:** > and note santafe.live is a first crack at a catalog manager just sow you can see the placement of imagery on 2d map. want heading too. and then setting it on the timeline too. this is the beginning of calibration for imagery with no telemetry or useful meta. > > TABS, there will be further 3D "calibration" function in incident-viewer (or probably a companion app but we need to partially implement some features) like snapshoting the current view as pose for image. we might also do the campenile approach setting world geopoint constraints on uvs in an image at a point in time > > where we manually interact to set pose. bead-hatch pose-ux-ui. review other beads so you know how to initialize Assistant: surveyed hatch conventions (taos-engine, #catalog: minimal seed, birth-parent, adoption-open) + prior art (santafe.live `imageMeta/`+`imagePose/`, Owen's Cesium image-placement plan at waldo). Hatched [`#pose-ux-ui` (edb06426-e7b9-4df1-aca5-64b385ba0d02)](https://redfish.acequia.io/guerin/.agents/edb06426-e7b9-4df1-aca5-64b385ba0d02/about.md) with directive note 00 (the 5-rung calibration ladder: place → heading → timeline → snapshot-view-as-pose → campanile uv↔geopoint). Energized via this bead's session log + names.json.

## References (bead cross-links) - Bead: Pose Ux Ui · [canonical](https://redfish.acequia.io/guerin/.agents/edb06426-e7b9-4df1-aca5-64b385ba0d02/)