chore(ci): end future-Python canary green while wheels are missing - #475
Merged
Conversation
The canary fails whenever the next CPython lacks wheels, which is its normal state for most of a release cycle — 3.15 currently stops at torch 2.13.0, which publishes no cp315 wheel and no sdist. A guaranteed-red monthly mail trains you to ignore the one that matters. Classify uv's error instead. A recognised packaging gap (no installable artifact, a failed source build, or a requires-python cap) writes a wheel-readiness table to the job summary and ends green; anything else stays red. Add .github/scripts/next_python_readiness.py to build that table — uv names only the first blocker, so it walks every direct dependency and reports how close the stack is (27/33 ready for 3.15). Red now means act: an unrecognised uv failure, a test failure, or a fully passing run, which is the signal to promote the version into protspace-ci.yml's matrix. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014vsZd3aHAss3gT2VMjVBAu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TLDR
The 3.15 canary is red because
torchpublishes nocp315wheel (and no sdist) — the ecosystem, not protspace. That is its normal state for most of a release cycle, so it now ends green with a wheel-readiness table instead, and red is reserved for something you can act on.Description
Run 33499762812 failed 13 s in:
torch enters via the dev group (
apps/protspace/pyproject.toml). Resolution succeeded — torch'srequires-pythonis a bare>=3.10, so the resolver cannot tell 3.15 is unsupported; it is an install-time platform-tag failure. torch fails first only because it ships no sdist. It is not alone:pyarrow,scikit-learn,pandas,h5pyand (transitively)numba/llvmlitehave no cp315 wheels either. Only 27 of 33 direct dependencies are ready.The workflow's own header already conceded this ("EXPECTED TO BE RED UNTIL THE ECOSYSTEM CATCHES UP"), which is the problem: a guaranteed-red monthly mail trains you to ignore the one that matters.
What changed
Resolve + installis nowcontinue-on-error, and a classifier reads uv's error. A recognised packaging gap — no installable artifact, a failed source build, or arequires-pythoncap — ends the job green with a::notice::. Anything else stays red..github/scripts/next_python_readiness.py(stdlib only) builds the job summary. uv names only the first blocker, so this walks every direct dependency and asks PyPI whether it has a wheel for the target ABI, giving a "27 of 33 ready" picture and a table of what is still missing. Informational — it always exits 0.::error::Python 3.15 is ready — promote it into protspace-ci.yml. Without it this change would have closed the only channel that tells you to promote the version. Drop this step if you would rather find out by looking.Net: red means act — an unrecognised uv failure, a real test failure, or the ecosystem having caught up.
Verification
requires-pythoncap classify green; a genuine dependency conflict and an unrelated network error stay red (the discriminator for a resolution dead-end isNo solution foundandrequires Python).abi3above and below the target,py3-none-any, build-tagged filenames, and wrong-platform wheels.pnpm precommitclean.No user-visible change — CI tooling only, so no docs or notebook updates apply.
🤖 Generated with Claude Code
https://claude.ai/code/session_014vsZd3aHAss3gT2VMjVBAu