From b39439abdcedd9237d9da825566e0e6d6e4ac5dc Mon Sep 17 00:00:00 2001 From: gramps Date: Mon, 9 Nov 2026 11:53:58 -0800 Subject: [PATCH] =?UTF-8?q?docs:=20the=20vertical=20take=20is=20clean=20?= =?UTF-8?q?=E2=80=94=2029.8=20distinct=20webcam=20images/s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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.) --- HANDOFF.md | 7 +++++-- docs/ai/frame-pipeline.md | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index 2816eaa..26536fc 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -1,4 +1,4 @@ -# HANDOFF — 2026-11-06 (Starting art + site scenes) +# HANDOFF — 2026-11-09 (TASK 33 policy; vertical checks passed) ## State @@ -11,7 +11,10 @@ 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: the Starting screen is now in the scenes section (`scenes-shot`), deployed 2026-11-06 12:05. +- 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 diff --git a/docs/ai/frame-pipeline.md b/docs/ai/frame-pipeline.md index c2530f6..3362596 100644 --- a/docs/ai/frame-pipeline.md +++ b/docs/ai/frame-pipeline.md @@ -24,6 +24,18 @@ what makes a face judder while the file looks flawless. (The "webcam renders at used to sit in this map was WRONG: it came from a different session and counted every newly rendered layer, not webcam arrivals. Corrected 2026-10-05.) +**Vertical-tier take (2026-11-09).** `ty-20261109-1142-036-0005.mp4`, Release, 1080×1920 @ 30 fps, +300 s, webcam in its default bottom-right tile. Cropped the tile, downscaled to 160×88 grey and +diffed frame to frame: **29.8 distinct images/s overall, median 30-second 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 +`arrivals 29.9–30.1/s`. So the 25.6/s failure above does **not** reproduce in the vertical tier, and +the vertical take therefore does not block the cadence units. + +⚠️ Threshold matters. A naive `mean abs diff > 1.0` on a downscaled tile reports long "0.0/s" +stretches during low motion — that is the measurement failing, not the camera. Duplicates encode to +near-zero (<0.02); a still face with sensor noise sits around 0.3–0.7. Use ~0.05 and read the +histogram before believing a count. + **`Helpers/FrameCadence.cs`** — one pure counter, three feeds. `Add(timestamp)` on any shared monotonic clock; `Summarize()` → frames, rate (gaps ÷ span, NOT frames ÷ span — N frames span N-1 periods), gaps, hitches (default threshold 50ms ≈ 1.5× a 30fps period), longest and average gap;