The pricing ruling landed twice (2026-09-21 one-time, then 2026-09-27 Store IAP $10/mo + $400 lifetime) and the map never caught up. Six tracked files still told a future session that billing was Polar and the price was $29/$49. A stale memory map is worse than a stale comment: it is the file every session trusts, and this one was actively steering work toward a deleted provider. MONETIZATION.md (gitignored, so not in this commit) was rebuilt first: - "Revenue projections" now carries a modelled Year 1 forecast — pessimistic $4.0K / base $15.4K / optimistic $53.3K net, ~$22K weighted. Funnel is installs -> 35-45% activate -> 1.5-3% of active users pay. - Three findings recorded: Year 1 is ~97% lifetime transactions (subs net $392 of $15.4K, so MRR is not a Year-1 planning input); conversion dominates price (~1pp of conversion = ~$7K net, and ADA 6(h) locks $10 anyway); subscriber churn moves Year 1 by under $200 and is a Year-2 problem. - Break-even restated for $400: $25K net = 74 lifetime buyers, not 862. The price cut the volume requirement ~10x and raised the skill requirement to match. - Market sizing willingness-to-pay row rewritten. The 100K-400K TAM was price-bound to $29-49 and is wrong at $400; revised ~20K-60K, flagged as an estimate rather than a sourced number. - Flagged a real contradiction: $500K ARR needs ~4,900 concurrent subscribers, so the Exit section's ARR multiples do not describe what Years 1-3 produce. The defensible asset there is lifetime cash flow, not ARR. Tracked files corrected to match: - ai.md: paid-delta, pricing and billing bullets rewritten; Polar product id, org id, LCYT- key prefix and LLAMAFOUNDER/LLAMA50 marked as deleted; 15% share + net-after-tax recorded with the ADA 6(b)(i) citation. - TASKS.md: catalog row retitled as a teardown; the "still to verify — the price is not decided" note closed (it contradicted the ruling 20 lines below it); the OverlayHost "Polar unlocks alerts" open question marked resolved; Polar file-hosting deliverable removed from the release build. - task-10: reframed as a teardown. Steps 4-5 marked as surviving, 1-2-3-6-7 as deleting, 8 as a compliance action (Velopack downloads AND executes, which Store policy 10.2.2 does not permit). - task-36 item 5 (license-expiry reminders) struck — no key, no expiry, no lapse under Store IAP, so there is nothing to remind anyone about. - Distribution.md 4.2 / 4.4 / 4.5 marked obsolete; 4.5's "already implemented" corrected, since PolarLicenseService is being deleted rather than shipped. - README: "one-time license" -> "paid tier". Historical Polar sections are retained deliberately — the reasoning is reusable (merchant-of-record, fee comparison), only the conclusions are dead. Each is now labelled so it cannot be mistaken for the plan. No code touched.
69 lines
5.9 KiB
Markdown
69 lines
5.9 KiB
Markdown
# TASK 36 — Gold pass (queued 2026-09-01; the going-gate, always the last work unit)
|
|
|
|
> Catalog: [`TASKS.md`](../TASKS.md) — status and requirements live here.
|
|
|
|
|
|
**Goal:** the single deliberate pass that turns the dev product into the shipped product. Nothing here
|
|
may be done opportunistically mid-development — each item has a lock/comment pointing at this task.
|
|
|
|
1. ☐ **Visibility unlock** — remove the `CreateBroadcast` Private override (TASK 9 item 6); dialog
|
|
selection rules. The channel-protection stance ends at GA, by hand, here.
|
|
2. ☐ **Branding flash goes live** — end the preview-only pre-GA posture: composite the escalating
|
|
obnoxious-promo flash onto output + recordings for free users. Paid removes it; that stays the
|
|
ONLY paid delta. (Escalation curve finalized here, first.)
|
|
3. ☐ **Screens/layers settings audit** — the retired 2026-08-22 landmine (ai.md): fine-tooth-comb
|
|
every screen's Background layer properties, pill persistence, context-menu visibility, (+) items.
|
|
4. ☐ **Native-Windows verification suite** — the checklist TASKS/HANDOFF never had: real webcam,
|
|
real mp4 decode/loop/pacing (TASK 21 picker must have landed), real recording file opens +
|
|
plays (fragmented MP4), a real private go-live end-to-end, GUI/RealApp test classes green on
|
|
the desktop (they've only ever run against fakes).
|
|
5. ⛔ **STRUCK — License-expiry reminders are dead.** This item assumed a Polar license with an
|
|
`expires_at` we could warn about. Under **Store IAP** there is no key, no expiry, and no lapse:
|
|
the lifetime entitlement never ends and the subscription is renewed by Microsoft. **Nothing to
|
|
remind anyone about — do not build.** (The `expires_at` question is moot for the same reason:
|
|
`PolarLicenseService` is being deleted.)
|
|
6. ☐ **Release engineering** (the `Distribution.md` plan, 644 lines, finally tasked): code signing
|
|
(HARD blocker — an unsigned installer is a SmartScreen scarewall), installer + Velopack update URL
|
|
(TASK 10 item 8), EULA draft/review, THIRD-PARTY-NOTICES license-texts gate (TASK 4 req 9).
|
|
Build posture (agreed ceiling): compile flags max out at `HARDENED` (release-only anti-debug/
|
|
tamper checks) + `MOCK_REWARDS` (fake reward payloads for Alerts/dev) — **additive-only**, never
|
|
branching normal code paths, both compiled every CI build so they can't rot. Obfuscation /
|
|
assembly-splitting stay GA-time decisions, not compile-time ones.
|
|
|
|
---
|
|
|
|
## v1 = the finished product (creator ruling, 2026-09-01)
|
|
|
|
**There is no v1.x.** v1 ships feature-complete: everything in the queue above lands, or is
|
|
explicitly buried below. The parking lot is closed — nothing is "deferred to a later version"
|
|
anymore; the only two states are **v1 task** and **out of product, permanently**. The 10% margin of
|
|
error is this list, bounded and written down — not vibes.
|
|
|
|
**Monetization posture restated (what "final" means):** free gives everything; the only difference
|
|
is the branding flash. License activation flips exactly one bit (`IsPremium` → flash off). Nagware =
|
|
the escalating obnoxious self-promo flash itself — never modals, never feature-locks. Pre-GA the
|
|
flash is preview-only (see ai.md → Monetization; TASK 36 flips it live).
|
|
|
|
## Out of product — permanently (the 10% margin, closed list — do not re-litigate)
|
|
|
|
| Idea | Verdict & reason |
|
|
|------|------------------|
|
|
| Stream Deck / Loupedeck integration | The device sends keystrokes — **global hotkeys already ARE the integration** (TASK 20). Redundant, not deferred. |
|
|
| Per-source audio sync offset | Global offset shipped (TASK 22); per-source is the OBS mixer rabbit hole. Condemned by the Audio Assumption (one knob). |
|
|
| Profiles / presets (multi-config) | Same hydra as multi-layout, already ruled at TASK 30: **that's what OBS is for.** |
|
|
| Chroma key / background removal | Already ❌ (TASK 3 item 19). NVIDIA Broadcast does it free; model+GPU+lighting caveats = support hell for a solo dev. Stays buried. |
|
|
| Virtual camera output (Zoom/Discord) | Different product, device-driver swamp. Our output is one YouTube stream. |
|
|
| Replay buffer (instant replay) | Game-clipping culture, not our persona. **The most valuable corpse here** — if the list is ever reopened at all, this is candidate #1, and it reopens by creator ruling, not by AI suggestion. |
|
|
| Multi-destination restreaming | "Casual streamers outgrow LlamaCasty first" — the map already said it; the per-destination audio/monitoring expectations are a different product. |
|
|
| Stream clipping | YouTube killed clips; trimming local MP4 is an editor. |
|
|
| Advanced broadcast-form tab (latency/DVR/embed/projection/CC/region) | TASK 9 item 7 rescoped: fixed sane defaults, invisible. Every exposed field is a support ticket. |
|
|
| In-app bug-report mechanism | Never built, never will be: support = email + GitHub issues. (ai.md's support line corrected to match, 2026-09-01. Second-place corpse if the list ever reopens: with replay buffer.) |
|
|
| D3DImage/GPU preview compositor | TASK 3 item 16 superseded: XAML preview + software output compositor are the design; a D3D11 swap remains a seam-respecting possibility, not a feature. |
|
|
| Simultaneous record + stream | Creator ruling 2026-09-01: the VOD is the copy; dual encode drags mediocre hardware and degrades both outputs. "We're not them." Two modes, radio pills, one stop. |
|
|
| Premiere / video-upload pipeline | Uploading finished videos is Studio's job (quota-brutal, processing-state polling, API premiere support unproven). Watch-parties are fandom behavior, not our persona. "Going live is our schedule." |
|
|
| Scheduled playout (pre-recorded file airs as live) | Discussed fully 2026-09-01 and declined by the creator — "let's not." If it ever returns, it returns by ruling, with machine-on caveats and the media-audio slice as its price of admission. |
|
|
|
|
*If a future session is tempted by anything on this list, the answer is already written. New ideas
|
|
must survive this page before they get a task number.*
|
|
|