ci(next): retain exact frame pacing receipts
Merged
TE
20d ago+223+223+012345678901234567890123456789-10-10-01234567890123456789
Frame-pacing currently surfaces warnings but leaves no durable, source-bound measurement artifact. This change writes a machine-readable summary.json beside the raw fling data, bound to the exact resolved source SHA and workflow SHA.
The receipt records display status, per-mode median p50/p95 frame timings, dropped/total frames, thresholds, and regression annotations. Existing warning-only behavior is unchanged so unavailable GUI runners remain non-blocking while later ratchets have stable input.
Validation:
python3 tests/test_ci_frame_pacing_summary.pypython3 -m py_compile scripts/ci/frame-pacing/summarize.pypython3 tests/test_ci_frame_pacing_app_rpc.pygit diff --check
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Writes a summary.json receipt beside the raw frame-pacing fling data, bound to the exact source and workflow SHAs that produced it.
- Records display status, per-mode median p50/p95 timings, dropped/total frames, thresholds, and regression annotations.
- Also writes a receipt for skipped runs (GUI token not acquired or gate skip), preserving the reason so skipped nights are distinguishable from missing artifacts.
- Keeps the job warning-only, so unavailable GUI runners still don't block the run.