CI · 9 Oct 2026
Every push still gets format, lint, and typecheck. Unit tests and integration wait until you add the ci-full label.
R20-2692 · PR 3810
What's going on
We already cancel the previous run of the same pull request. That part works.
The new run still takes a large runner, and the one we're cancelling has often already taken one. That's the queue.
Drafts skip the heavy jobs. Once a pull request is marked ready, every later push runs them again.
This afternoon
| Lint-unit | Integration | Total | You wait | |
|---|---|---|---|---|
| Normal pull request, runner was free | 28m | 34m | 66m | 37m |
| This branch, still the full suite | 23m | 16m | 42m | 23m |
Total is every job added up. “You wait” is the wall clock. The normal run is the validate-bulk pull request. Ours is run 37977816102. Most of what's left is unit tests, about 13 minutes, and integration. Format, lint, and typecheck are about 9 minutes once install and the package build are in.
What we'd change
Every push
Format, lint, typecheck. The security audit stays. This can run on a normal runner.
When you add ci-full
The large runner. We take the label off as that run starts, so the next push is cheap again.
The pull request stays red until those two have actually run on this commit. A skip is not a pass.
Where you do it
Keep pushing. You get format, lint, typecheck, and the security audit.
When this commit is the one you want tested, open Labels and pick ci-full.
That starts unit tests and integration. The label comes off by itself.
Why not a button in Actions
None of our environments block self-approval. ci, copilot, and dev have no required reviewers, and no workflow uses them as a gate.
An approval click doesn't stick. The next push cancels it, and you approve the new one. The label removes itself, so you only add it when you mean it.
If this sounds right
ci-full is already on the repo. Anyone with write access can add it.
A merge queue would run the full suite once, on the commit that's about to land. That's a bigger change to branch protection, so not this.
Weekday full runs stay: integration, payroll replay, Playwright, and the full unit suite on main.