diff --git a/HANDOFF.md b/HANDOFF.md index dfc6a64..f77af25 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -2,10 +2,7 @@ ## Branch / Commit State -**`main` HEAD = `1295e0e`** — a revert; see "REJECTED this session" below. **`#11` from the roll-forward -landed as `d35823a`** (release counter in wordmark; capture/camera/web rings 4→8 + Epoch — three-loop -hunks dropped per plan). User tested take-15 frame (~clean). Recording output since then: webcam -"black square" regression under the web overlay is OPEN (details below). +**`main` HEAD = `6d11e8b`** — `#12` landed (per-element raster reuse: _elementRasters, steady-state compositor allocation ≈ 0; regression test; 289 tests). **`#11` landed as `d35823a`** (release counter in wordmark; capture/camera/web rings 4→8 + Epoch — three-loop hunks dropped per plan). User tested take-15 frame (~clean). Recording output: webcam "black square" regression under the web overlay is OPEN (spin guard triggered; research first before next attempt). **`today-slices` branch @ `ce87490` (#17)** — preserves ALL 17 commits of the 7fcb2ad→ce87490 chain (1 `716a77f` … 17 `ce87490`), including the two-loop producer, encoder staging fix, chat fix, e2e @@ -126,11 +123,12 @@ and apply cleanly. 0. **Webcam-black-square-under-web transparent: research FIRST.** Second failed remedy → spin guard. Externally research how OBS/CEV keep browser-source transparency in recorded output; cite the URL - in the commit AND MyMistakes before any code (see REJECTED section above). User tests each attempt. - Do NOT touch the compositor/web code until the research is done. -1. **#12 `d1126dd`** — compositor raster reuse + MJPEG camera negotiation + stats formatting (FramePump - hunk dropped). -2. **#13 `e4621c1`**, **#14 `b4f6a92`** — docs. + in the commit AND MyMistakes before any code (see REJECTED section above). Do NOT touch the + compositor/web code until research names a seam. +1. **#12 MJPEG camera negotiation** — `MediaCaptureFrameSource` MJPEG negotiation before frame reader + creation (SetMediaStreamPropertiesAsync → best MJPEG ≥640×360 @≥30fps, ≤1280 wide), startup.log + truth line of actual media type. Stat formatting (`:F1` ms) already in #12 diff. Next to apply. +2. **#13 `e4621c1`**, **#14 `b4f6a92`** — docs (TASKS restructure this session). 3. **#15 `7bf00a9`** — e2e smoothness bar (re-tune thresholds to single-loop measurements if needed). 4. **#16 `1a808ae`** — chat empty-buffer composite fix + test. 5. **#17 `ce87490`** — encoder staging snapshot (the genuine tear cure — applies on the single loop as