# 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 commercial rules (prices, entitlement, channels, signing, support, promo) are in [`commercial.md`](commercial.md)**; the other live rules live in the subsystem files. This is the graveyard with cause of death. ## The business model — one price, settled 2026-11-01 **$79 one-time, raising to $99 on a stated date. Sold only on Steam, as a DLC on the free app.** The website publishes the model and links the store page; it never takes payment. **What died the same day:** - **The subscription.** $10/month for pixels, with no service behind it — no servers, no cloud, no content library, updates free through Steam. Estimated 1–3 subscribers per 1,000 installs, at 5–8% monthly churn, against the most expensive code in the product (leases, activations, revocation, portal, dunning). Retired for launch. - **Polar as a live rail.** Dormant. Its customer-portal design (`conditions` binding, two activations, 7–14 day lease) is preserved here only so it is not re-derived if a cheaper entry tier is ever justified by real support traffic. - **The $400 lifetime** — it was an anchor for a subscription that no longer exists, and above what a beginner pays for a tool with a free incumbent. - **Founding 200** — coupons, price locks, earned 30-day passes, founder badges: all machinery for a recurring plan. - **Off-Steam conversion of any kind.** The "freemium on Steam, convert on Polar, Valve gets nothing" proposal was rejected: Steamworks requires in-app purchases to use the Steam Wallet, so it is a listing-level risk to save ~$24 a sale. **Kept:** the free tier is the whole app at a 720p30 output profile, the paid delta is output quality only, and the app never sells anything itself — the greyed tier opens the Steam store overlay. ## Commercial mechanics — died 2026-10-31 (same week they were written) - **The licence "claim page" is dead.** The binding was going to be an OAuth web page that wrote the buyer's `UC…` channel ID onto the key, because we assumed binding needed a browser. Polar's **`conditions`** object does it natively: the client calls `activate` with `conditions: { channel_id }` and repeats it on every `validate`. **No claim page, no hosted endpoint, no key database, no OAuth redirect URI.** - **"Signing is a year-one cost" is dead.** Artifact Signing is **deferred until two subscribers** — it never removes the day-one SmartScreen warning, so buying it before revenue buys nothing but the publisher line. It is also now called **Azure Artifact Signing** and **requires a paid Azure subscription**. - **"The Store developer account costs $19" is dead.** Microsoft waived the individual fee (and removed the $99 company fee in May 2026), which makes the Store the **only zero-cost route to a Microsoft-signed install** — the free answer to SmartScreen. - **"Binaries on GitHub Releases" was half a plan.** There was no GitHub presence at all (the only remote is Gitea). The route is a separate **`llamacasty-releases`** Gitea repo push-mirrored to a public GitHub repo: issues and assets public, code private, one publish direction. ## Distribution — Steam exclusive (2026-10-31, final) **Steam is the only vector.** A free app on Steam with the paid edition as a Steam **DLC**; the monthly plan is sold outside Steam and never purchasable in a Steam build. Live rules: [`commercial.md`](commercial.md). **Why the other vectors died, all on the same day:** - **Direct download + winget** (the plan of that morning) — a zip on a second Gitea repo mirrored to public GitHub, hash-pinned into winget. Superseded because Steam supplies delivery, stats, discovery, install trust and updates in one move, and because an unsigned zip meets SmartScreen on every single release while a Steam install never meets it at all. - **Microsoft Store** — was free, and free is not the same as wanted. It was the last thing keeping a Microsoft account, an MSIX pipeline and a publisher line in the plan. - **Azure Artifact Signing** — never needed once Steam delivers the install. Kept on the shelf for the day a non-Steam download exists. - **The public `llamacasty-releases` repo** survives only as the **issue tracker**; it holds no binaries, no manifest and no version file. **The constraint that shapes the app:** Steamworks requires in-app purchases to use the **Steam Wallet**. Therefore the monthly is *stated*, never *sold*, inside the Steam build — no checkout, no price, no payment fields. The lifetime is plain DLC bought on the store page, so it needs no transaction code at all. ## Support — decided 2026-10-31 - **No training service, no helpdesk, no SLA.** Email, best effort, refunds on request without argument. A repeated question becomes a training video on `@llamacasty`, which is content and monetization rather than a ticket. See `commercial.md` → Support and `MARCOM.md` → support → content loop. - **Rejected as support surfaces:** a paid Discord, live chat, onboarding calls, a ticketing system. GitHub issues on the releases repo is the deliberate filter — an account is enough friction to keep the list short. ## Monetization ### 2026-10-30 — freemium replaces free-forever (creator ruling) 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 `build-this.md`; keep both in step when it moves. ### Superseded: free forever (2026-10-08, TASK 54) - **2026-09-21** one-time perpetual licence `$29` founder → `$49` list — superseded 6 days later. - **2026-09-27** `$10/mo` subscription or `$400` lifetime, **no annual**. Store revenue share was verified at **15%** (ADA v8.10 §6(b)(i) → `$8.50` / `$340` net), including subscriptions. - **No annual tier** because Microsoft does not pro-rate: *"monthly subscriptions and initial (pre-renewal) purchases aren't eligible for a prorated refund"* — a first-year subscriber who cancels loses the remaining months and the developer cannot refund it. - **Clean numbers, no `.99`** (creator: *"Let's stop with the x.99 stuff"*). The convention exists only to make a price look cheaper, which is incoherent for a brand sold on honesty. - **Escalation model** (2026-09-01): the credit was deliberately obnoxious self-promo; the cadence *is* the nagware — no modals, no feature locks, no stream-time cutoffs. - **Pre-GA posture — preview-only flash** (reversed 2026-09-26): the credit used to render in the preview and never on the broadcast, to keep test VODs clean. The creator ruled the free tier must be honest advertising; it now composites into output and recordings when enabled. - **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. ⚠️ **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 PARKED as the third channel (2026-10-31) **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 - **2026-09-27 Store MSIX + Store IAP decided; 2026-10-22 withdrawn.** A brand name on the Store's *publisher* line requires a **Company** account → a registered legal entity (LLC ~$85 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 (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 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, and no subscription support. ## Product surface — retired - **2026-09-24 StreamElements replaced by native alerts** (TASK 43). No third-party widget feed: the chat poll *is* the event feed. - **2026-09-01 the screens/layers settings audit** was retired into the gold pass (TASK 36 item 3) rather than run as session debt. - **2026-10-04 launch position**: restoring the saved position was rejected for a derived top-left placement. The live rule is in `ui-surface.md`; the old clamp's tolerance range is why it must not come back. - **D3D11 swap compositor** — superseded by the software compositor (TASK 3 item 16). - **Windows 8 / 32-bit support** — 64-bit Windows 10/11 only (creator ruling 2026-10-09). - **"There is no v1.x"** (2026-09-01): everything queues to v1 or to *out of product, permanently* — no feature parks "for a later version". ## Out of product — permanently 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. - Multi-layout / profiles / presets — that is what OBS is for. - Cross-process stream resume (impossible via the API; creator ruling 2026-09-01). - Stream Deck / Loupedeck integration — the device sends keystrokes, and global hotkeys already *are* the integration. - Per-source audio sync offset — global offset shipped (TASK 22); per-source is the OBS mixer rabbit hole and breaks the one-knob audio rule. - Chroma key / NVIDIA-only background removal (the bundled ONNX path is the one shipped). - Virtual camera output — a different product and a device-driver swamp; our output is one YouTube stream. - Replay buffer, stream clipping, multi-destination restreaming, an in-app bug reporter, and an advanced broadcast-form tab (latency/DVR/embed/projection/CC/region are fixed at sane defaults; every exposed field is a support ticket).