Measurement runs
Every measurement pass, read from the NDJSON run log. When a number looks wrong, the first question is whether that run actually finished — this answers it without shell access to the build machine.
| Started | Duration | Measured | Skipped | Failed | Warnings | Form factor | Log file |
|---|---|---|---|---|---|---|---|
| Aug 23, 2026, 9:20 PM UTC | 41.8s | 1 | 349 | 0 | 0 | mobile | logs/2026-08-23T21-20-23-516Z.ndjson |
| Aug 23, 2026, 9:20 PM UTC | 0s | 0 | 368 | 0 | 0 | mobile | logs/2026-08-23T21-20-21-459Z.ndjson |
| Aug 23, 2026, 9:20 PM UTC | 0.1s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T21-20-21-291Z.ndjson |
| Aug 23, 2026, 9:20 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T21-20-24-040Z.ndjson |
| Aug 23, 2026, 9:20 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T21-20-21-149Z.ndjson |
| Aug 23, 2026, 8:20 PM UTC | 0s | 0 | 368 | 0 | 0 | mobile | logs/2026-08-23T20-20-56-986Z.ndjson |
| Aug 23, 2026, 8:20 PM UTC | 0s | 0 | 350 | 0 | 0 | mobile | logs/2026-08-23T20-20-50-552Z.ndjson |
| Aug 23, 2026, 8:20 PM UTC | 0.1s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T20-20-56-282Z.ndjson |
| Aug 23, 2026, 8:20 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T20-20-53-814Z.ndjson |
| Aug 23, 2026, 8:20 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T20-20-50-071Z.ndjson |
| Aug 23, 2026, 7:21 PM UTC | 65.9s | 1 | 367 | 0 | 0 | mobile | logs/2026-08-23T19-21-00-997Z.ndjson |
| Aug 23, 2026, 7:20 PM UTC | 41s | 1 | 349 | 0 | 0 | mobile | logs/2026-08-23T19-20-59-589Z.ndjson |
| Aug 23, 2026, 7:20 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T19-20-58-364Z.ndjson |
| Aug 23, 2026, 7:20 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T19-20-55-538Z.ndjson |
| Aug 23, 2026, 7:20 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T19-20-53-842Z.ndjson |
| Aug 23, 2026, 6:27 PM UTC | 261.6s | 5 | 360 | 0 | 0 | mobile | logs/2026-08-23T18-27-32-763Z.ndjson |
| Aug 23, 2026, 6:27 PM UTC | 214s | 1 | 349 | 1 | 5 | mobile | logs/2026-08-23T18-27-34-248Z.ndjson |
| Aug 23, 2026, 6:27 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T18-27-39-862Z.ndjson |
| Aug 23, 2026, 6:27 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T18-27-36-694Z.ndjson |
| Aug 23, 2026, 6:27 PM UTC | 0s | 0 | 368 | 0 | 0 | mobile | logs/2026-08-23T18-27-34-105Z.ndjson |
| Aug 23, 2026, 5:19 PM UTC | 63.7s | 1 | 367 | 0 | 0 | mobile | logs/2026-08-23T17-19-40-244Z.ndjson |
| Aug 23, 2026, 5:19 PM UTC | 18s | 0 | 351 | 1 | 3 | mobile | logs/2026-08-23T17-19-38-669Z.ndjson |
| Aug 23, 2026, 5:19 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T17-19-45-245Z.ndjson |
| Aug 23, 2026, 5:19 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T17-19-42-962Z.ndjson |
| Aug 23, 2026, 5:19 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T17-19-38-127Z.ndjson |
| Aug 23, 2026, 4:24 PM UTC | 61.7s | 1 | 367 | 0 | 0 | mobile | logs/2026-08-23T16-24-16-507Z.ndjson |
| Aug 23, 2026, 4:24 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T16-24-16-751Z.ndjson |
| Aug 23, 2026, 4:24 PM UTC | 0.1s | 0 | 351 | 0 | 0 | mobile | logs/2026-08-23T16-24-23-705Z.ndjson |
| Aug 23, 2026, 4:24 PM UTC | 0.1s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T16-24-21-437Z.ndjson |
| Aug 23, 2026, 4:24 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T16-24-15-764Z.ndjson |
| Aug 23, 2026, 3:20 PM UTC | 94.5s | 2 | 366 | 0 | 0 | mobile | logs/2026-08-23T15-20-52-689Z.ndjson |
| Aug 23, 2026, 3:21 PM UTC | 0s | 0 | 351 | 0 | 0 | mobile | logs/2026-08-23T15-21-05-731Z.ndjson |
| Aug 23, 2026, 3:20 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T15-20-54-897Z.ndjson |
| Aug 23, 2026, 3:20 PM UTC | 0.1s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T15-20-50-898Z.ndjson |
| Aug 23, 2026, 3:20 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T15-20-48-985Z.ndjson |
| Aug 23, 2026, 2:21 PM UTC | 61.3s | 1 | 367 | 0 | 0 | mobile | logs/2026-08-23T14-21-38-176Z.ndjson |
| Aug 23, 2026, 2:21 PM UTC | 0.1s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T14-21-39-476Z.ndjson |
| Aug 23, 2026, 2:21 PM UTC | 0s | 0 | 351 | 0 | 0 | mobile | logs/2026-08-23T14-21-39-069Z.ndjson |
| Aug 23, 2026, 2:21 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T14-21-39-025Z.ndjson |
| Aug 23, 2026, 2:21 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T14-21-35-466Z.ndjson |
| Aug 23, 2026, 1:31 PM UTC | 319.9s | 1 | 367 | 0 | 1 | mobile | logs/2026-08-23T13-31-46-367Z.ndjson |
| Aug 23, 2026, 1:31 PM UTC | 66.7s | 0 | 351 | 3 | 9 | mobile | logs/2026-08-23T13-31-46-656Z.ndjson |
| Aug 23, 2026, 1:31 PM UTC | 36.8s | 1 | 364 | 0 | 0 | mobile | logs/2026-08-23T13-31-50-636Z.ndjson |
| Aug 23, 2026, 1:31 PM UTC | 36.2s | 1 | 364 | 0 | 0 | mobile | logs/2026-08-23T13-31-47-051Z.ndjson |
| Aug 23, 2026, 1:31 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T13-31-43-928Z.ndjson |
| Aug 23, 2026, 12:37 PM UTC | 408.8s | 2 | 366 | 0 | 1 | mobile | logs/2026-08-23T12-37-52-964Z.ndjson |
| Aug 23, 2026, 12:37 PM UTC | 135.5s | 2 | 363 | 0 | 0 | mobile | logs/2026-08-23T12-37-39-964Z.ndjson |
| Aug 23, 2026, 12:37 PM UTC | 29.1s | 0 | 351 | 1 | 3 | mobile | logs/2026-08-23T12-37-51-256Z.ndjson |
| Aug 23, 2026, 12:37 PM UTC | 0s | 0 | 365 | 0 | 0 | mobile | logs/2026-08-23T12-37-47-588Z.ndjson |
| Aug 23, 2026, 12:37 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-23T12-37-43-237Z.ndjson |
Reading the logs
Each run writes a full NDJSON log to logs/<runId>.ndjson,
one JSON object per line, plus a summary line appended to
logs/runs.ndjson. Both are greppable:
# Every warning and error across all runs
grep -h '"level":"warn"\|"level":"error"' logs/*.ndjson | jq .
# What happened to one site in one run
jq 'select(.data.url == "https://example.com/")' logs/2026-01-01*.ndjson
# Run history at a glance
npx speedlify runs