docs(handoff): Starting art vintage 4, the AllBackgrounds trap, site scenes shot

This commit is contained in:
2026-11-06 12:06:13 -08:00
parent a6f15a4bc3
commit 3db964e5cf
+23 -28
View File
@@ -1,43 +1,38 @@
# HANDOFF — 2026-11-05 (alert stack + media/chroma fixes) # HANDOFF — 2026-11-06 (Starting art + site scenes)
## State ## State
- `main`. TASK 21 (video layer + soundtrack), TASK 64 (green/blue screen) and TASK 32·4 (fragmented MP4) - `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). are complete; TASK 49 is retired (YouTube owns chat moderation — we just don't paint tombstones).
- **Left panel alert stack** shipped: Steam licence indicator pinned at row 1 (`Entitlement 30 fps · - **Starting art replaced twice today** (`f7e1b76`, `a6f15a4`): the corrected onboarding screen is
Maximum 60 fps`, pin → close once owned, permanent while owned), event rows LIFO beneath, click → `Assets/starting-background.jpg`; both earlier images are in `Assets/archive/`. Bundled art is
About or the Logs tab with that event's lines painted. Detail: `docs/ai/ui-surface.md`. hash-keyed into the layout DB on first seed, so replacement rides on `HealDefaultArtVersion`
- Video layer fixes this session: the preview-pane trigger whitelist (a video layer was invisible), a (**now 4**) — bump it whenever a bundled background changes.
quadratic frame copy that capped 1080p playback at 2 fps, and deadline pacing for video *and* audio. - Left panel alert stack shipped: Steam licence indicator pinned at row 1, event rows LIFO, click →
- Tests: 575 green, 1m50s; `FAST=1 ./scripts/verify.sh` = 527 in ~62s. About or Logs with the event's lines painted. Detail: `docs/ai/ui-surface.md`.
- Site: the Starting screen is now in the scenes section (`scenes-shot`), deployed 2026-11-06 12:05.
- Tests: 575 green; `FAST=1 ./scripts/verify.sh` ≈ 62s. Background suite 45 green.
## Next action ## Next action
- **32·1 + 32·2 shipped**: blip retry (immediate/+1/+2/+3 s), and the RECONNECTING sign driven by the - **App queue starts at 33** (bandwidth step-down), then 34/35/37/40/50/55, Move transitions, 9·5.
status poll (4 s cadence while recovering) with **measured** elapsed/attempt only — the countdown was - Site: 15-second demo clip → compress, poster, hero with reduced-motion fallback. Creator is shooting it.
dropped after the creator pointed out YouTube's cutoff depends on variables we cannot see. The - Site repo commits are local (`llgit.llamachile.tube`); deploy is `./deploy.sh`, not a push.
`chatEndedEvent` in the chat feed now prompts an immediate status check. - Do not push the app absent a checkpoint request.
- **32·5 shipped**: ingest pre-flight (TCP, 2 s) aborts go-live before any API call, so a dead
network leaves no ghost broadcast.
- Next:
then 32·2/32·3 (countdown + Back on air) which need YOUR measurement take: pull the network on a
private stream and time how long YouTube holds the broadcast.
- Open loop: `32·4` is proven by construction only — kill ffmpeg mid-recording and play the file.
- Do not push absent a checkpoint request.
- **Steam is a wait, not a task:** partner account exists, identity verification pending, tax review in - **Steam is a wait, not a task:** identity verification pending, tax review in Valve's queue (up to 30
Valve's queue (up to 30 business days). No app IDs, no store page, Release entitlement still fails business days). No app IDs, no store page, Release entitlement fails closed.
closed. Earliest realistic launch early-to-mid February 2027 — see `Distribution.md` §2.
## Landmines ## Landmines
- **The preview pane draws frame-source layers from a whitelist of DataTriggers.** A layer type with no - **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 (alert box 2026-09-26, scoreboard, trigger is invisible in the preview while its decode looks healthy. Add the trigger with the layer
video layer 2026-11-05). Add the trigger with the layer type; pin it with `MediaPreviewDisplayTests`. type; pin it with `MediaPreviewDisplayTests`.
- Nothing in the suite drives the real cursor any more; the drag arithmetic is pure (`DragReorderMathTests`). - **`AllBackgrounds()` returns only the LIVE scene's rows** — never use it to mean "every background"
- Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`. (that bug made art-version 2 heal nothing). Walk `Scenes` instead.
- 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. - Media sessions are keyed by **path + look** (`MainViewModel.MediaSessionKey`); never acquire by raw path.
- **The audio pipe is one instance per machine.** `NamedPipeAudioWriter` allows a single server, so two - **The audio pipe is one instance per machine.** DEBUG appends its id (`InstanceProfile.AudioPipeName`).
LlamaCasty processes cannot both go live. A DEBUG instance appends its id (`InstanceProfile.AudioPipeName`), - Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`.
Release keeps the plain name; the Go-Live path catches the failure and reports instead of dying.
- Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`). - Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).