**Bead** `c66cbd1d-453c-41f8-8440-179502f25de4` · [canonical URI](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/) · discussion: Talk: Taos Engine This page is the wiki facet of a [bead](https://redfish.acequia.io/guerin/.agents/); the bead is the source of truth.
> Seed. Hatched minimal on Stephen's instruction ("start as small as possible we can fill in"). Sections are stubs to be filled.
## Identity - **name:** `taos-engine` - **URI:** https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/ - **GUID:** `c66cbd1d-453c-41f8-8440-179502f25de4` - **Opened:** 2026-06-09 - **Birth-parent:** [`2b17d0ea-bd50-4ec7-acbc-a6d1a454547c`](https://redfish.acequia.io/guerin/.agents/2b17d0ea-bd50-4ec7-acbc-a6d1a454547c/about.md) (a bearer-writer agent identity node). Immutable. Adoption-open.
## Motivation (why a GUID) A workshop for **duplicating the MISB FMV viewer in TaosEngine** (Brendan Duncan's WebGPU/WebGL geo engine). The MISB viewer (`apps/viewer-3d/`, documented in bead `#c38c1239`) is the thing to reproduce; TaosEngine is the new substrate.
## Mechanism (what this bead does) - Holds the captured **prototype** we build from: [2026-06-09/artifacts/geo_osm_projection-prototype.html](2026-06-09/artifacts/geo_osm_projection-prototype.html) — TaosEngine's `geo_osm_projection` sample (terrain + cast-an-image-onto-terrain projection = analog of the MISB panosphere). Source: `https://brendan-duncan.github.io/TaosEngine/dist/samples/geo_osm_projection.html`. - (Next, TBD) the TaosEngine MISB-viewer build itself.
## Folder Layout - `2026-06-09/{notes,skills,chats,artifacts}/` — standard session homes by kind. - `uploads/` — inbound dock.
## Session Log - **2026-06-09** — Hatched minimal by its birth-parent (`#2b17d0ea`, a bearer writer) at Stephen's request. - **2026-06-09** — Captured the TaosEngine `geo_osm_projection` sample as the build prototype (`artifacts/geo_osm_projection-prototype.html`, single HTML, asset paths absolutized so it runs standalone). Goal set: duplicate the MISB viewer in TaosEngine. - **2026-06-09** — Wrote the build plan: [2026-06-09/notes/taos-misb-build-plan.md](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/notes/taos-misb-build-plan.md). Reverse-engineered TaosEngine's API from the minified dist bundles (no public source reachable): `GeoScene`/`addRasterDemTerrain`/`heightAt`, `atLonLat`/ECEF helpers, `createPerspective`+`FlyControls`, and the **`Projector` component** (the panosphere analog — `setPosition`+`lookRotation`, `fovY`/`aspect`/`shape:'perspective'`/`blend`/`opacity`, texture via `textureFromImage`). Mapped every MISB-viewer component → TaosEngine; reuse boundary = only the rendering layer ports (telemetry/catalog/timeline are engine-agnostic). Smallest first step = one static projector at a MISB pose, still frame onto terrain. Logged 8 open questions; **Q1 (no live-video-texture path found in dist) is blocking.** Chat: [2026-06-09/chats/2026-06-09-misb-build-plan.md](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/chats/2026-06-09-misb-build-plan.md). - **2026-06-10** — **API confirmation pass.** Source repo confirmed private (404 web/git/API) and no sourcemaps, but the public dist ships a samples catalog with **un-minified per-sample app bundles**. Mined `projector_test`, `geo_photo`, `geo_osm_buildings` + grepped the core engine bundle. Confirmed the Projector API (`new Projector()` + props incl. `focalLength` mm / `fovY`, `crop`, `blend`, `edgeFalloff`; `setPosition` + `rotation=lookRotation(dir)` — note `lookRotation` is sample-local, must port). **Q1 RESOLVED:** native video projector via `source:{kind:'video',video,backend:'copy'}`; core `resolveVideo` does per-frame `copyExternalImageToTexture` (no manual pump; `backend:'external'` declared-but-unimplemented). **Q3 RESOLVED:** `add3DTiles` consumes Google Photorealistic 3D Tiles via Cesium Ion (faithful, needs token), OR `addVectorTiles` OSM 3D buildings + `addRasterDemTerrain` (token-free). Build plan revised in place (appended dated "API confirmation pass" section; prior reasoning preserved). Step-0 now fully specifiable from public material. Chat: [2026-06-09/chats/2026-06-10-api-confirmation.md](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/chats/2026-06-10-api-confirmation.md). - **2026-06-10** — **Real source acquired.** Stephen is a member of the private repo; cloned the full source via Git Credential Manager (his cached login) to `c:/Users/steph/Downloads/TaosEngine-src` (2717 files). This supersedes the dist reverse-engineering and **dissolves Q6 (maintainability/minified-symbol risk)**. Now readable directly: real TS (`src/renderer/features/projector_feature.ts`, `src/assets/texture.ts`, `src/geo/`), the actual sample source (`samples/geo_osm_projection.ts`, `samples/projector_test.ts`, `samples/geo_photo.ts`), and generated API docs under `docs/`. Q1 (native video) and Q3 (basemap) stand confirmed and are now verifiable against real source. Source dir is outside the bead (referenced by path, not copied in). - **2026-06-10** — Resolved the **Projector intrinsics → MISB FOV mapping** (Stephen's optics catch) against real source: `focalLength` overrides `fovY` via `2·atan(sensorHeight/(2·focalLength))`; HFOV is implicit in `(vFOV, aspect)`. Decision for the port: `focalLength=null`, `fovY=VFOV`, `aspect=tan(HFOV/2)/tan(VFOV/2)` — drive from MISB's measured angles, recomputed per frame. Note: [2026-06-09/notes/projector-intrinsics-and-misb-fov.md](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/notes/projector-intrinsics-and-misb-fov.md). - **2026-06-10** — **Built step-0** (first running code). New TaosEngine sample `samples/misb_step0.ts` + `.html` in the cloned repo (`c:/Users/steph/Downloads/TaosEngine-src`): ONE `Projector` at the **Palisades N57B 22:30:16Z** sensor pose (sensor ECEF + `rotation=lookRotation(frameCenterEcef−sensorEcef)`) with MISB intrinsics verbatim (`focalLength=null`, `fovY=VFOV=23.577°`, `aspect=tan(HFOV/2)/tan(VFOV/2)=1.835`, near/far bracketing slant 6392 m), casting a test-grid onto token-free AWS-Terrarium raster-DEM terrain at the frame-center footprint. Real-source API (not the dist guess): `Engine`/`GameObject`/`Camera.createPerspective`/`CameraController`/`deferredPreset({projectors:true})`. **Verified:** `tsc --noEmit` whole repo → 0 errors; Vite serves the page + all modules (200, no overlay); page executes through `Engine.create()` (headless has no WebGPU adapter, so no true render — not forced per brief); pose/intrinsics numerically sane (sensor world-Y 4737 m above terrain, look-dist vs slant 0.34 m, footprint 4897×2668 m = telemetry target_width). Source-of-record + README + the headless capture in [2026-06-09/artifacts/step-0/](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/artifacts/step-0/). Run: `cd c:/Users/steph/Downloads/TaosEngine-src && npm run dev` → http://localhost:5173/samples/misb_step0.html. **step-1 = live video** (`source:{kind:'video',video,backend:'copy'}`). Chat: [2026-06-09/chats/2026-06-10-step0-build.md](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/chats/2026-06-10-step0-build.md).
- **2026-06-10** — **Step-0 + Step-1 validated (CDP self-test).** Established an autonomous test loop: `Downloads/cdp-shot.mjs` drives a real Chrome (`--remote-debugging-port=9222 --enable-unsafe-webgpu`), navigates, reads `window.__misb.readPose()`, screenshots. Found + fixed two root causes: (1) the fly-controller's **pitch sign is inverted** (negative pitch looks UP) — the true source of every "looking at sky/sun" symptom; aim now negates pitch; (2) **un-configured aerial perspective** washed the terrain to flat pale-teal hiding imagery — fixed with color sky + `lighting:{disableAerial:true}` (per `geo_osm_terrain`). **Step-0:** test grid draped correctly on real Esri imagery + DEM at the Palisades footprint. **Step-1:** the clip's **live FMV video** (`source:{kind:'video',backend:'copy'}`, 1920×1080) projected onto terrain at the footprint. Core capability (MISB FMV on TaosEngine terrain) proven. Camera auto-aims at the footprint on load; `P` re-frames. - **2026-06-10** — **step-2 + bead catch-up + sync.** Telemetry-driven per-frame pose (1558 samples, interpolated). Copied the current `misb_step0.ts/.html` in as [2026-06-09/artifacts/step-2/](2026-06-09/artifacts/step-2/) (the `step-0/` folder was a stale snapshot), with the three CDP-verified screenshots (step-0 grid-on-imagery, step-1 live video, step-2 telemetry tracking), the `cdp-shot.mjs` verify harness + [skills/cdp-verify-webgpu.md](2026-06-09/skills/cdp-verify-webgpu.md), and a [step-2 README](2026-06-09/artifacts/step-2/README.md) (run / verify / continue-from-here). Clone pinned at `7ed597e` (tag `misb-port-pin`). Synced the bead to the network. Next = step-3 (multi-aircraft + UTC timeline + layers panel, ports ~verbatim from `apps/viewer-3d/`). - **2026-06-10** — **Clone relocated** out of `Downloads` into a proper repos home: `c:/Users/steph/Documents/src/taos-engine` (new `Documents/src/` parent for non-site git repos; see reference_taosengine-docs-and-tooling). Same repo, untouched — `origin` `github.com/brendan-duncan/TaosEngine.git`, `main` @ `7ed597e`, all uncommitted MISB additions intact. Earlier dated entries above keep the original `Downloads/TaosEngine-src` path as historical record; the operational run/deploy docs (`deploy-recipe.md`, step-0/step-2 READMEs) now point at the new path. **Note: the MISB port adds files (`samples/misb_step0.*`, `vite.misb.config.ts`, `dist-misb/`) but does not edit any TaosEngine engine source — the only tracked diff is incidental `package-lock.json` npm churn.** - **2026-06-10** — **Shipped — out the door.** Production-built the step-2 viewer (single-page Vite build via `vite.misb.config.ts` → `dist-misb/`, relative asset paths, ~6 MB / 260 chunks), CDP-verified the **built bundle** renders (live FMV on Esri imagery at the footprint, not just the dev server), and deployed all 261 files to **https://redfish.acequia.io/guerin/apps/taos-misb/** (sibling of the original `apps/viewer-3d/`). Both deps already public+CORS on guerin, `video.crossOrigin='anonymous'`, HTTPS secure-context — runs from any origin. Authed GET = 200; gated by default (anon → `register-user`, same as `viewer-3d`); one `.acequia-access.json` = `{"read":"anonymous","recursive":true}` away from world-public (left off, Stephen's call). Recipe: [2026-06-09/notes/deploy-recipe.md](2026-06-09/notes/deploy-recipe.md). - **2026-06-10** — **Made the deploy world-public.** Dropped `apps/taos-misb/.acequia-access.json` = `{"read":"anonymous","recursive":true}`; anonymous GET of the entry, viewer, and engine chunk now all return 200. Shareable to anyone: **https://redfish.acequia.io/guerin/apps/taos-misb/**. (Clone relocated `Downloads/TaosEngine-src` → `Documents/src/taos-engine`; operational docs updated.) - **2026-06-10** — **step-3 shipped: timeline scrubber + transport.** Added a bottom transport bar (play/pause button, current/duration, draggable scrubber) and YouTube-style keys: **space/k** play-pause, **j/l** ∓10s, **,/.** frame-step (paused), **f** fullscreen; moved the network-log toggle off `L` → backtick. The projector pose already follows `video.currentTime`, so scrubbing drives the projection for free. **Space conflict resolved** — the fly-controller uses Space to ascend, so transport keys are handled in the **capture phase** on `window` (preventDefault + stopImmediatePropagation) to beat the controller's document listener. CDP-verified (clean single Chrome): auto-aim fires, video loads (rs=4, 52.3s), Space toggles play/pause, seeking moves the telemetry-driven projector, 0 exceptions. Rebuilt + redeployed to the live public URL. **`moov` finding** (Stephen's catch): the Palisades MP4 is **`moov`-at-back** (atoms `ftyp,free,mdat`) — not faststart; seeking works via guerin's byte-ranges but with startup latency. Faststart remux (`ffmpeg -c copy -movflags +faststart`) is the smoothness fix, offered. Test-hygiene lesson recorded in [skills/cdp-verify-webgpu.md](2026-06-09/skills/cdp-verify-webgpu.md): stale/multiple CDP Chrome targets cause **false** failures (camera frozen at seed, video rs=0) — kill chrome between runs.
- **2026-06-10** — **step-3 anti-flash (scrub/frame-step no longer flashes).** Two complementary fixes: (1) **rVFC-managed texture** — the projector now samples an app-managed `GPUTexture` refreshed only on `video.requestVideoFrameCallback` (a real decoded frame), not the live `<video>` re-copied every engine frame (`backend:'copy'`), which copied a blank surface mid-seek → the flash. The last good frame now holds through a seek. (2) **process-latest-on-complete** for the scrub seek (Stephen's house pattern, [.ai/process-latest-on-complete-UI-pattern.md](../../../../.ai/process-latest-on-complete-UI-pattern.md)) — a single-slot `pendingT` overwritten on each `input`; the next seek issues on the previous one's `seeked`, so fast drags skip the intermediates instead of backing up a seek queue. CDP-verified deterministically (paused): burst `[11,13,15,16,17]` converges to **exactly 17**; Space toggles play/pause; projector telemetry-driven on seek; 0 exceptions; texture path renders. Redeployed live. - **2026-06-10** — **step-3: detailed UTC timeline panel.** Replaced the range scrubber with a **canvas ruler**: minor + major hash marks on round **UTC** boundaries, major labels in UTC mm:ss, a playhead, drag-to-scrub (process-latest + rVFC preserved). **Time model is UTC** (DST-proof, Stephen's directive) — each video second maps to absolute UTC via the telemetry `precision_time_stamp` (clip start `2025-01-07T22:29:06.876Z`); a local-time *view* is a later formatting toggle (`fmtUTC` swaps `getUTC*`→`getHours…`). The visible window `[viewStartMs, viewEndMs]` is a variable so the **next phase's pan/zoom** (cf. `santafe.live/index.html`) only moves/scales it; all coords already map through it. CDP-verified: UTC anchor parsed, canvas seek → exactly 0.7·dur with the UTC readout tracking (`22:29:43Z`), Space toggles, 0 exceptions. Deployed. Verify image: [2026-06-09/artifacts/step-2/verify-step3-utc-timeline.png](2026-06-09/artifacts/step-2/verify-step3-utc-timeline.png). - **2026-06-10** — **`h` fly-to-sensor + timeline pan/zoom.** (1) **`h`** flies the view camera into the current imagery (sensor) camera pose — a one-shot ~0.8 s exponential ease to the sensor position looking along its line of sight (cf. gsd `camera-pose.html` "press H"); reanchor-safe (tracks the live world target each frame), cancels on manual input (`canvas` pointerdown / WASD). (2) **Timeline pan/zoom** (per `santafe.live/timeline.js`): **wheel = zoom** anchored at the cursor, **shift-drag = pan**, plain-drag stays scrub; window clamped to the clip span (`NaN ⇒ full`); auto-follows the playhead when zoomed + playing. CDP-verified (fresh Chrome): flyTo converges 427→46→14 m then `flying=false`; wheel zoom 52 s→45.5 s; canvas seek + Space hold; 0 exceptions. Deployed. Verify: [verify-h-flyto-sensor-view.png](2026-06-09/artifacts/step-2/verify-h-flyto-sensor-view.png). **Nav-pattern note** (Stephen's ask): `camera-pose.html` is three.js **OrbitControls — left-drag orbit · scroll zoom · right-drag pan**; recorded in [timeline-pan-zoom-plan.md](2026-06-09/notes/timeline-pan-zoom-plan.md) as a candidate 3D-camera control scheme (we currently use TaosEngine WASD-fly). - **2026-06-10** — **`h` now matches intrinsics too (image fills the screen) — sensor-lock.** Stephen's catch: a pose match must match **FOV**, not just position/orientation. `h` is now a toggle that eases the view camera into the sensor pose **and** sets `cam.fov = live sensor vfov` (radians; `Camera.update()` rebuilds the projection each frame), then **holds** the exact match while it plays (`sensorLock`) so the projected imagery keeps filling the view (projector ≡ viewer ⇒ every projected pixel lands on its own screen pixel). `h` again / manual input releases and eases fov back to 60°. CDP-verified: converges to `dist=0`, `lock=true`, `fov` tracks the live sensor vfov (`~0.39 rad`); image fills (terrain only at the sides because a 2:1 capture is wider than the 1.835 sensor aspect — fills on a normal window). Deployed. Verify: [verify-h-fov-match-fills.png](2026-06-09/artifacts/step-2/verify-h-fov-match-fills.png). **Next (greenlit): the sphere cap** — see [sphere-cap-plan.md](2026-06-09/notes/sphere-cap-plan.md). - **2026-06-10** — **`h` FIXED (it was aiming the wrong way) + reverted the fov-fill.** Stephen: "it's not working" + "don't worry about filling the screen — that would mess up overlay accuracy." Root cause (found by computing the camera's forward from the post-`h` quaternion): a **yaw sign error** — `toYaw = atan2(look.x, −look.z)` pointed the camera **east** while the frame-center is **west**, so `h` flew you to the sensor but aimed away from the footprint → you saw plain terrain, no FMV. (The auto-aim `aimAtFootprint` hides the same latent bug because it aims straight down where `look.x≈0` — left as-is, masked.) Fix: `toYaw = atan2(−look.x, −look.z)`. Also **removed the `cam.fov` match** (per the overlay-accuracy note) — `h` now changes **pose only** (position + orientation), fov stays 60°, so the footprint is a centered patch, not a forced fill. CDP before/after verified the FMV is centered after `h`. Deployed. Verify: [verify-h-before.png](2026-06-09/artifacts/step-2/verify-h-before.png) (overview) / [verify-h-after.png](2026-06-09/artifacts/step-2/verify-h-after.png) (at the sensor, FMV centered). Supersedes the earlier "matches intrinsics/fills" entry.
- **2026-06-10** — **`h` final: fov-match RESTORED + yaw fix (no aspect stretch).** Clarification: Stephen wanted the **fov match kept** (correct intrinsics) — what to avoid is an **artificial aspect stretch** to fill the window (that distorts → breaks overlay registration). So `h` now matches the sensor **pose + vertical fov**, with **aspect = the window's** (image letterboxes to fit, never stretched). Combined with the yaw fix, the FMV fills the view and is correctly aimed; the burned-in HUD/telemetry reads true. CDP-verified at 1280×800: `locked=true`, cam at sensor, `yaw=38°`, `fov=0.41` (sensor vfov), 0 exceptions. Deployed. Verify: [verify-h-fov-match-correct.png](2026-06-09/artifacts/step-2/verify-h-fov-match-correct.png). (Supersedes the prior "removed fov match" entry — that was my misread.) - **2026-06-10** — **Opacity slider + `p` projection on/off.** Added a **settings panel** (top-right): a **Projection** checkbox + an **Opacity** slider (0–1) driving `projector.opacity`. **`p`** toggles projection on/off (synced with the checkbox); the slider sets the "on" opacity (`projector.opacity = projectionOn ? projOpacity : 0`). **Re-frame moved off `p` → `o`** (kept). Panel pointer/wheel events stop-propagate so they don't drive the camera. This is the opacity-registration foundation ("we'll be playing with opacity soon" — fade the FMV to see terrain through it). CDP-verified: `opacity 1 → 0.3 (slider) → 0 (p-off) → 0.3 (p-on)`, 0 exceptions. Deployed. Verify: [verify-opacity-0.45.png](2026-06-09/artifacts/step-2/verify-opacity-0.45.png) (terrain visible through the 45%-opacity FMV). - **2026-06-10** — **`p` = image on/off (mode-agnostic) + timeline key-trap.** (1) Relabeled the toggle **Projection → Image**: `p`/checkbox toggle the **image** regardless of how it's shown (`imageOn`/`imageOpacity` → `projector.opacity` now; the sphere/panosphere will read the same later). (2) **Bug:** shift-drag-panning the timeline also triggered the fly-controller's **Shift=descend** (the keyboard event still reached the controller even though the pointer events were stop-propagated). Fix per Stephen: **trap camera-movement keys while the pointer is over the timeline** — a capture-phase handler `stopImmediatePropagation`s Shift/WASD/arrows/Ctrl when `overTimeline`, and `pointerenter` clears any already-held keys from the controller's `_keys`. CDP-verified (`pan-trap.mjs`): shift-drag pans the window (`panned:true`) with **camera Y unchanged** (no descend). Deployed. - **2026-06-10** — **Sphere cap (panosphere) built + `i`/`p` split + Space removed.** Corrected control model: **`i` = image on/off** (visibility, mode-independent); **`p` = projection MODE** — image onto the **World** (projector) vs onto the **Cap** (panosphere). Built the **cap**: `buildCapMesh` un-projects the image grid (u,v) through the perspective lens to ray directions at unit radius (sensor-local), **R = focus distance** as model scale (slider, default = live slant range, "⟲ track slant" reset). **Render-path lesson (cost a cycle):** a plain `MeshRenderer` GameObject is **not drawn** by the geo/deferred pipeline — transparent meshes must be pushed into `frame.transparent` by a **RenderFeature** (per `geo_photo`'s `PhotoGeoFeature`); `ForwardDrawItem = {mesh, modelMatrix, normalMatrix, material, doubleSided}` (doubleSided sidesteps winding). The `CapImage` feature builds the model matrix from the live sensor pose each frame and pushes the draw when `imageOn && mode==='cap'`. Also **removed Space from play/pause** (conflicted with fly-up; play = `k`). CDP-verified: cap renders from the sensor (fills) and as a curved surface from the overview; mode/opacity/focus all wired; 0 exceptions. Deployed. Verify: [verify-cap-from-sensor.png](2026-06-09/artifacts/step-2/verify-cap-from-sensor.png) / [verify-cap-overview.png](2026-06-09/artifacts/step-2/verify-cap-overview.png). Plan: [sphere-cap-plan.md](2026-06-09/notes/sphere-cap-plan.md). - **2026-06-10** — **Extracted to its own repo `incident-viewer` (out of the engine clone) + renamed.** Stephen: the app should not live inside Brendan's clone (it had been dropped in `taos-engine/samples/` during step-0 for dev-server/relative-import convenience — untracked, but still polluting his tree), and "misb" is just one input type. **New home:** `c:/Users/steph/Documents/src/incident-viewer/` — its own **git repo** (first commit `0dbfd2c`): `index.html` + `index.ts` (engine imports rewritten `../src/…` → the `taos/…` specifier) + `vite.config.ts` (a `taosResolve` plugin → `../taos-engine/src`; no `import 'vite'` since there's no local node_modules; no local node_modules **by design** — build borrows the engine toolchain via `cd ../taos-engine && npx vite build --config ../incident-viewer/vite.config.ts`) + `tools/` (the CDP harnesses) + README. Build is now **cleaner**: 10 files (only what the app needs) with `dist/index.html` at root (no `samples/` subdir, no redirect). **Clone restored to pristine** (our files removed, `package-lock.json` reverted; `git status` clean; `misb-port-pin` tag kept). **New canonical URL:** **https://redfish.acequia.io/guerin/apps/incident-viewer/** (anon 200, CDP-verified). The old `apps/taos-misb/` is now frozen/superseded. Engine stays a sibling dependency, pinned `7ed597e`.
## Modus Operandi (how to interact) - `#taos-engine` to read this bead; `@taos-engine` (PUT into `uploads/`) to message it.
## Capabilities TBD.
## Lifecycle - Active, un-energized: no inbound reference yet, not synced. Decays if nothing references it. `/bead-sync` + an inbound link energizes it.
## Limitations - Empty seed; everything substantive is still to be written. - **2026-06-14** — **taos-orama skill: the repo is now queryable.** Built a full-text Orama index over the TaosEngine repo (`Documents/src/taos-engine`, ~1,426 files: `.md/.ts/.tsx/.d.ts/.html`, skipping deps/dist/binaries) so an app-dev agent answers "does taos do X / what's the API for Y" with one query instead of grepping the 2,700-file engine. Reuses the **bead-orama** core (`6f5044df…/skills/bead-orama`) — only the *source* swaps (a repo walker that also indexes `.ts/.d.ts`, prefixing paths `taos/<source|sample|doc|type>/…`). Skill + build script + persisted `taos-index.json` in [2026-06-14/skills/taos-orama/](2026-06-14/skills/taos-orama/SKILL.md). **Verified it closes the "spooky gap":** querying *"google photorealistic 3d tiles"* → top hit `src/geo/google_tiles.ts` = **`GoogleTilesSource`, streams direct from the Google Map Tiles API with the caller's Google key, NO Cesium ion / quota** (sharper than the 2026-06-10 Q3 note). Also surfaces `projector_feature.ts`, `imagery.ts`/`AWS_TERRARIUM`, the video-source path. Next: distil the curated top-20 into a `capability-matrix.md`/`api-reference.md` + a taos-dev `agent.md`/`SKILLS.md` that load by default (this index = the on-demand fallback behind them). Hatched from Stephen's "spooky that you don't have taos beads processed" + reuse of the orama-bead.
## References (bead cross-links) - Bead: Agent Self · [canonical](https://redfish.acequia.io/guerin/.agents/2b17d0ea-bd50-4ec7-acbc-a6d1a454547c/)
See all: Beads