Runner choice and fan-out compound
The cost-risk signal has two independent multipliers: the public per-minute rate of the runner and the number of job copies created by the workflow. Changing either deserves review. Changing both in one pull request deserves explicit evidence.
The free static scanner proves the first two factors. The optional Action history uses bounded run metadata for duration and frequency, then suppresses unsupported projections when coverage or trigger comparability is incomplete.
A validated before-and-after signal
The public laboratory includes a base structure with two standard Linux copies and a proposed structure with six standard macOS copies. With the project catalog reviewed August 1, 2026:
See the validated lab report, the full methodology, and GitHub’s current official pricing.
Safer review questions
Does every job need Apple tooling?
Keep compilation, signing, simulator, and platform-specific tests on macOS when required. Portable linting, formatting, unit tests, and packaging may be able to remain on Linux.
Does every pull request need the full matrix?
A smaller compatibility set can protect pull requests while exhaustive platform/version coverage runs nightly or before release. The right split depends on the cost of delayed feedback and escaped defects.
Can unchanged areas skip the workflow?
Careful paths or paths-ignore filters can prevent unrelated changes from starting expensive work. Validate monorepository semantics before narrowing triggers.
Are superseded runs still consuming time?
concurrency.cancel-in-progress can stop obsolete work when newer commits arrive. Explicit timeout-minutes also limits the cost of a hung job.
When the answer must remain unknown
Custom labels, larger runners, self-hosted machines, dynamic matrices, and reusable workflow behavior cannot be priced honestly from a simple YAML diff. CI Bill Doctor reports those boundaries rather than treating missing price data as zero.
Review the change before merge
Compare workflow YAML in the browser or install the read-only-by-default Action. The deterministic engine does not send source, logs, artifacts, or workflow content to CI Bill Doctor.
Compare workflow YAML