Files
LlamaCasty/docs/ai/decisions.md
T
gramps 5a102a4a37 docs: decisions log, queue trim, HANDOFF rewrite — the map stops being a treadmill
TASKS.md 467 → 66 lines: one line per live item, detail stays in TASKS/
task-*.md. The old catalogue (63 rows of paragraph status prose plus the
historical narration) is preserved verbatim as TASKS/archive.md — a
2026-10-29 snapshot, not the live queue. The "out of product" list and every
retired decision moved to docs/ai/decisions.md with cause of death.

HANDOFF.md 440 → 40 lines, and it is now OVERWRITTEN, not appended: branch,
what's in flight, next action, live landmines, pending creator checks. History
belongs to git log; the previous handoff is reachable at ee3c592:HANDOFF.md.

docs/ai/decisions.md (new) collects what no longer governs: the paid tier and
its pricing, Polar, Store IAP, the Store route and why it died, the deleted
Velopack updater, signing economics, the retired monetization ideas, and the
permanent out-of-product list.

Facts that lived in the old ai.md "Current limitations" section were re-homed
rather than dropped with the router rewrite: OAuth/DPAPI/session behaviour →
docs/ai/youtube-api.md; paths, persistence and the Google project number →
docs/ai/environment.md.

verify.sh caps now cover all four always-read files (AGENTS 210, ai 100,
HANDOFF 40, TASKS 120).

Docs-only unit: scope-check run, no build.
2026-10-29 11:10:51 -07:00

90 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
## Monetization — all superseded by the free-forever ruling (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.
- **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.
- **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 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.
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.
- **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.
- **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.
## 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.
- 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).