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.
This commit is contained in:
+50
-25
@@ -1,15 +1,18 @@
|
||||
# Decisions log — retired paths, kept so they are not re-litigated
|
||||
|
||||
One dated line per decision that **no longer governs**, plus the reason it died. Read only when
|
||||
you are about to re-open one of them. Live rules live in the subsystem files; this is the
|
||||
graveyard with cause of death.
|
||||
you are about to re-open one of them. **Live commercial rules (prices, entitlement, channels,
|
||||
signing, promo) are in [`commercial.md`](commercial.md)**; the other live rules live in the
|
||||
subsystem files. This is the graveyard with cause of death.
|
||||
|
||||
## Monetization
|
||||
|
||||
### 2026-10-30 — freemium replaces free-forever (creator ruling)
|
||||
|
||||
Free tier caps output at **720p30**; **$10/month** or **$400 lifetime** unlocks 1080p. Reverses the
|
||||
2026-10-08 free-forever ruling below, which was a *current decision*, not an absolute.
|
||||
Free tier caps output at **720p30**; **$10/month** or **$400 lifetime** unlocks the higher tiers.
|
||||
Reverses the 2026-10-08 free-forever ruling below, which was a *current decision*, not an absolute.
|
||||
The live detail — pixel budget, stream + recording, channel binding, lease, notice cadence — is in
|
||||
[`commercial.md`](commercial.md); do not re-derive it here.
|
||||
|
||||
**The website publishes the model, never the numbers** (free forever, every feature unlocked, a paid
|
||||
edition at launch) — the terms may still change. The real plan is recorded internally in the site's
|
||||
@@ -33,23 +36,41 @@ edition at launch) — the terms may still change. The real plan is recorded int
|
||||
- **Rejected**: always-on watermark (obscurable — replaced by the flash), hard stream-time cutoffs
|
||||
(a stream dying mid-broadcast reads as broken), soft-limit nagging, freemium feature tiers,
|
||||
donation-only, and any resolution/quality ceiling. Auto step-down (TASK 33) is a *protect the
|
||||
stream* feature, never a monetization penalty.
|
||||
- **Polar** — $50 already paid, 5% + $0.50 Starter, merchant of record. Dormant, not
|
||||
deleted-in-principle: no product, org ID, key prefix or discount code exists
|
||||
(`d105dfa1-…`, `c05fb364-…`, `LCYT-`, `LLAMAFOUNDER`/`LLAMA50`, the portal-validate endpoint and
|
||||
the 14-day offline-grace machine are all gone). `Distribution.md` §4.2/§4.5 keeps the design.
|
||||
stream* feature, never a monetization penalty. ⚠️ **The quality-ceiling and feature-tier halves
|
||||
were reversed on 2026-10-30** (freemium, output-quality delta); the watermark, cutoff and
|
||||
nagging rejections still stand.
|
||||
- **Polar** — $50 already paid, 5% + $0.50 Starter, merchant of record. **Live again as of
|
||||
2026-10-31** (`commercial.md`). The org ID `c05fb364-…`, the `LCYT-` key prefix and the
|
||||
customer-portal validate endpoint are recorded in `CREDENTIALS.md`; no product, licence keys or
|
||||
discount codes exist yet. The old `PolarLicenseService`/`Helpers/PolarLicense.cs` are still gone
|
||||
— the 14-day-grace design has to be rebuilt (as a lease, not a permanent cache).
|
||||
- **Store IAP** was never implemented — `Windows.Services.Store` appears nowhere in the repo.
|
||||
- ⚠️ **Two obligations any future subscription would create** (ADA §6(h)): fulfil the whole period
|
||||
as marketed (breach → Microsoft may refund in full at its discretion), and **raising the price
|
||||
disables auto-renew** — the launch price is effectively locked for the product's life.
|
||||
|
||||
## Distribution — Store route RE-OPENED 2026-10-30 (Individual account)
|
||||
## Distribution — Store PARKED as the third channel (2026-10-31)
|
||||
|
||||
**2026-10-30:** the Store is the route again, via a **Microsoft Individual developer account**
|
||||
(not Company), so no legal entity is needed and the publisher line shows the verified individual
|
||||
name. The creator will open the account; distribution work stays parked until then. The site copy
|
||||
("Coming soon to the Microsoft Store") is therefore accurate again, and the 2026-10-22
|
||||
"Store is dead / direct + Steam" ruling below is superseded.
|
||||
**2026-10-31:** **winget over a portable zip is the primary channel** — one self-contained
|
||||
`LlamaCasty.exe` + bundled `ffmpeg\`, zipped, hosted on GitHub Releases, manifest in
|
||||
`microsoft/winget-pkgs` with a pinned SHA-256. Steam is second and parked at $100 (lifetime Pro as
|
||||
DLC only — Steam has no subscriptions). The **Microsoft Store is third and parked** until the
|
||||
creator opens the **$19 Individual** developer account: it is the only storefront that bills a
|
||||
subscription natively and installs without a SmartScreen warning, and it bans self-updaters.
|
||||
Channels, costs, artifact and signing: [`commercial.md`](commercial.md).
|
||||
|
||||
**Why the ordering inverted:** winget has no discovery, but neither does the Store for utilities,
|
||||
and winget costs nothing, needs no account, no certification and no MSIX pipeline — while the
|
||||
audience installs Windows tools from a command line. The site and the YouTube channel are the
|
||||
funnel in both cases.
|
||||
|
||||
## Superseded: Store was "the route again" — 2026-10-30 (ordering only)
|
||||
|
||||
**2026-10-30:** a **Microsoft Individual developer account** (not Company) removed the legal-entity
|
||||
blocker — the publisher line shows the verified individual name, and Partner Center does not
|
||||
convert Individual → Company later. That finding stands; what it no longer implies is *primary*.
|
||||
The site copy ("Coming soon to the Microsoft Store") stays true until the download page lands, then
|
||||
the Store line becomes the secondary note.
|
||||
|
||||
## Superseded: Store route withdrawn 2026-10-22
|
||||
|
||||
@@ -58,20 +79,19 @@ name. The creator will open the account; distribution work stays parked until th
|
||||
New Mexico with a ~2-week SOS backlog, ~$143 Wyoming). Partner Center does **not** convert an
|
||||
Individual account to a Company account later, and an Individual account publishes under the
|
||||
verified legal name. The creator will not fund an entity for a nameplate.
|
||||
- **2026-10-22 Velopack deleted** — it downloaded and executed, which Store policy 10.2.2 forbids.
|
||||
The Store was going to update the app, so that premise died with the route: **the app now has no
|
||||
update path**, and `StorePackagingTests` currently asserts that no updater exists — rewrite that
|
||||
guard with the chosen updater, never leave it to veto one.
|
||||
- **The MSIX package still builds** (159 MB `artifacts/LlamaCasty.msix`, submitted nowhere). The
|
||||
route contradiction between `ai.md`'s older text and the TASKS files is settled in one sweep at
|
||||
the distribution revisit, not patched piecemeal.
|
||||
- **2026-10-22 Velopack deleted** — it downloaded and executed, which Store policy 10.2.2 forbids
|
||||
(and which the 2026-10-31 plan keeps forbidden). The app has **no self-updater by policy**:
|
||||
`winget upgrade` plus an in-app "newer version exists" banner is the update path, and
|
||||
`StorePackagingTests` asserts that no self-updater returns.
|
||||
- **The MSIX package still builds** (159 MB `artifacts/LlamaCasty.msix`, submitted nowhere) — it
|
||||
is the parked Store channel's artifact.
|
||||
- **Signing**: Microsoft removed the EV instant-bypass for SmartScreen in March 2024, so EV buys
|
||||
what OV buys; the 2026-10-22 ruling is **ship unsigned** and accept the "unrecognized publisher"
|
||||
warning until download reputation accrues. Deferred, not rejected.
|
||||
what OV buys. The 2026-10-22 ruling was *ship unsigned*; **2026-10-31 supersedes it with Azure
|
||||
Trusted Signing (~$9.99/month)**, which is Microsoft-issued and accrues reputation.
|
||||
- **Steam when $100 exists**: Steam Direct $100/product (recoupable after $1,000 AGR), categories
|
||||
*Audio/Video Production* / *Player Tools* (OBS precedent), developer/publisher name self-chosen
|
||||
(no entity needed), 5+ 1920×1080 screenshots + capsule art, a build Valve runs, a 2-week live
|
||||
page, 30% cut.
|
||||
page, 30% cut, and no subscription support.
|
||||
|
||||
## Product surface — retired
|
||||
|
||||
@@ -91,6 +111,11 @@ name. The creator will open the account; distribution work stays parked until th
|
||||
|
||||
Do not build these; each was explicitly ruled out.
|
||||
|
||||
- **Anti-piracy theatre (2026-10-31)**: a native helper DLL for "IP protection", obfuscation,
|
||||
hardware locking, remote code that downloads and executes, and gating asset downloads as an auth
|
||||
check. None make a licence enforceable; see `commercial.md` → "Anti-piracy posture".
|
||||
- **Commercial structures (2026-10-31)**: Patreon or any subscription platform of our own, paid
|
||||
early access, a paid beta, a gated Discord, and a Pro trial (the free tier is the trial).
|
||||
- D3D11 swap compositor (superseded by the software compositor).
|
||||
- OBS-style source expansion — game capture, browser-source zoo, media playlist, VLC, colour-key,
|
||||
MIDI. The minimal source set is deliberate; creators who need more have graduated to OBS.
|
||||
|
||||
Reference in New Issue
Block a user