Skip to content

[AAASM-4446] 🔧 (ci): Build cp313 wheels in the release matrix - #239

Merged
Chisanan232 merged 1 commit into
masterfrom
v0.0.1/AAASM-4446/release_cp313_wheels
Jul 12, 2026
Merged

[AAASM-4446] 🔧 (ci): Build cp313 wheels in the release matrix#239
Chisanan232 merged 1 commit into
masterfrom
v0.0.1/AAASM-4446/release_cp313_wheels

Conversation

@Chisanan232

@Chisanan232 Chisanan232 commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

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 scalar env.PYTHON_VERSION ('3.12') as maturin's sole --interpreter. So PyPI received only cp312 wheels even though pyproject.toml declares requires-python = ">=3.12,<4.0" with classifiers for 3.12 / 3.13 / 3.14.

On a 3.13 or 3.14 interpreter, pip/uv find 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 a py3-none-any wheel with no agent_assembly._coreinit_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):

  • Linux (manylinux: auto): the manylinux image ships all CPythons, so --interpreter 3.12 3.13 3.14 resolves each in-image directly.
  • macOS: runners have no manylinux image, so each interpreter is installed first via a multi-version 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.toml already claims it in requires-python + classifiers, so building it keeps published wheels matched to declared support.

Type of Change

  • 🔧 Bug fix

Breaking Changes

  • No

Related Issues

Testing

  • Manual testing performed

actionlint passes on the modified release-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 show cp312, cp313, and cp314 wheels for all four platform tags.

  • No tests required — this is a release-only workflow; a PR-time drift guard that prevents the matrix from silently diverging from requires-python/classifiers again is added in the stacked follow-up AAASM-4453.

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Comments added for complex logic
  • Documentation updated if needed
  • All tests passing

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
@Chisanan232

Copy link
Copy Markdown
Contributor Author

Claude Code — 4-point review

1. CI — ✅ All green: Analyze (python) pass, analyze (CodeQL) pass, CodeQL pass, Run tag → PEP 440 fixture suite pass. The main pytest matrix is correctly absent — this PR only edits .github/workflows/*, which ci.yaml's path-filter excludes (expected, not a miss).

2. Scope vs ticket (AAASM-4446) — ✅ Matches. All four platform wheel jobs (build-linux-x86_64, build-linux-aarch64, build-macos-arm64, build-macos-x86_64) now pass --interpreter 3.12 3.13 3.14 to maturin instead of the scalar cp312-only env.PYTHON_VERSION. Linux relies on the manylinux image shipping all CPythons; both macOS jobs install 3.12/3.13/3.14 via a multi-version setup-python block before the build. cp314 correctly included (Python 3.14 GA since Oct 2025; pyproject.toml already claims it in requires-python/classifiers). Directly closes the silent native-core-less fallback on 3.13/3.14.

3. Side effects (CI/CD) — ✅ No regression. The refactor is confined to the six --interpreter/setup-python lines; the publish/OIDC path, sdist job, and workflow_dispatch-only trigger (inputs intact) are untouched. id-token:write remains scoped to the publish job only. env.PYTHON_VERSION='3.12' is retained for host/tooling jobs. Only residual risk is inherent to any wheel-matrix change: the real multi-interpreter maturin build can't be exercised until the next rc dispatch — acknowledged in the PR body; the stacked #240 drift guard defends it going forward.

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

@Chisanan232
Chisanan232 merged commit 0d6d95c into master Jul 12, 2026
4 checks passed
@Chisanan232
Chisanan232 deleted the v0.0.1/AAASM-4446/release_cp313_wheels branch July 12, 2026 11:22
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.

1 participant