Skip to content

CI: gate the native release on the pyver job (Python 3.15 and free-threaded 3.14t) - #372

Merged
tae898 merged 1 commit into
mainfrom
ci/349-gate-native-release-on-pyver
Nov 12, 2026
Merged

tae898 merged 1 commit into
mainfrom
ci/349-gate-native-release-on-pyver

Conversation

@tae898

@tae898 tae898 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator

What does this PR do?

The pyver job of test-native.yml runs a test subset on the built linux-x86_64 wheel on Python 3.15 and on free-threaded 3.14t. release-native.yml never read it, so a red leg could not stop a release. Now a leg that passes uploads the marker native-passed-pyver-py<version> (it holds the file name of the wheel the leg installed), after its gate step, on success only. verify in release-native.yml requires the markers of 3.15 and 3.14t for every kind of release (dev, final and post), and requires that both tested the linux-x86_64 wheel that is published. The Pythons verify names are checked against the pyver legs that scripts/select_native_matrix.py gives a release.

Only linux-x86_64 is checked on these two Pythons: aarch64, macOS and Windows stay untested on them, and the JVM package has no such job. The docs and the workflow comments say so.

Related issues

Closes #349

Docs

development/ci.adoc (the pyver bullet), development/release.adoc (the job list and the publish rules), native/wheel/README.md (the 3.14t line), and the comments of test-native.yml, release-native.yml and scripts/select_native_matrix.py: none calls the job informational any more.

Checklist

  • A regression test fails on the old code and passes on the new: tests/test_release_native_verify.py runs the shipped verify step with bash on small passed/ and wheels/ directories. Run against the old release-native.yml, 7 of its 11 cases fail (a missing pyver marker, and a pyver marker for another wheel, are accepted); against the new one all 11 pass. The old contract test in tests/test_select_native_matrix.py (it asserted that no job reads the pyver job) now pins the new one and fails on the old workflow files.
  • The test suite that the change can affect passes: CI runs it.
  • uvx pre-commit run --files <changed files> passes (black reformatted one test file, now committed), and actionlint with shellcheck passes on both workflows.

🤖 Generated with Claude Code

@tae898

tae898 commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

The red "Test arcadedb" legs are not from this PR: only test_import_database_csv_documents_with_quoted_parallel_setting and test_import_database_csv_graph_vertices_and_edges_with_quoted_parallel fail, because arcadedb#11367 was fixed upstream and the two tests still expect the refusal. I filed it as #376 and will not merge this PR while the legs are red.

…readed 3.14t)

test-native.yml ran the pyver job on the built linux-x86_64 wheel, but release-native.yml never read it, so a red leg could not stop a
release, although 3.15 is a classifier of the wheel and 3.14t is documented. A pyver leg that passes now uploads the marker
native-passed-pyver-py<version> (the file name of the wheel it installed) after its gate step, and verify in release-native.yml
requires the markers of 3.15 and 3.14t for every kind of release, and that both tested the linux-x86_64 wheel that is published.

tests/test_select_native_matrix.py pins the new contract in place of the old one (the old test asserted that no job reads the pyver job):
the marker is uploaded after the gate by steps that run on success only, and the Pythons verify names are the pyver legs the selector
gives a release. tests/test_release_native_verify.py runs the shipped verify step with bash on small passed/ and wheels/ directories:
7 of its 11 cases fail on the old workflow (no pyver check) and pass on the new one.

Only linux-x86_64 is checked on these Pythons; the docs (ci.adoc, release.adoc), the wheel README and the workflow comments say so and no
longer call the job informational.

Closes #349

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@tae898
tae898 force-pushed the ci/349-gate-native-release-on-pyver branch from 206a24d to eceeafd Compare November 12, 2026 01:53
@tae898
tae898 merged commit f66b5ed into main Nov 12, 2026
43 checks passed
@tae898
tae898 deleted the ci/349-gate-native-release-on-pyver branch November 12, 2026 03:16
@github-actions github-actions Bot added this to the 26.12.1 milestone Nov 12, 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.

CI: make the pyver job (Python 3.15 and free-threaded 3.14t) part of the native release gate

1 participant