The gap
publish.yml builds wheels on ubuntu-latest, macos-latest, windows-latest and windows-11-arm.
ci.yml runs the test suite on windows-latest, Python 3.12, only.
So three of the four artefacts we publish have never had a test run against them on the
platform they target. They are compiled and uploaded on the strength of a Windows test run.
This is the same shape of gap that produced the 0.0.1 pull: a check that proves the code
builds, standing in for a check that proves the artefact works.
Why it is not theoretical
The parts most likely to diverge by platform are exactly the parts we lean on:
ctypes loading of the core: .dll / .so / .dylib resolution differs per platform
- path handling, which Windows-only testing systematically under-exercises
- the wasm component cache directory and its permissions
- console-script shims, which differ between
Scripts/ and bin/
What to do
- Widen
ci.yml to os: [ubuntu-latest, macos-latest, windows-latest] x
python-version: ["3.10", "3.11", "3.12", "3.13"]
- Run
scripts/smoke_published_wheel.py --wheel <built> on each matrix leg, against the
wheel built by that leg — not against a source checkout
- Make the smoke run a required check before any tag
Definition of done
No wheel is published for a platform on which the full suite and the artefact smoke have not
both passed. If we cannot test a platform, we do not ship a wheel for it — an untested
artefact is a claim we have not earned.
The gap
publish.ymlbuilds wheels on ubuntu-latest, macos-latest, windows-latest and windows-11-arm.ci.ymlruns the test suite on windows-latest, Python 3.12, only.So three of the four artefacts we publish have never had a test run against them on the
platform they target. They are compiled and uploaded on the strength of a Windows test run.
This is the same shape of gap that produced the 0.0.1 pull: a check that proves the code
builds, standing in for a check that proves the artefact works.
Why it is not theoretical
The parts most likely to diverge by platform are exactly the parts we lean on:
ctypesloading of the core:.dll/.so/.dylibresolution differs per platformScripts/andbin/What to do
ci.ymltoos: [ubuntu-latest, macos-latest, windows-latest]xpython-version: ["3.10", "3.11", "3.12", "3.13"]scripts/smoke_published_wheel.py --wheel <built>on each matrix leg, against thewheel built by that leg — not against a source checkout
Definition of done
No wheel is published for a platform on which the full suite and the artefact smoke have not
both passed. If we cannot test a platform, we do not ship a wheel for it — an untested
artefact is a claim we have not earned.