Start with the Cartesian product
For ordinary static axes, multiply the number of values in each axis. Two Node.js versions and three databases produce six job copies:
strategy:
matrix:
node: [18, 20]
database: [postgres, mysql, sqlite]
include, exclude, dynamic expressions, and reusable workflows can change that result. A trustworthy analyzer should model the combinations it can prove and mark the rest as approximate or unknown—not silently call them free.
Combine copies with the runner rate
CI Bill Doctor’s beta signal for one runtime minute is:
Its catalog reviewed on August 1, 2026 records standard GitHub-hosted Linux at USD 0.006 per minute and standard macOS at USD 0.062 per minute. Always verify the current values in GitHub’s official runner pricing; the project also keeps a versioned catalog.
A small diff, a large structural change
Consider a base workflow with two Linux copies and a proposed workflow with six macOS copies:
The delta is USD 0.360 for every minute represented by that static structure. That is not the final bill: actual duration, run frequency, included quotas, discounts, credits, taxes, retries, and other repositories still matter. It is a review signal showing that the proposed workflow is structurally much more expensive at public list rates.
What to review before merging
- Remove unsupported combinations with
exclude. - Move exhaustive combinations to a nightly or manual workflow when pull-request coverage can be smaller.
- Keep platform-specific jobs separate from portable tests.
- Add path filters when only some changes require the expensive workflow.
- Cancel superseded runs and add explicit timeouts.
These are review prompts, not automatic edits. The correct combination set depends on the project’s compatibility promise.
What this calculation cannot tell you
A static matrix signal cannot reconcile an invoice. Dynamic matrices, larger runners, custom labels, self-hosted infrastructure, changing duration, and organization-specific pricing require additional evidence. Unknown must remain unknown.
Check your workflow locally
Paste base and proposed YAML into the free browser scanner. Analysis runs in the current tab; CI Bill Doctor receives no workflow content or telemetry.
Open the local scanner