Files
LlamaCasty/HANDOFF.md
T
gramps 711ba54af7 docs: rewrite HANDOFF for session end; import the TASK 21 picker spec from the old handoff into TASKS.md
The picker-slice deliverables + loop-provider rule lived only in HANDOFF (rewrite-every-
session = lose-it). Moved into TASK 21 where it's durable; HANDOFF rewritten: locked
decisions 1-9, queue order, landmines (incl. the 2 unpushed docs commits), no-suggestions
note carried.
2026-09-01 19:04:21 -07:00

72 lines
4.6 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.
# HANDOFF — Session State
## Branch / Commit State
**`main`**, clean working tree, **2 local commits NOT yet pushed** (waiting for the user's "push"):
- `e1d8b10` — docs: v1 = feature-complete ruling — queue TASKs 32–36, close out-of-product list, fix map lies
- `7c6ec3e` — docs: pre-GA posture (visibility lock rationale, flash preview-only + escalation, audit → gold pass)
No code changed this session — docs only; no build/test run needed.
## What this session was
The creator's product/PM audit: "the refactor lost institutional knowledge — potholes and gone
streets." Walked the whole map, cross-checked claims against code, and wrote the results back.
Nothing was coded. The queue below IS the outcome.
## Decisions locked (2026-09-01 — creator rulings, do not re-litigate)
1. **v1 = the finished product. No v1.x.** Everything queues to v1 or to the closed
"Out of product — permanently" list (TASKS.md, file end). 10% margin = that written list.
2. **TASK 32 Stream resilience** — IN: blip retry (app-side; ffmpeg does NOT self-reconnect RTMP
output — map fixed), measured-grace countdown on the ON-AIR sign (amber RECONNECTING → red
OFF AIR → button "● Back on air"), one-click new broadcast reusing saved form, crash-safe
fragmented-MP4 recording, TCP pre-flight. **Dead-broadcast RESUMPTION IS OUT** — API-impossible,
creator ruled; no lying in copy.
3. **TASK 33 auto step-down** — v1 (the map claimed it existed; it never did — claim fixed).
Pure policy, one-way per broadcast, rides TASK 32's restart machinery.
4. **TASK 34 scheduling** — drawer version (☑ Scheduled + datetime in the Text drawer; Save CREATES
the broadcast; uncheck deletes; adoption at Start). Two research flags pending (early-push
behavior; delete semantics) — cite before building. Dark until the visibility unlock.
5. **TASK 35 scene-linked audio** — spec approved as written (nullable per-scene mute flags,
applied once on live transitions only).
6. **TASK 36 gold pass** — the ONLY place these happen: visibility unlock, flash-live enable,
screens/layers audit (the 2026-08-22 landmine, retired here), native-Windows verification suite,
expiry reminders (T-14/7/1 toasts; research whether Polar validate carries `expires_at`),
signing/installer/EULA/Velopack. Compile flags capped at `HARDENED` + `MOCK_REWARDS`,
additive-only, CI-compiled (DEV_LICENSE_BYPASS rejected).
7. **Branding flash** = the nagware: escalating cadence (curve = build-time knob), **preview-only
while pre-GA** (never on test output/recordings), paid removes it — that stays the only paid delta.
8. **Private-only lock stays** (test-phase channel protection; DVR/VOD on = invisible review tapes).
9. **Alerts are free** — stale "one paid feature" language corrected everywhere.
## What's next (the queue, in order — per TASKS.md "v1 execution order")
**TASK 21 UI picker slice** is first — the handoff spec from 2026-08-31 is still valid and reproduced
in TASKS.md/TASK 21 (file picker + Acquire/Release wiring + `MediaIsLooping`→`Looping` rule +
loop/volume UI). GUI work — build + verify on native Windows. Then TASK 32 slices, 33, 34, 35,
text source (TASK 3 item 17), the monetization chain (capture → report → journey → Alerts),
MARCOM (TASK 13), and TASK 36 last.
## Landmines
- **Push state**: 2 docs commits local-only. Trust `git log`, not this file's mood, about what's pushed.
- A stale `testhost` can lock `ytLive.Tests`'s `ytLive.dll` → MSB3027; kill it first
(`cmd.exe /c "taskkill /PID N /F"`).
- Full-suite vstest hangs headless (RealAppHost/WASAPI) — run test classes individually; GUI suites
verify on the native desktop.
- **WSL cannot spawn Linux ffmpeg from the Windows CLR shim** (Win32Exception 193) — verify ffmpeg
contracts via shell/python (recipe in MyMistakes.md); CLR→real-ffmpeg is Windows-suite territory.
Linux static ffmpeg 7.0.2 + test clip live at `/tmp/opencode/`.
- Pre-commit gate: `./scripts/verify.sh "<files>"` (clean build, 0 warnings — incremental builds lie).
- Real-`MainWindow` tests MUST use `MainViewModel.LayoutPathOverride` (temp DB) or they wipe the
user's real layout on shutdown (see ai.md → Tests).
- The two known pre-existing failures (`AudioPipelineTests.Mix_HonorsProviderGains…`,
`RoundClipInteractionTests.Round_Clip_Corner_Is_Grabbable…`) are NOT regressions.
## @ User note — no unsolicited roadmap
The creator asked to **stop with forward-looking suggestions** unless asked. The queue above is
theirs, from the 2026-09-01 audit — work what's queued, report what changed, stay quiet on
"what's next" beyond the queue. They prefer short, spaced-out output over dense text.