Skip to content

CI: split the one run four ways per interpreter, add calibration and scenarios, and gate publishing on it - #793

Merged
derrynknife merged 1 commit into
developfrom
claude/surpyval-next-steps-7uatqe
Oct 9, 2026
Merged

derrynknife merged 1 commit into
developfrom
claude/surpyval-next-steps-7uatqe

Conversation

@derrynknife

Copy link
Copy Markdown
Owner

Makes the one automated test, the full run on the pull request into master, faster, and makes publishing depend on it.

Faster

  • Each interpreter's suite (3.11, 3.12, 3.13) is split into four parts that run at once: 12 jobs, all on free runners. The split uses a new --shard K/N option in the root conftest.py, which keeps the tests whose id hashes (CRC-32) to part K. It is deterministic, so the xdist workers agree, and every test is in exactly one part. Collected with --run-ml, the parts hold 5,536, 5,600, 5,585 and 5,587 of the 22,308 tests.
  • Coverage is measured on 3.12 only, with the sysmon core. A new coverage job combines the four parts' data into one report and uploads the html, as before.
  • The doctests (both passes) run in part 1 of each interpreter.

Calibration studies and scenario cards are in the one run

  • 3.12 also passes --run-calibration --run-scenarios, spread across its four parts.

Release accepts the one test

  • publish.yml still runs no tests.
  • Before building, it checks that the tagged commit is the merge of a pull request into master, and that the latest attempt of every job in that pull request's run succeeded. A skipped job does not count as a pass. Otherwise nothing is published.
  • I ran the check against Merge develop into master #790, which merged under the old flow with the suite jobs skipped on the pull request, and it refuses as it should.

The changes also update docs/Contributing.rst's CI table and the comments that described these tests as nightly or opt-in.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TRhKL2fJBiAAfNo9rihwts


Generated by Claude Code

… scenarios; publishing checks it

The suite on each interpreter runs in four parts at once (--shard K/4 in
the root conftest.py: a test belongs to the part its id hashes to). 3.12
also runs the calibration studies and scenario cards, and measures
coverage, which a coverage job combines; 3.11 and 3.13 no longer measure
it. The doctests run in part 1.

publish.yml runs no tests. It checks that the tagged commit is the merge
of a pull request into master whose full run passed, every job, before it
builds and publishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TRhKL2fJBiAAfNo9rihwts
@derrynknife
derrynknife merged commit f3883cd into develop Oct 9, 2026
@derrynknife derrynknife mentioned this pull request Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants