Files
LlamaCasty/HANDOFF.md
T
gramps b39439abdc docs: the vertical take is clean — 29.8 distinct webcam images/s
Creator's Release take `ty-20261109-1142-036-0005.mp4` (1080×1920 @ 30, 300 s) measured by cropping the
webcam tile and diffing frames: 29.8 distinct images/s overall, median 30 s window 30.0/s, worst 24/s,
one 4-frame repeat run in 9026 frames. The app's own lines agree (`webcam 28.4–30.0/s` against camera
`arrivals 29.9–30.1/s`).

- The 25.6/s failure recorded on the 2026-10-05 16:9 take does **not** reproduce in the vertical tier,
  so the vertical take no longer blocks the cadence units.
- Recorded the measurement trap in `frame-pipeline.md`: a threshold of 1.0 on a downscaled tile
  reports long "0.0/s" stretches during low motion — duplicates sit below 0.02, a still face at
  0.3–0.7. Read the histogram before believing a count.
- Vertical-tier camera check reported 1–6 pass; both creator-hands items in TASKS.md are closed.

(The mic being off for the first 2:42 does not affect video cadence.)
2026-11-09 11:53:58 -08:00

44 lines
3.0 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 — 2026-11-09 (TASK 33 policy; vertical checks passed)
## State
- `main`. TASK 21 (video layer + soundtrack), TASK 64 (green/blue screen) and TASK 32·4 (fragmented MP4)
are complete; TASK 49 is retired (YouTube owns chat moderation — we just don't paint tombstones).
- **Starting art replaced twice today** (`f7e1b76`, `a6f15a4`, fix `70e2c48`): the corrected
onboarding screen is `Assets/starting-background.jpg`; both earlier images are in `Assets/archive/`.
Bundled art is hash-keyed into the layout DB on first seed, so `StampDefaultBackgroundAsset`
compares the stored asset's hash with the resource and re-stamps on a mismatch — replacing a
bundled background needs no version bump.
- Left panel alert stack shipped: Steam licence indicator pinned at row 1, event rows LIFO, click →
About or Logs with the event's lines painted. Detail: `docs/ai/ui-surface.md`.
- Site: demo video (silent loop) is the hero; Starting screen is in the scenes section.
- **TASK 33**: policy + planner done (`bc62bd8`, `555ff5c`); remaining — VM subscribe, encoder
restart, toast, capture-cost shed. **Creator hands cleared 2026-11-09**: vertical camera check 1–6
pass, vertical cadence 29.8 distinct/s (no defect).
- Tests: 575 green; `FAST=1 ./scripts/verify.sh` ≈ 62s. Background suite 45 green.
## Next action
- **App queue starts at 33** (bandwidth step-down), then 34/35/37/40/50/55, Move transitions, 9·5.
- Site: 15-second demo clip → compress, poster, hero with reduced-motion fallback. Creator is shooting it.
- Site repo commits are local (`llgit.llamachile.tube`); deploy is `./deploy.sh`, not a push.
- Do not push the app absent a checkpoint request.
- **Steam is a wait, not a task:** identity verification pending, tax review in Valve's queue (up to 30
business days). No app IDs, no store page, Release entitlement fails closed.
## Landmines
- **The preview pane draws frame-source layers from a whitelist of DataTriggers.** A layer type with no
trigger is invisible in the preview while its decode looks healthy. Add the trigger with the layer
type; pin it with `MediaPreviewDisplayTests`.
- **A bundled-art "version" heal cannot work**: the constant and the embedded resource are compiled at
different moments, so a bump can race the image it is meant to ship. Compare bytes
(`LayoutStore.AssetMatches`). Also: `AllBackgrounds()` returns only the LIVE scene's rows.
- Pack URIs for bundled assets must be assembly-qualified (`/LlamaCasty;component/Assets/…`): the
unqualified form resolves against the entry assembly, which is the test host under `dotnet test`.
- Media sessions are keyed by **path + look** (`MainViewModel.MediaSessionKey`); never acquire by raw path.
- **The audio pipe allows ONE server per name**; DEBUG suffixes it (id, else pid), Release does not.
- Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`.
- Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).