Skip to content

ci: retire legacy branch-based bindings maintenance - #3322

Open
rwgk wants to merge 7 commits into
rwgk/cb12-staged-06-planningfrom
rwgk/cb12-staged-07-retirement
Open

rwgk wants to merge 7 commits into
rwgk/cb12-staged-06-planningfrom
rwgk/cb12-staged-07-retirement

Conversation

@rwgk

@rwgk rwgk commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

— codex GPT-6 on behalf of Ralf —

Layer 7 of 7 of the staged "CUDA 12 bindings on main" stack. Previous: #3321. Stack map at the bottom.

What this PR does

Removes what the previous six layers made obsolete, and writes down how the two roots are maintained from now on.

  • ci/versions.yml moves to schema 2: cuda.bindings.package_roots with toolkit_version and release_status; backport_branch, cuda.build, and cuda.prev_build are gone. bindings_config.py still reads the old format, because nightly may point at an older artifact source and release dry runs may point at retained CUDA 13 tags.
  • New pre-commit hook check-bindings-config: each root's setuptools-scm selector must be v<major>.* for its CUDA major, the metapackage selector table must agree, and Core's cu12/cu13 bindings floors must not exceed the pinned toolkits. The old floor hook in toolshed/ is narrowed to extras and docs.
  • The Pixi pin hook now checks Core's maintenance environment as well as its current environment.
  • backport.yml becomes manual-only: a merged PR number plus an existing target branch, with validation. No more automatic backports on the to-be-backported label. Dependabot's 12.9.x entry is removed.
  • ci-nightly.yml extracts only ci/versions.yml from the artifact-source archive: schema-2 sources take the new route, older sources the legacy route (legacy-backport-branch). The legacy artifact aliases (cuda-python-wheel, <core artifact>-tests) are no longer produced.
  • Docs: CONTRIBUTING.md (selector table, transferring a fix between roots with git format-patch --relative and git am --directory, CUDA-major artifact flow, release branches), ci/README.md (registry, SCM milestones, nightly rollout, how to read CI job names, historical reruns, maintaining both roots, changing the supported lines), AGENTS.md (SYNCED blocks), cuda_bindings_12/MAINTENANCE.md (new), install page driver baseline correction (Linux 525.60.13, Windows 528.33), CI diagram.

After this merges

  • The 12.9.x branch is frozen except for emergency fixes; routine CUDA 12 work happens in cuda_bindings_12/ on main.
  • The milestone/bootstrap cleanup can happen earlier: once corrected ci: normalize toolkit configuration and isolate CUDA 13 versions #3314 lands, create retained v12.9.11a0 on validated main, restack both alternatives onto that history, and remove the bootstrap. Until then it remains in this stack.
  • Remove the legacy nightly route after the first schema-2 main run succeeds.

Where to look

All changes (36 files, +977 / -377)

Config and hooks: ci/versions.yml, .pre-commit-config.yaml (new hook; floor hook narrowed), ci/tools/bindings_config.py (metadata checks), toolshed/check_cuda_core_bindings_floor.py, cuda_core/cuda/core/_bindings_floor.py (comment), cuda_core/tests/test_bindings_floor.py, ci/tools/tests/test_bindings_metadata.py (new), ci/tools/check_pixi_cuda_version.py, ci/tools/tests/test_bindings_config.py.

CI workaround: cuda_core/tests/test_memory.py runs supported pool-trim cases serially for the known driver synchronization issue #3350.

Workflows: backport.yml, .github/dependabot.yml, ci-nightly.yml, coverage.yml (registry-driven), build-wheel.yml (aliases removed), test-wheel-linux.yml, test-wheel-windows.yml (legacy-backport-branch input).

Docs: AGENTS.md, CONTRIBUTING.md, README.md, ci/README.md, ci/ci-pipeline.mmd, .github/RELEASE-bindings.md, cuda_bindings_12/{AGENTS.md,MAINTENANCE.md,README.md,docs/README.md,docs/source/contribute.md,docs/source/install.md,docs/source/release/12.X.Y-notes.rst}, cuda_bindings_13/{AGENTS.md,README.md,docs/README.md,docs/source/install.rst,docs/source/support.rst}, cuda_core/AGENTS.md.

Validation
  • Not exercised: the manual backport workflow against a live branch, and the nightly workflow against a schema-2 artifact source (there is none until this stack is on main).
  • 374 CI-tool tests passed locally; full pre-commit passed at 126ed74fb5bbfbc91a04e50557cf936efef4da7f.
  • Full CI on this head passed: 105 successful jobs and one expected skip.
  • The Windows 3.14t/A100-MCDM regression job passed on driver 596.36. DeviceMR and PinnedMR pool-trim cases ran serially and passed; ManagedMR had its normal unsupported-device skip.
Stack map: what main can do after each layer merges
Layer PR After it merges, main ...
1 #3314 behaves exactly as before; CI has one reader for the two bindings roots; CUDA 13 versions can no longer match a v12.* tag
2 #3315 lets a developer build, test, and document cuda_bindings_12/; the PR-time CPU source-build smoke covers both roots; three CUDA 12 runtime fixes are in
3 #3317 builds the CUDA 12 bindings wheel itself and runs its GPU tests; cuda.core and the metapackage still consume 12.9.x artifacts
4 #3318 uses same-run CUDA 12 wheels everywhere; PR CI no longer reads the 12.9.x branch
5 #3319 can release CUDA 12 from a v12.9.N tag on main; CUDA 13 releases are unchanged
6 #3321 builds and tests only what a change needs, per bindings root, reusing baseline artifacts
7 #3322 carries the schema-2 registry, a manual-only backport workflow, a metadata consistency hook, and the maintenance docs; 12.9.x is frozen

Every layer was designed to be mergeable on its own and had a green full CI run at its pre-rebase head on 2026-10-31. The stack is the "individually mergeable pieces" alternative to #3174-#3182; both stacks reach the same end state except that this one keeps compatibility routes for older artifact sources and retained CUDA 13 tags.

@copy-pr-bot

copy-pr-bot Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@rwgk
rwgk added this pull request to stack #3316 October 31, 2026 06:04
@github-actions github-actions Bot added CI/CD CI/CD infrastructure cuda.bindings Everything related to the cuda.bindings module cuda.core Everything related to the cuda.core module labels Oct 31, 2026
@rwgk rwgk added this to the cuda.bindings next milestone Oct 31, 2026
@rwgk rwgk added enhancement Any code-related improvements and removed cuda.core Everything related to the cuda.core module labels Oct 31, 2026
@rwgk rwgk self-assigned this Oct 31, 2026
@rwgk
rwgk force-pushed the rwgk/cb12-staged-07-retirement branch from c42bcf9 to 1c13b86 Compare October 31, 2026 07:49
@github-actions github-actions Bot added the cuda.core Everything related to the cuda.core module label Oct 31, 2026
@rwgk
rwgk force-pushed the rwgk/cb12-staged-07-retirement branch from 1c13b86 to e91c0cb Compare October 31, 2026 08:03

rwgk commented Oct 31, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test e91c0cb

@github-actions

Copy link
Copy Markdown
Contributor

@rwgk
rwgk force-pushed the rwgk/cb12-staged-07-retirement branch 2 times, most recently from 197e95c to 26c9902 Compare November 2, 2026 04:53
@rwgk
rwgk marked this pull request as ready for review November 2, 2026 04:57
@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • Documentation
    • Clarified that CUDA 12.9 and CUDA 13 bindings are maintained on main and share the same package and namespace; use separate Python environments for each.
    • Updated installation guidance for CUDA 13’s metapackage and direct installation of low-level bindings, including optional Toolkit components.
    • Documented CUDA 12 driver requirements, optional Toolkit components, and separate documentation build steps.
    • Clarified that nightly builds publish wheels for both CUDA 12 and CUDA 13.
  • Release Improvements
    • Release builds now validate and package the bindings line selected by the tag.

CUDA 12.9 and CUDA 13 bindings roots are registered on main. CI selects package roots from the registry and validates package metadata, toolkit floors, and release inputs. Workflows and documentation describe the two-root maintenance, testing, and release model.

Changes: Dual Bindings and Release Workflows

Layer / File(s) Summary
Bindings registry and metadata validation
ci/versions.yml, ci/tools/bindings_config.py, ci/tools/check_pixi_cuda_version.py, ci/tools/tests/*, .pre-commit-config.yaml, cuda_core/..., toolshed/check_cuda_core_bindings_floor.py
The registry defines CUDA 12 maintenance and CUDA 13 current roots. Checks validate toolkit floors, package metadata, and CUDA Core pins. Related tests and hooks are updated.
Nightly, coverage, and wheel-test selection
.github/workflows/ci-nightly.yml, .github/workflows/coverage.yml, .github/workflows/test-wheel-*, .github/workflows/build-wheel.yml
Nightly and coverage workflows resolve bindings configuration and package roots. Legacy wheel tests receive an explicit backport branch. The workflows remove legacy artifact aliases.
Release and backport workflow
.github/RELEASE-bindings.md, .github/workflows/backport.yml, .github/dependabot.yml
The backport workflow requires manual dispatch and validates its source PR and target branch. Release instructions select the tagged bindings line. The Actions Dependabot entry for 12.9.x is removed.
Cross-root maintenance and contribution guidance
AGENTS.md, CONTRIBUTING.md, README.md, cuda_bindings_12/AGENTS.md, cuda_bindings_12/MAINTENANCE.md, cuda_bindings_13/AGENTS.md, cuda_core/AGENTS.md, cuda_bindings_13/docs/source/support.rst
Guidance covers cross-root fixes, synchronized snippets, generated files, and maintenance branches. Routine CUDA 12 work is directed to main; emergency fixes from 12.9.x must be reconciled.
Bindings installation and documentation guides
cuda_bindings_12/README.md, cuda_bindings_12/docs/*, cuda_bindings_13/README.md, cuda_bindings_13/docs/*
The guides distinguish source roots, release tags, dependencies, and documentation environments. CUDA 12 installation guidance updates driver baselines and optional Toolkit components.
CI planning and release documentation
ci/README.md, ci/ci-pipeline.mmd
The CI guide documents registry-based selection, nightly artifacts, workplans, release reruns, and release-line rollover. The pipeline diagram includes package planning and selected-component publication.

Possibly related issues

Suggested reviewers: mdboom

Change: Other

Merge Risk: Low · up to 126ed

CI dependency installs retain checkout credentials that build scripts can access. Address or accept this bounded exposure before merging.

- [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 26c9902 and 126ed74.

Files selected for processing: 16
  • .github/workflows/build-wheel.yml
  • .github/workflows/ci-nightly.yml
  • .github/workflows/coverage.yml
  • CONTRIBUTING.md
  • README.md
  • ci/README.md
  • ci/tools/bindings_config.py
  • ci/tools/check_pixi_cuda_version.py
  • ci/tools/tests/test_bindings_config.py
  • ci/tools/tests/test_bindings_metadata.py
  • ci/versions.yml
  • cuda_bindings_12/README.md
  • cuda_bindings_12/docs/source/install.md
  • cuda_bindings_13/README.md
  • cuda_bindings_13/docs/source/install.rst
  • cuda_core/tests/test_memory.py
Files with no reviewable changes: 1
  • .github/workflows/build-wheel.yml
Files skipped from review as they are similar to previous changes: 2
  • README.md
  • ci/README.md

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 9 remain after this review.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3


Review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 718fd32 and 26c9902.

Files selected for processing: 35
  • .github/RELEASE-bindings.md
  • .github/dependabot.yml
  • .github/workflows/backport.yml
  • .github/workflows/build-wheel.yml
  • .github/workflows/ci-nightly.yml
  • .github/workflows/coverage.yml
  • .github/workflows/test-wheel-linux.yml
  • .github/workflows/test-wheel-windows.yml
  • .pre-commit-config.yaml
  • AGENTS.md
  • CONTRIBUTING.md
  • README.md
  • ci/README.md
  • ci/ci-pipeline.mmd
  • ci/tools/bindings_config.py
  • ci/tools/check_pixi_cuda_version.py
  • ci/tools/tests/test_bindings_config.py
  • ci/tools/tests/test_bindings_metadata.py
  • ci/versions.yml
  • cuda_bindings_12/AGENTS.md
  • cuda_bindings_12/MAINTENANCE.md
  • cuda_bindings_12/README.md
  • cuda_bindings_12/docs/README.md
  • cuda_bindings_12/docs/source/contribute.md
  • cuda_bindings_12/docs/source/install.md
  • cuda_bindings_12/docs/source/release/12.X.Y-notes.rst
  • cuda_bindings_13/AGENTS.md
  • cuda_bindings_13/README.md
  • cuda_bindings_13/docs/README.md
  • cuda_bindings_13/docs/source/install.rst
  • cuda_bindings_13/docs/source/support.rst
  • cuda_core/AGENTS.md
  • cuda_core/cuda/core/_bindings_floor.py
  • cuda_core/tests/test_bindings_floor.py
  • toolshed/check_cuda_core_bindings_floor.py
Files with no reviewable changes: 2
  • .github/workflows/build-wheel.yml
  • .github/dependabot.yml

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 10 remain after this review.

Comment on lines +92 to +93
- name: Install CI tool dependencies
run: python -m pip install -e ./ci

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor · Security & Privacy · Quick win

important: Remove the persisted checkout credential before installing CI dependencies.

find-wheels now runs pip install -e ./ci after a checkout that retains its credential. A dependency build script can access that credential. Set persist-credentials: false on the checkout and give find-wheels only the contents: read and actions: read permissions it needs. (github.com)

Based on learnings: jobs that run dependency build tooling should use persist-credentials: false and minimal permissions. As per path instructions: “focus on least-privilege permissions” for workflows.

Tools
zizmor (1.30.1)

[warning] 15-468: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block

(excessive-permissions)


[warning] 72-165: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block

(excessive-permissions)

Sources: Path instructions, Learnings

Comment on lines +34 to +35
- name: Install CI tool dependencies
run: python3 -m pip install -e ./ci

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor · Security & Privacy · Quick win

important: Remove the persisted checkout credential from coverage-vars.

coverage-vars now installs CI dependencies after a checkout that retains its credential. A dependency build script can access that credential. Set persist-credentials: false on this checkout and declare contents: read for coverage-vars. (github.com)

Based on learnings: jobs that run dependency build tooling should use persist-credentials: false and minimal permissions. As per path instructions: “focus on least-privilege permissions” for workflows.

Tools
zizmor (1.30.1)

[warning] 5-623: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block

(excessive-permissions)


[warning] 19-45: overly broad permissions (excessive-permissions): default permissions used due to no permissions: block

(excessive-permissions)

Sources: Path instructions, Learnings

Comment thread cuda_bindings_12/README.md Outdated
Testing dependencies can be installed using the `[test]` optional dependency identifier. For example, `pip install -v -e .[test]`.
Run the commands below from `cuda_bindings_12/`, in an environment containing
the CUDA 12 bindings. Install the package and its `test` dependency group with
`python -m pip install -v -e . --group test`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor · Functional Correctness · Quick win

important: --group was added in pip 25.1, but this setup command does not require or upgrade pip. With pip 25.0 or older, the command fails before installing the package. Add a pip>=25.1 prerequisite or retain the [test] extra; apply the same correction to cuda_bindings_13/README.md Line 25. (pip.pypa.io)

rwgk added 5 commits November 3, 2026 22:03
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
@rwgk
rwgk force-pushed the rwgk/cb12-staged-07-retirement branch from 26c9902 to 178997a Compare November 4, 2026 06:08

rwgk commented Nov 4, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test 178997a

rwgk added 2 commits November 3, 2026 22:24
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Refs: #3350. Preserve every parameter and assertion; only concurrent execution is disabled for this affected test.
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>

rwgk commented Nov 4, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test 126ed74

@rwgk
rwgk marked this pull request as ready for review November 4, 2026 07:42

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD CI/CD infrastructure cuda.bindings Everything related to the cuda.bindings module cuda.core Everything related to the cuda.core module enhancement Any code-related improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant