# HANDOFF — 2026-10-31 (commercial plan settled in docs; next code unit is the entitlement seam) ## State - Branch `main`. Pushed through `c72b61b`; **`90d5140` + this commit are local only** (push at a checkpoint, not per commit). - **Commercial plan is settled and written down**: freemium (free = whole app at a 921,600 px / 30 fps profile, stream **and** recording), Pro = $10/mo or $400 lifetime through **Polar** (key bound to the buyer's YouTube channel ID via a claim page, 2 activations, 7–14 day lease), one portable zip + **winget** as the primary channel, **Steam and the Store parked**, Azure Trusted Signing, Founding 200 promo. New single source of truth: [`docs/ai/commercial.md`](docs/ai/commercial.md). - Docs consolidated this unit: `product.md` (money section → pointer), `decisions.md` (banners + history), `index.md`, `ai.md`, `README.md`, `Distribution.md` (rewritten to release mechanics, 736 → 120 lines), `TASKS.md` (five new rows), `capture.md` (GPL line falsified by the proprietary EULA), plus gitignored `MARCOM.md` / `MONETIZATION.md`. Site repo: `AGENTS.md`, `README.md`, `build-this.md`. - Scoreboard: built, unchanged from the last handoff (HTTP providers + goal inputs still missing). ## Next action 1. **Entitlement seam** — `IEntitlement` over Polar activate/validate/deactivate, channel-ID match, 2 activations, lease + offline grace, `--activate LCYT-…` CLI, fail closed. One Good Dog test. 2. Then the **OutputProfile gate** (one profile consumed by both the stream encoder and the recorder; greyed tier entries; never downgrade mid-stream), the licence UI, and system messages. 3. Scoreboard HTTP providers + goal inputs whenever the creator queues them. ## Landmines - **Nothing may gate a feature.** The only paid delta is the output profile. `ShowBrandFlash` stays `false` and entitlement must never enable it. - **The site publishes the model, never the numbers** — and its CTA ("Coming soon to the Microsoft Store") stays until the creator says the download exists. - **No self-updater, by policy**: `winget upgrade` + a version banner. `StorePackagingTests` asserts it. - Pre-existing: the **full test suite hangs** (WASAPI teardown). Per-class runs are the way. - Not every hex is a theme colour — `BorderColorPalette`/chat defaults are USER DATA; on-stream graphics come from `OutputPalette`. A red settings control is still a bug.