Skip to content

ci: growth runs on main only; a pull request's coverage keeps its growth status - #453

Merged
turbolytics merged 1 commit into
mainfrom
ci/growth-on-main
Oct 10, 2026
Merged

turbolytics merged 1 commit into
mainfrom
ci/growth-on-main

Conversation

@turbolytics

Copy link
Copy Markdown
Owner

Pull requests no longer run the Growth job. Main runs it on every push, at full length.

Why

Growth took about 1.5 billed minutes on every pull request push. A release waits for main's CI run on the tagged commit, so main catches a leak before any release.

Skipping Growth needed a coverage change

With #452's own reports and no growth report:

  • --check found 6 gaps, for example cli.serve: growth is missing.
  • --write rewrote those 6 cells from covered to missing, so the stale check would fail too.

The generator now takes --not-run LEVEL:

  • A missing cell at that level is no gap.
  • The status files keep the committed status for that level.

CI passes --not-run growth on pull requests and nothing on main. The expression is event_name != 'push' && '--not-run growth' || ''. The reverse form, == 'push' && '' || ..., always yields the flag, because '' is falsy.

Evidence (#452's reports through make coverage-check)

Shape Result
PR: no growth report, --not-run growth exit 0, docs/coverage unchanged
Main: no growth report fails: growth is missing
Main: with the growth report exit 0

Two new tooling tests, and all 211 tooling tests pass.

Locally

make test-growth GROWTH=bounded runs the growth tier at about ten seconds a test.

…wth status

Every pull request push ran the Growth job, about 1.5 minutes of
billed time, before any change could merge. A leak check proves memory
does not grow with the work. Main catches a leak before any release,
because a release waits for main's CI run on the tagged commit.

Growth now runs only on push, which is main, and always at full length.
Skipping the job alone fails Coverage. With #452's own reports and no
growth report, the check found 6 gaps ("cli.serve: growth is missing"),
and --write rewrote those 6 cells from covered to missing, which fails
the stale check.

The generator takes --not-run LEVEL:
- A missing cell at that level is no gap.
- The status files keep the committed status at that level.
CI passes --not-run growth on pull requests and nothing on main.

Evidence, from #452's reports through make coverage-check:
- PR shape, no growth report, with --not-run growth: exit 0, docs
  unchanged.
- Main shape, no growth report: fails on "growth is missing".
- Main shape, with the growth report: exit 0.
Two tooling tests: the gap filter and the kept status.

If this is wrong, a pull request that adds a leak merges, and main's
Growth job fails on it before a release. A change that breaks
coverage at another level still fails the pull request.
@turbolytics
turbolytics merged commit 1d4d7c9 into main Oct 10, 2026
7 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 10, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant