Merge remote-tracking branch 'origin/claude/frame-timing-harness' into claude/scan-order-compensation

# Conflicts:
#	src/display_manager.py
This commit is contained in:
Chuck
2026-09-24 16:58:46 -04:00
9 changed files with 2070 additions and 13 deletions
+9
View File
@@ -19,6 +19,15 @@ accepts both, but the store flags the old spelling as deprecated
## Unreleased
- `src.common.frame_timing` -- times every frame the display presents, whoever
drew it, and writes cumulative counters to `/dev/shm`. Two tools read it:
`scripts/frame_soak.py` judges a running service (late frames, freezes,
where the time goes), and `scripts/render_bench.py` judges the hardware and
render path alone on a synthetic strip. Both fail a run above 0.1% late
frames, and both call a loop that never waited for the panel NOT LOCKED. A
stall watchdog logs the stack of whatever holds a scroll up for 250 ms or
more. See `docs/SCROLL_PERFORMANCE.md`, "Soaking a rig".
- The web service (`ledmatrix-web`) logs through `src.logging_config` like the
display service, so `journalctl -p err -u ledmatrix-web` works. Successful
GET/HEAD/OPTIONS requests (the UI's polling) are logged at DEBUG instead of