Files
LlamaCasty/HANDOFF.md
T
gramps 7827d239e2 docs(commercial): one source of truth for the money — prices, entitlement, channels
The commercial plan was spread over five documents written in five different weeks,
and they contradicted each other: product.md sold the Store, decisions.md called the
Store dead then re-opened, Distribution.md (736 lines) still described Polar as a
download host, MARCOM.md quoted "no subscription" next to a paid tier, and README.md
promised "free forever". An outsider could not tell what ships.

docs/ai/commercial.md is now the only place money is decided: free = whole app at a
921,600 px / 30 fps output profile covering the recording as well as the stream; 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 with offline grace, fail closed, never
downgrade a running stream; one portable zip + winget primary, Steam and the Store
parked; Azure Trusted Signing (~$9.99/mo), no EV; Founding 200 promo; ~$135/yr costs;
anti-piracy posture and what is permanently rejected.

Everything else now points at it instead of restating it:
- product.md — money sections replaced with pointers; packaging rewritten to
  winget-first, Store parked; signing updated to Trusted Signing.
- decisions.md — graveyard with cause of death for free-forever, the Store ordering,
  the updater, and the 2026-10-30 reversal of the quality-ceiling rejection.
- Distribution.md — rewritten to release mechanics only (artifact, GitHub Releases,
  winget manifest, signing, checklist, takedown): 736 → 120 lines.
- TASKS.md — TASK 54 rewritten, TASK 48's route settled, TASK 10 superseded, five new
  rows (entitlement seam, output-profile gate, licence UI, system messages, packaging).
- README.md — "free forever" replaced with the real split.
- capture.md — obs-backgroundremoval is GPL-3.0 and so licence-INCOMPATIBLE since the
  proprietary EULA; the old "compatible" line was falsified by that change.
- TASKS/task-10, task-48, task-51, task-54 — superseded-banner at the top of each, so
  none of them reads as current policy.
- HANDOFF.md — rewritten: plan settled, next code unit is the entitlement seam.

MARCOM.md and MONETIZATION.md (gitignored) were corrected in place: policy pointer at
the top of each, the flash removed from every live claim, the Polar fee break-even
corrected to ~$900/mo, and the projections flagged as written against a dead model.
2026-10-31 08:32:25 -07:00

2.4 KiB
Raw Blame History

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 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.