74 lines
4.7 KiB
Markdown
74 lines
4.7 KiB
Markdown
# HANDOFF — Session State
|
||
|
||
## Branch / Commit State
|
||
|
||
**`main`**, clean tree, **11 local commits NOT pushed** until the user's "commit and push" lands
|
||
with this file's commit (expect `main == origin/main` at handoff commit). Tonight's series
|
||
(newest first):
|
||
|
||
- this commit — docs: HANDOFF rewrite
|
||
- `4509bef` — docs: record-OR-stream ruling, scheduling scope, SYNC provenance, playout declined
|
||
- `af0d372` — docs: take-two outcomes (arrival-stamping, resolver key, top-bar model, TASK 18 status)
|
||
- `89fee6c` — fix: webcam identity→device key + always-present Start + [light]LABEL[pill] order
|
||
- `97ffc42` — chore(pump): render/submit stage-timing stats, 5s windows
|
||
- `8dcaee0` — fix(encoder): stderr logging + any-exit-is-failure + resolver null logging
|
||
- `7f2bda8` — fix(audio): game meter × volume (`GameMeterHonestyTests`)
|
||
- `5ead064` — fix(audio): `_delayedMix` NRE — killed the "known failure", the hang, AND the log flood; LoopbackGain honest
|
||
- `5a1a3c5` — fix(18): stop ends everything — pills clear, failures roll back (`SessionTeardownTests`)
|
||
- `688682d` — feat(9): transition(complete) close-out (never existed before)
|
||
- `22b780e` — fix(ffmpeg): month-end re-pin (daily aged out → 404) + actionable wrap
|
||
|
||
## What tonight was
|
||
|
||
Creator's first native runs since the refactor: startup crash → fixed (3 stacked faults); PM audit →
|
||
v1-complete declaration + out-of-product list (TASKS.md file end); first-ever real recordings → the
|
||
recording pipeline now demonstrably produces H.264+AAC MP4s (`Downloads\recordings\`, ffmpeg cached
|
||
in `%APPDATA%\ytLlive\tools\`).
|
||
|
||
**Test suite: ZERO known failures** (audio class was the last — root-caused to an uninitialized
|
||
field; TASK 22's fault is recorded in its entry). Per-class Windows-host vstest runs everything
|
||
including RealApp; only the FULL suite hangs (WASAPI teardown — don't run it).
|
||
|
||
## OPEN — do tomorrow, in order
|
||
|
||
1. **Take 3 (user records ~30s, record-only):** read `%APPDATA%\ytLlive\startup.log` — the new
|
||
`FramePump stats: n/target frames per 5s, avg render Xms submit Yms` lines will name the stage
|
||
behind the ~2fps producer starvation (symptoms: short file + 30x time-lapse + garbled audio,
|
||
one cause — rawvideo stamps by arrival). Also check: webcam now IN the output (89fee6c),
|
||
meter follows the volume knob, Stop slides pills off + Start present, top bar grouping feels right.
|
||
Also: take-2's file stayed auto-named `ty-…-0000.mp4` — did the rename modal appear?
|
||
2. **Then code, one integration test per change:** starvation fix (from #1's data) → radio pills /
|
||
record-OR-stream enforcement (ruling captured in TASKS.md TASK 18; `BeginGoLive(alsoRecord)` dies)
|
||
→ top bar Option A **pending user approval** (his "still not correct" message predates tonight's
|
||
89fee6c — have him LOOK first) → empty-state ruling pending: disabled / rehearsal (my recommendation) /
|
||
default-record → SYNC slider placement ruling pending (feature is his, permanently; position is open).
|
||
3. **Un-asked questions** (don't nag, just have the answers ready): why-stupid confirmation on
|
||
simultaneous rec+stream was given (VOD copy + hardware drag) ✓; "other issues" from take 1/2 —
|
||
user mentioned them but never listed; take 2 preview questions.
|
||
|
||
## State of the app
|
||
|
||
Boots clean, records clean-ish (starvation pending), preview honest, top bar reordered per spec,
|
||
webcam-key fixed but NEVER verified in a real recording until take 3. The user's layout DB is
|
||
intact (real C920 row confirmed by direct sqlite read — the 'test-camera' log lines are testhost
|
||
noise, both processes share startup.log).
|
||
|
||
## Landmines
|
||
|
||
- testhost shares startup.log with the app — filter by time when triaging.
|
||
- Stale testhost/exe locks the DLL (MSB3027): `taskkill /F /IM ytLive.exe` / `testhost.exe` first.
|
||
- Do NOT run full-suite vstest (hangs); do NOT claim suite totals — per-class only.
|
||
- `AudioPipelineTests` is healthy now but was the "known failure" graveyard — any new failure
|
||
there means a live-loop regression; read the logged stack (catches now log WITH stack + 5s throttle).
|
||
- Real-`MainWindow` tests MUST use `LayoutPathOverride` + temp DB; `VolumePushOverride` seam exists
|
||
so volume-slider tests never touch the machine's speakers.
|
||
- verify.sh's full-suite step hangs from WSL — flow tonight: clean build (0 warnings) + per-class
|
||
vstest + scope-check, all through the Windows dotnet.exe host.
|
||
- ffmpeg pin: month-end rule recorded (TASKS.md); BtbN keeps dailies ~14 days.
|
||
|
||
## @ User note
|
||
|
||
No unsolicited roadmap/next-step lists — work the queue above, report what changed, keep responses
|
||
SHORT (his words, twice tonight: walls of text are not getting read). Good dog: one integration test
|
||
per change. Committing is expected; pushing on his word — tonight he said push with the handoff.
|