# HANDOFF — 2026-11-09 (TASK 33 done; queue re-ordered for 1.0) ## State - `main`. TASK 21 (video layer + soundtrack), TASK 64 (green/blue screen) and TASK 32·4 (fragmented MP4) are complete; TASK 49 is retired (YouTube owns chat moderation — we just don't paint tombstones). - **Starting art**: `Assets/starting-background.jpg` is the corrected onboarding screen; bundled art is hash-keyed into the layout DB, so `StampDefaultBackgroundAsset` compares bytes and re-stamps. - Left panel alert stack shipped: Steam licence indicator pinned at row 1, event rows LIFO, click → About or Logs with the event's lines painted. Detail: `docs/ai/ui-surface.md`. - Site: demo video (silent loop) is the hero; Starting screen is in the scenes section. - **TASK 33 complete** (`0fa3006`): cause-classified step-down — shed our capture cost, then fps → resolution for the machine; bitrate only for the upload; one-way with recovery behind a flag. - **Creator hands cleared 2026-11-09**: vertical camera check 1–6 pass; vertical cadence 29.8/s. - Tests: 588 green; `FAST=1 ./scripts/verify.sh` ≈ 4 min. ## Next action - **Queue re-ordered (creator ruling):** 35 → 37 → 40 → 55 → Move → 9·5 → 14 slices → 65 (clips) → 66 → 67 → 68 → 36. TASK 34 (scheduling) and 50 (publishing) are **retired** — platform's surface. - **New:** 65 replay clips, 66 timed ticker, 67 per-event alert videos, 68 edit-while-live. - Site repo commits are local (`llgit.llamachile.tube`); deploy is `./deploy.sh`, not a push. - Do not push the app absent a checkpoint request. - **Steam is a wait, not a task:** identity verification pending, tax review in Valve's queue (up to 30 business days). No app IDs, no store page, Release entitlement fails closed. ## Landmines - **The preview pane draws frame-source layers from a whitelist of DataTriggers.** A layer type with no trigger is invisible in the preview while its decode looks healthy. Add the trigger with the layer type; pin it with `MediaPreviewDisplayTests`. - **A bundled-art "version" heal cannot work**: the constant and the embedded resource are compiled at different moments, so a bump can race the image it is meant to ship. Compare bytes (`LayoutStore.AssetMatches`). Also: `AllBackgrounds()` returns only the LIVE scene's rows. - Pack URIs for bundled assets must be assembly-qualified (`/LlamaCasty;component/Assets/…`): the unqualified form resolves against the entry assembly, which is the test host under `dotnet test`. - Media sessions are keyed by **path + look** (`MainViewModel.MediaSessionKey`); never acquire by raw path. - **The audio pipe allows ONE server per name**; DEBUG suffixes it (id, else pid), Release does not. - Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`. - Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).