Skip to content

CI speed: PR runner-minutes cut ~47% (trimmed Verify matrix + docs-only skip) — before/after and remaining ideas #241

Description

@ScriptedAlchemy

Landed in #232 (merge 82c44352b). Measured baseline from 8 sampled runs on 2026-09-01 (per-job/per-step timings via the Actions API):

Before (median compute per job)

Job Median Dominant step
Verify (Node 22.19.0) 6.8 min pnpm test ~6.2 min
Verify (Node 24) 6.6 min pnpm test ~5.9 min
Verify (Node 26) 6.8 min pnpm test ~6.0 min
Examples check 3.9 min pnpm examples:check ~3.5 min
Release gates 3.0 min pnpm check:release:ci ~2.7 min
RSC runtime micro-eval 38 s pnpm eval:spot ~18 s
Dependency review 8 s

PR total: ~28 runner-minutes; wall 8.1–15.3 min (median 12.7). Main pushes: same jobs but 20–27 min runner-pool queue before the first job (28–47 min wall for ~7 min of work) — the queue is starved by total fleet runner-minutes, and PRs' 3-wide Verify matrix was ~75% of each PR's cost.

After (from #232's own hosted runs)

Job Measured
Detect changed paths (new) 5 s
Verify (Node 24) — only PR leg 6.8–6.9 min
Examples check 3.5–3.9 min
Release gates 3.3 min
RSC runtime micro-eval 42 s
Dependency review 8 s

PR total: ~15 runner-minutes (−47%). Pushes to main and workflow_dispatch still run the full 22.19/24/26 matrix — main coverage unchanged. Docs-only PRs (docs/, agent-patterns/, .changeset/*.md, top-level *.md; renames count both paths; fail-open on any API doubt or truncated listing) additionally skip Verify/examples/release-gates/micro-eval, dropping a docs-only PR to well under 1 runner-minute.

Deliberately not done (data said no)

  • pnpm store / Playwright-Chrome / build-output caching: already solved (pnpm/setup cache ~3s installs, runner-image Chrome <5s, pnpm build ~10s).
  • Test sharding: pnpm test is ~6 min but splitting adds job-count overhead to an already starved runner pool.
  • Main-push concurrency cancellation: deliberately SHA-keyed no-cancel; every main commit stays verified.

Remaining ideas

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions