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.)
This commit is contained in:
2026-11-09 11:53:58 -08:00
parent 555ff5c0ac
commit b39439abdc
2 changed files with 17 additions and 2 deletions
+5 -2
View File
@@ -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
+12
View File
@@ -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;