Mockup: frame-rate meter and automatic frame-drop/freeze logs #116

Closed
opened 2026-10-08 18:30:55 +00:00 by kayg · 3 comments
Owner

Owner: add a frame-rate meter to the mockup, plus automatic frame-drop and freeze detection that records when and why it dropped, and sends those logs to the orchestrator so the owner never has to describe a drop. The owner judges smoothness on real devices; we make the meter itself as cheap as possible. Mockup/preview builds only, loaded on demand.

Owner: add a frame-rate meter to the mockup, plus automatic frame-drop and freeze detection that records when and why it dropped, and sends those logs to the orchestrator so the owner never has to describe a drop. The owner judges smoothness on real devices; we make the meter itself as cheap as possible. Mockup/preview builds only, loaded on demand.
Author
Owner

Started: branch canvas-perf-hud, base 8d7a50efad (worktree .worktrees/canvas-perf-hud). Plan: src/perf-activity.ts (activity tag), src/perf-hud.on-demand.ts (one rAF loop, 4 Hz readout, incident batching, beacon), POST /__perf on the mock server, specs + captures.

Started: branch canvas-perf-hud, base 8d7a50efad8744cf90376beba7a04c45711f8a6d (worktree .worktrees/canvas-perf-hud). Plan: src/perf-activity.ts (activity tag), src/perf-hud.on-demand.ts (one rAF loop, 4 Hz readout, incident batching, beacon), POST /__perf on the mock server, specs + captures.
Author
Owner

Finish: head 859b3d23bc. Meter + recorder built (commits 8ab742f..859b3d2). Gate: bun run check clean; TS half of verify fast (bun tests incl. perf-detector, build, transfer-budget) green: critical 281271/307200 gzip, deferred 46405/51200, onDemand 2135/11264 (production build contains no meter code). Rust half of scripts/verify fast: test FAIL at crates/infraternal/tests/vt_credit.rs (credit probe failed: t1-gate-approximate-1), unrelated to this TS-only change; host load 25-40 on 8 cores. Specs: clusters+canvas+perf-hud 76 tests, 75 passed in the first full run and the one failure (text bottom-left rule) was fixed by moving the meter bottom-right and re-passes. Frame body: mean 3.4 us over 5021 real frames; isolated 0.03-0.07 us/call. Finding: ANY rAF loop makes an idle page with looping animations recalc style each frame (148 -> 548 recalcs per 9 s, 32 -> 112 ms style); the meter adds nothing beyond an empty loop (553, 114 ms).

Finish: head 859b3d23bcd8d65f87a22bbbda2ae27d98f5ca46. Meter + recorder built (commits 8ab742f..859b3d2). Gate: bun run check clean; TS half of verify fast (bun tests incl. perf-detector, build, transfer-budget) green: critical 281271/307200 gzip, deferred 46405/51200, onDemand 2135/11264 (production build contains no meter code). Rust half of scripts/verify fast: test FAIL at crates/infraternal/tests/vt_credit.rs (credit probe failed: t1-gate-approximate-1), unrelated to this TS-only change; host load 25-40 on 8 cores. Specs: clusters+canvas+perf-hud 76 tests, 75 passed in the first full run and the one failure (text bottom-left rule) was fixed by moving the meter bottom-right and re-passes. Frame body: mean 3.4 us over 5021 real frames; isolated 0.03-0.07 us/call. Finding: ANY rAF loop makes an idle page with looping animations recalc style each frame (148 -> 548 recalcs per 9 s, 32 -> 112 ms style); the meter adds nothing beyond an empty loop (553, 114 ms).
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Frame meter and freeze recorder finished and merged (perf-hud.on-demand.ts in dev; later commits d010d7ceb, 930675def under #116). Reopen if anything is still missing.

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Frame meter and freeze recorder finished and merged (perf-hud.on-demand.ts in dev; later commits d010d7ceb, 930675def under #116). Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:52:39 +00:00
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#116
No description provided.