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 21, 2026, 5:09 PM UTC | 360.8s | 10 | 265 | 0 | 0 | mobile | logs/2026-08-21T17-09-34-285Z.ndjson |
| Aug 21, 2026, 5:09 PM UTC | 119.7s | 0 | 366 | 6 | 18 | mobile | logs/2026-08-21T17-09-27-704Z.ndjson |
| Aug 21, 2026, 5:09 PM UTC | 98s | 0 | 366 | 5 | 15 | mobile | logs/2026-08-21T17-09-24-067Z.ndjson |
| Aug 21, 2026, 5:09 PM UTC | 71.1s | 0 | 348 | 1 | 3 | mobile | logs/2026-08-21T17-09-26-921Z.ndjson |
| Aug 21, 2026, 4:47 PM UTC | 597.6s | 7 | 359 | 3 | 12 | mobile | logs/2026-08-21T16-47-57-162Z.ndjson |
| Aug 21, 2026, 4:47 PM UTC | 326.5s | 0 | 366 | 10 | 30 | mobile | logs/2026-08-21T16-47-57-909Z.ndjson |
| Aug 21, 2026, 4:47 PM UTC | 303.6s | 10 | 255 | 0 | 4 | mobile | logs/2026-08-21T16-47-56-597Z.ndjson |
| Aug 21, 2026, 4:47 PM UTC | 0.1s | 0 | 348 | 0 | 0 | mobile | logs/2026-08-21T16-47-57-168Z.ndjson |
| Aug 21, 2026, 4:32 PM UTC | 855.7s | 4 | 355 | 16 | 48 | mobile | logs/2026-08-21T16-32-38-454Z.ndjson |
| Aug 21, 2026, 4:32 PM UTC | 805s | 8 | 358 | 12 | 36 | mobile | logs/2026-08-21T16-32-34-499Z.ndjson |
| Aug 21, 2026, 4:32 PM UTC | 779.2s | 17 | 239 | 3 | 10 | mobile | logs/2026-08-21T16-32-38-033Z.ndjson |
| Aug 21, 2026, 4:32 PM UTC | 278.7s | 0 | 348 | 1 | 3 | mobile | logs/2026-08-21T16-32-35-686Z.ndjson |
| Aug 21, 2026, 4:32 PM UTC | 0.7s | 1 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T16-32-32-936Z.ndjson |
| Aug 21, 2026, 3:32 PM UTC | 1220.5s | 18 | 222 | 2 | 8 | mobile | logs/2026-08-21T15-32-26-757Z.ndjson |
| Aug 21, 2026, 3:32 PM UTC | 354.4s | 1 | 352 | 10 | 31 | mobile | logs/2026-08-21T15-32-26-057Z.ndjson |
| Aug 21, 2026, 3:32 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T15-32-28-030Z.ndjson |
| Aug 21, 2026, 2:34 PM UTC | 850.5s | 17 | 205 | 3 | 12 | mobile | logs/2026-08-21T14-34-19-448Z.ndjson |
| Aug 21, 2026, 2:34 PM UTC | 795.9s | 20 | 343 | 0 | 2 | mobile | logs/2026-08-21T14-34-13-816Z.ndjson |
| Aug 21, 2026, 2:34 PM UTC | 766.4s | 20 | 341 | 0 | 2 | mobile | logs/2026-08-21T14-34-16-342Z.ndjson |
| Aug 21, 2026, 2:34 PM UTC | 557.7s | 5 | 347 | 15 | 45 | mobile | logs/2026-08-21T14-34-15-480Z.ndjson |
| Aug 21, 2026, 2:34 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T14-34-14-023Z.ndjson |
| Aug 21, 2026, 1:43 PM UTC | 762.5s | 20 | 322 | 0 | 2 | mobile | logs/2026-08-21T13-43-59-698Z.ndjson |
| Aug 21, 2026, 1:43 PM UTC | 573.5s | 20 | 324 | 0 | 2 | mobile | logs/2026-08-21T13-43-59-487Z.ndjson |
| Aug 21, 2026, 1:43 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T13-43-56-770Z.ndjson |
| Aug 21, 2026, 12:43 PM UTC | 1120.1s | 17 | 307 | 3 | 14 | mobile | logs/2026-08-21T12-43-48-412Z.ndjson |
| Aug 21, 2026, 12:43 PM UTC | 875.9s | 13 | 334 | 7 | 22 | mobile | logs/2026-08-21T12-43-43-122Z.ndjson |
| Aug 21, 2026, 12:43 PM UTC | 582.7s | 20 | 302 | 0 | 1 | mobile | logs/2026-08-21T12-43-45-226Z.ndjson |
| Aug 21, 2026, 12:43 PM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T12-43-43-070Z.ndjson |
| Aug 21, 2026, 11:24 AM UTC | 1358.3s | 17 | 285 | 3 | 14 | mobile | logs/2026-08-21T11-24-42-014Z.ndjson |
| Aug 21, 2026, 11:24 AM UTC | 751.7s | 5 | 329 | 15 | 45 | mobile | logs/2026-08-21T11-24-39-475Z.ndjson |
| Aug 21, 2026, 11:24 AM UTC | 658.1s | 19 | 288 | 1 | 5 | mobile | logs/2026-08-21T11-24-38-644Z.ndjson |
| Aug 21, 2026, 11:24 AM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T11-24-40-320Z.ndjson |
| Aug 21, 2026, 10:29 AM UTC | 1357s | 18 | 311 | 2 | 14 | mobile | logs/2026-08-21T10-29-00-777Z.ndjson |
| Aug 21, 2026, 10:28 AM UTC | 721.3s | 18 | 270 | 2 | 7 | mobile | logs/2026-08-21T10-28-59-106Z.ndjson |
| Aug 21, 2026, 10:28 AM UTC | 603.9s | 19 | 266 | 1 | 5 | mobile | logs/2026-08-21T10-28-58-876Z.ndjson |
| Aug 21, 2026, 10:28 AM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T10-28-58-352Z.ndjson |
| Aug 21, 2026, 9:35 AM UTC | 890.4s | 19 | 251 | 1 | 6 | mobile | logs/2026-08-21T09-35-33-569Z.ndjson |
| Aug 21, 2026, 9:35 AM UTC | 735.8s | 20 | 291 | 0 | 2 | mobile | logs/2026-08-21T09-35-32-332Z.ndjson |
| Aug 21, 2026, 9:35 AM UTC | 715.1s | 16 | 250 | 4 | 12 | mobile | logs/2026-08-21T09-35-30-590Z.ndjson |
| Aug 21, 2026, 9:35 AM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T09-35-31-237Z.ndjson |
| Aug 21, 2026, 8:39 AM UTC | 835.2s | 16 | 275 | 4 | 13 | mobile | logs/2026-08-21T08-39-06-237Z.ndjson |
| Aug 21, 2026, 8:39 AM UTC | 617.5s | 15 | 236 | 5 | 16 | mobile | logs/2026-08-21T08-39-07-781Z.ndjson |
| Aug 21, 2026, 8:39 AM UTC | 573.6s | 18 | 232 | 2 | 7 | mobile | logs/2026-08-21T08-39-07-793Z.ndjson |
| Aug 21, 2026, 8:39 AM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T08-39-06-463Z.ndjson |
| Aug 21, 2026, 7:41 AM UTC | 1161.8s | 18 | 214 | 2 | 8 | mobile | logs/2026-08-21T07-41-22-153Z.ndjson |
| Aug 21, 2026, 7:41 AM UTC | 612.7s | 19 | 256 | 1 | 4 | mobile | logs/2026-08-21T07-41-20-098Z.ndjson |
| Aug 21, 2026, 7:41 AM UTC | 524s | 18 | 218 | 2 | 8 | mobile | logs/2026-08-21T07-41-15-362Z.ndjson |
| Aug 21, 2026, 7:41 AM UTC | 0s | 0 | 0 | 0 | 0 | — | logs/backfill-2026-08-21T07-41-20-904Z.ndjson |
| Aug 21, 2026, 6:43 AM UTC | 615.5s | 19 | 195 | 1 | 6 | mobile | logs/2026-08-21T06-43-54-941Z.ndjson |
| Aug 21, 2026, 6:43 AM UTC | 605.2s | 18 | 238 | 2 | 10 | mobile | logs/2026-08-21T06-43-58-654Z.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