docs: rewrite HANDOFF — crash-fix outcomes, sole known failure (audio) + channel-init lead, verified test-run mechanics, 4 unpushed commits flagged
This commit is contained in:
+40
-55
@@ -2,70 +2,55 @@
|
||||
|
||||
## 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)
|
||||
**`main`**, clean tree, **4 local commits NOT pushed** (await user "push"):
|
||||
- `6799c40` — fix: first-native-launch crash (3 stacked faults) + RoundClip test root-caused → green
|
||||
- `711ba54` — docs: HANDOFF rewrite + TASK 21 picker spec imported into TASKS.md
|
||||
- `e1d8b10` — docs: v1 = feature-complete ruling; TASKs 32–36; out-of-product list; map-lie fixes
|
||||
- `7c6ec3e` — docs: pre-GA posture (visibility lock, flash preview-only + escalation, audit → gold)
|
||||
|
||||
No code changed this session — docs only; no build/test run needed.
|
||||
## What this session accomplished
|
||||
|
||||
## What this session was
|
||||
1. **Product/PM gap audit** (the creator's "potholes and gone streets" fear): everything un-tasked
|
||||
surfaced and ruled. Read ai.md → Monetization + TASKS.md → file end ("v1 = the finished product",
|
||||
"Out of product — permanently", TASKs 32–36) — the rulings are IN the map now, not here.
|
||||
2. **Fixed the first-startup crash** (user launched post-refactor for the first time — NRE):
|
||||
SceneGraph ctor-order + window-scope styles the extracted LeftPanel couldn't see (full audit:
|
||||
exactly 2 offenders). App verified booting + closing clean on the real desktop; real DB intact.
|
||||
3. **Killed one of the two "known failures":** RoundClip was stale TEST code, not product —
|
||||
`window.FindName` across namescopes + `VisualTreeHelper.HitTest` (which ignores input semantics
|
||||
and returned the invisible WebViewHostPanel overlay for every point). `UIElement.InputHitTest`
|
||||
proved the corner IS grabbable. Test green. Recipes recorded in MyMistakes.md.
|
||||
|
||||
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.
|
||||
## Test suite truth (2026-09-01, verified natively)
|
||||
|
||||
## Decisions locked (2026-09-01 — creator rulings, do not re-litigate)
|
||||
- 247 tests, **246 pass**; the SOLE known failure is `AudioPipelineTests.Mix_HonorsProviderGains…`.
|
||||
The creator's hint: they attribute it to "sound channel declaration/init". Clue spotted tonight:
|
||||
real launches log "Audio: using system default mic + default output" TWICE (19:16 and 19:30
|
||||
sessions) — possibly double mixer start or double log call; worth a look when the audio slice is
|
||||
picked up. Not chased (out of scope, Good Dog).
|
||||
- Per-class `dotnet.exe vstest` runs RealApp/MainWindow suites fine from WSL (6 classes + RoundClip
|
||||
green tonight). Full-suite still hangs (WASAPI) — don't run it.
|
||||
- The RealApp testhost shares `%APPDATA%\ytLlive\startup.log` with the real app — 'test-camera'
|
||||
failure lines in there are test noise; check DB state by querying, not reading.
|
||||
|
||||
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 (creator's queue — do not expand)
|
||||
|
||||
## 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.
|
||||
**TASK 21 UI picker slice** (spec now lives in TASKS.md → TASK 21, imported from the old handoff so
|
||||
it can't be lost by a rewrite). Then TASK 32 → 33 → 34 → 35 → text source → monetization chain →
|
||||
MARCOM → TASK 36 gold pass, per "v1 execution order" in TASKS.md.
|
||||
|
||||
## 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.
|
||||
- 4 unpushed commits — `git log origin/main..main` before assuming remote state.
|
||||
- Stale `testhost` can lock ytLive.dll (MSB3027) → `taskkill /PID N /F` via cmd.exe.
|
||||
- WSL cannot spawn Linux ffmpeg from the Windows CLR shim; contract verification recipe + static
|
||||
ffmpeg live at `/tmp/opencode/` (MyMistakes has the how-to).
|
||||
- Pre-commit gate: `./scripts/verify.sh "<files>"` — but its full-suite step hangs; tonight's flow
|
||||
(clean build + per-class vstest + scope-check) is the working substitute from WSL.
|
||||
- Real-`MainWindow` tests MUST set `MainViewModel.LayoutPathOverride` (temp DB) or shutdown saves
|
||||
pollute the user's real layout.
|
||||
|
||||
## @ 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.
|
||||
Work what's queued; report what changed; no forward-looking "what's next" lists unless asked.
|
||||
Prefers short, spaced-out output over dense text (tired eyes — one idea per line beats a table).
|
||||
|
||||
Reference in New Issue
Block a user