[AAASM-4446] 🔧 (ci): Build cp313 wheels in the release matrix - #239
Conversation
The 4 platform wheel jobs each passed the scalar PYTHON_VERSION (3.12) as maturin's sole --interpreter, so PyPI only ever received cp312 wheels even though pyproject declares requires-python >=3.12,<4.0 and classifiers for 3.13/3.14. On a 3.13/3.14 interpreter pip/uv found no matching wheel and built the hatchling sdist, which has no maturin hook — producing a py3-none-any wheel with no agent_assembly._core, so agent registration silently no-ops (AAASM-4446). Build a wheel for every supported CPython (3.12/3.13/3.14) on all four platform targets. Linux uses the manylinux image's bundled CPythons; the two macOS jobs install each interpreter via multi-version setup-python first, since macOS runners ship no manylinux image. Refs AAASM-4446
Claude Code — 4-point review1. CI — ✅ All green: 2. Scope vs ticket (AAASM-4446) — ✅ Matches. All four platform wheel jobs ( 3. Side effects (CI/CD) — ✅ No regression. The refactor is confined to the six 4. Front-end — N/A. Workflow YAML only; no front-end code, no Playwright. Overall: APPROVE. (Not merging / not changing Jira per review scope. This is the base of the stack — merge #239 before #240.) — Claude Code |
Description
The Python SDK release workflow only ever produced cp312 wheels. All four platform wheel jobs (
build-linux-x86_64,build-linux-aarch64,build-macos-arm64,build-macos-x86_64) passed the scalarenv.PYTHON_VERSION('3.12') as maturin's sole--interpreter. So PyPI received only cp312 wheels even thoughpyproject.tomldeclaresrequires-python = ">=3.12,<4.0"with classifiers for 3.12 / 3.13 / 3.14.On a 3.13 or 3.14 interpreter,
pip/uvfind no matching platform wheel and fall back to building the sdist. The sdist's[build-system]is hatchling with no maturin hook, so the fallback yields apy3-none-anywheel with noagent_assembly._core—init_assembly()then silently skips agent registration (a governance SDK failing open, silently). This is AAASM-4446, hit on the 3.13 quick-start.This PR makes all four jobs build a wheel for every supported CPython (3.12, 3.13, 3.14):
manylinux: auto): the manylinux image ships all CPythons, so--interpreter 3.12 3.13 3.14resolves each in-image directly.actions/setup-python(python-version:block list), then handed to maturin.Why cp314 is included now: Python 3.14 reached GA in Oct 2025 and is available on GitHub runners and in the manylinux image;
pyproject.tomlalready claims it inrequires-python+ classifiers, so building it keeps published wheels matched to declared support.Type of Change
Breaking Changes
Related Issues
Testing
actionlintpasses on the modifiedrelease-python.yml. The real multi-interpreter maturin build cannot be exercised locally (it needs the manylinux container and the macOS runners) — that proof lands at the next rc dispatch, whose PyPI file list must then showcp312,cp313, andcp314wheels for all four platform tags.requires-python/classifiers again is added in the stacked follow-up AAASM-4453.Checklist