Deploy recipe — MISB viewer (TaosEngine) out the door (Taos Engine)

**Note** from Bead: Taos Engine · [canonical source](https://redfish.acequia.io/guerin/.agents/c66cbd1d-453c-41f8-8440-179502f25de4/2026-06-09/notes/deploy-recipe.md) · session 2026-06-09 · discussion: Talk: Taos Engine

**Live:** https://redfish.acequia.io/guerin/apps/taos-misb/ → redirects to `samples/misb_step0.html`. First shipped 2026-06-10 with the proven single-aircraft FMV-on-terrain build (step-0/1/2).

## Why it deploys cleanly - Both runtime deps are already on public HTTPS with `Access-Control-Allow-Origin: *`: - telemetry `https://guerin.acequia.io/incidents/2025Palisades/air-intel/ts/…_telemetry.json` - video `…_223016230.mp4` (22 MB) - The code sets `video.crossOrigin='anonymous'` → GPU `copyExternalImageToTexture` is allowed cross-origin. - WebGPU needs a secure context; `https://redfish…` satisfies it. - So the viewer runs from **any** origin — nothing tied it to the dev clone except the build.

## Build (only this page, relative asset paths) The repo build uses an explicit `rollupOptions.input` map (not a glob), so a new sample isn't built by default. `vite.misb.config.ts` (in the clone root) reuses the base config (plugins, `base:'./'`, keepNames) and overrides input to just our page → `dist-misb/`: ``` cd c:/Users/steph/Documents/src/taos-engine npx vite build --config vite.misb.config.ts # ~0.4s → dist-misb/ (samples/misb_step0.html + assets/, ~6 MB / 260 files) ``` `base:'./'` makes asset refs relative (`../assets/…`), so it works at any subpath. A small `dist-misb/index.html` meta-refreshes to `samples/misb_step0.html` for a clean entry URL.

## Verify the build before shipping ``` npx vite preview --config vite.misb.config.ts --port 4178 & # CDP against the BUILT bundle (not just the dev server): node c:/Users/steph/Downloads/cdp-shot.mjs "http://localhost:4178/samples/misb_step0.html" out.png 16000 ```

## Deploy (incremental WebDAV sync) ``` curl -X MKCOL -H "Authorization: Bearer $T" https://redfish.acequia.io/guerin/apps/taos-misb/ # first time only TARGET_TOKEN=$T node gsd.live/people/stephen-guerin/dev/WebDavSync/bin/webdav-sync.js \ c:/Users/steph/Documents/src/taos-engine/dist-misb/ https://redfish.acequia.io/guerin/apps/taos-misb/ ``` Re-deploy after a rebuild = re-run the sync (etag-incremental; only changed chunks upload).

## Access model - `guerin/apps/` is **gated by default** — anonymous GET → `302 register-user.html` (same as the sibling `viewer-3d`). Authed users get `200`. - To make it **fully public** (world-readable shareable link), drop one sidecar at the app root, matching `apps/sphere/`: - `apps/taos-misb/.acequia-access.json` = `{"read":"anonymous","recursive":true}` - This is a deliberate choice (the Palisades FMV becomes world-readable); left **off** pending Stephen's call.