# HANDOFF — 2026-11-01 (exe renamed, depot builds, output rule enforced) ## State - Branch `main`, level with `origin` through `8f79b20`; this unit is local. - **The shipped exe is `LlamaCasty.exe`** (`AssemblyName` renamed; four pack URIs fixed — the docs said three, `KeepBroadcastDialog.xaml:5` was the fourth). Guarded by `AssemblyIdentityTests`. - **`scripts/publish.sh`** stages `artifacts/steam-stage` and refuses to finish if `ffmpeg\`, the licence, privacy or notices file is missing, or test assemblies leaked in. Output 257 MB. - **The output-profile rule is built and enforced**: `Models/OutputProfile.cs` (921,600 px / 30 fps, fail closed) resolved once in `BuildEncoderOptions` — one ffmpeg process, two outputs. `MainViewModel.DeveloperMode` bypasses it in Debug only. - **Distribution is Steam-exclusive** (2026-10-31): free app + paid edition as a Steam **DLC**; the **$10/month** plan sold off-Steam by Polar, *stated, never sold*, in-app. Entitlement is `steamDlcOwned || polarKeyValid`; the app must start without Steam, falling back to free. - **Site live with Steam** (`a9d07ce`); `www.llamacasty.com` 301s to the apex. ## Next action **Surge, 2026-11-02 → 11-07 — six days, all remaining code.** Undo/redo, the rail gear and the EDIT alignment landed early on 11-01, so day 6 has room. Day 1 unchanged: licensing — `IEntitlement` + Steam DLC + fake, `HasProOutput` on the seam, greyed tiers, licence UI's four states, system messages, licence ID in About. Days 2–6 in `TASKS.md` → "The surge". No scope beyond that list. No polish before day 6. ## Landmines - **⛔ `ExcludeFromSingleFile="true"` on the ffmpeg content** — without it the publisher bundles libav\*.dll into the exe and the app ships unable to find ffmpeg. Recipe in `MyMistakes.md`. - **Dev affordances are compiled out, not hidden** — `DeveloperPanel` is removed from the Release build; `Helpers/DevBuild.cs` is the single source for the flag (never `const`). - **Nothing may gate a feature.** The only paid delta is the output profile; `ShowBrandFlash` stays `false` and entitlement must never enable it. - **No checkout inside a Steam build** — the Wallet rule. The monthly is named, never sold, in-app. - **The org access token never ships.** `organization_id` is public; the token is not. - **The site publishes the model, never the numbers**, and never takes payment or links a checkout. - **No self-updater and no version banner**: Steam updates the app. - Pre-existing: the **full test suite hangs** (WASAPI teardown) — per-class runs; `ytLive.Tests` carries 3 xUnit warnings the app-only gate does not see. - Not every hex is a theme colour — `BorderColorPalette`/chat defaults are USER DATA, not tokens.