feat(perf): compare nightly iOS runs and run the suite every night

Merged
TH
3d ago
+1088-23

Summary

Un-parks perf-nightly (#1781 A3): iOS runs nightly at 02:40 UTC; dispatch takes rounds, warmup, scenarios, baseline size and branch. Each run uploads perf-ios-summary (90 days) and perf-ios-raw (30 days), compares with earlier runs, and writes the verdict to the job summary with warnings for regressions and new failures.

pnpm perf:compare [--to <ref>] [--from <ref>|<a>..<b>] does the same locally (run id, date, latest, or a local output). A step is flagged only when its median moves more than 20%, 3× the night-to-night scaled MAD, 2× its own cv/√n, and 50 ms against the median of up to 7 earlier full-suite nights; fewer than 3 nights give no verdict. 15 files. Android stays report-only behind a dispatch input.

Validation

  • Dispatches on this branch: 39664219771 and 39671171208 found an iOS 26.2 "Open in" prompt after trigger-app-event and a late route change after answering it (both fixed in layer 2); 39679264668 at the stack head: success, 101/105 clean, comparison against the two earlier runs in the job summary (100 fixed, 3 failing, 2 insufficient-baseline).
  • pnpm perf:compare --to 39679264668 --branch perf/nightly-comparison downloads and reproduces that verdict locally.
  • vitest scripts/perf and repo guards: pass. Gate receipt: pnpm check:affected --run --head 60cf336129 (stack head, includes this layer): passed, exactCommit: true; FAIL-OPEN full set, every local check passed; native, device, and coverage lanes are GitHub-authoritative..

Risk: the first nights have no verdicts until 3 nights exist.

🤖 Generated with Claude Code