Skip to content

Forward-merge release/26.10 into main (replacement for #775) - #776

Closed
msarahan wants to merge 2 commits into
rapidsai:mainfrom
msarahan:main-merge-release/26.10-pr775
Closed

Forward-merge release/26.10 into main (replacement for #775)#776
msarahan wants to merge 2 commits into
rapidsai:mainfrom
msarahan:main-merge-release/26.10-pr775

Conversation

@msarahan

Copy link
Copy Markdown
Contributor

Posted by Codex (gpt-5.6-sol) on Michael Sarahan's behalf; please treat this message as LLM-generated.

This replaces #775 because the automated release/26.10 to main forward merge conflicts in the Windows image-tag calculation.

The conflict contains two independent fixes that happen to touch adjacent lines:

  • main corrected the tag ordering to cl${cl}-cuda${cuda}, matching the Linux image convention.
  • release/26.10 changed version discovery to read VERSION directly, preventing producer/consumer mismatches during rollover before the alpha tag exists.

Choosing either side wholesale would regress the other fix, so this merge deliberately keeps the rollover-safe VERSION lookup and the corrected compiler/CUDA ordering.

Validation:

  • pre-commit run --all-files
  • shellcheck ci/validate-devcontainer-bases.sh
  • bash -n ci/validate-devcontainer-bases.sh
  • no unmerged paths
  • git diff --cached --check

This is a true two-parent merge of main at 19dbb2591f365768c3413904ab5c8530af2a2280 and release/26.10 at 30857e4672e00946f1de58a74dc8aee1470d9b07. Please merge it with /merge nosquash so the forward-merge topology is preserved. Keep #775 open until this replacement lands so the forward-merger can complete normally afterward.

msarahan and others added 2 commits September 10, 2026 12:58
**Posted by Codex (GPT-5) on Michael Sarahan's behalf. Treat this
message as LLM-generated.**

## Why

The 26.12 version update triggered the release workflow before
`v26.12.00a` existed. Image producers derive their namespace from the
most recent reachable tag, so they published successful `26.10-*` images
while the newly updated unified devcontainers requested `26.12-*`
images. The alpha tag appeared nine minutes after the workflow began. A
later retry of failed jobs could not recover because GitHub did not
rerun the already-successful producer jobs.

This creates an avoidable bootstrap dependency: the version-update
workflow needs to publish the new namespace before the tag that
currently defines that namespace can be created. The committed `VERSION`
file is already updated atomically with the consumer definitions and is
therefore the appropriate source of truth for producer tags.

The incident also exposed a second class of mismatch: `matrix.yml` can
change an image component version without the checked-in unified
devcontainers changing their `BASE` references. Without validation, that
drift is only discovered after all producer builds complete and
consumers attempt to pull an image that will never be published.

PR rapidsai#766 applies the UCX alignment to `release/26.10` for
forward-merging. This branch currently contains the equivalent
main-branch alignment; that portion will disappear from this PR's diff
after the forward merge reaches `main`.

## Changes

- derive Linux and Windows producer namespaces from the committed
`VERSION` file instead of `git describe`
- validate that `VERSION` uses `YY.MM.PP` format
- reconstruct all publishable Linux image tags from `matrix.yml`,
including OS-qualified tags and OS-free aliases
- reject any checked-in RAPIDS unified devcontainer `BASE` that the
current matrix cannot produce
- run that validation in pre-commit and as a fatal release prerequisite
before Linux producers and downstream unified devcontainers run
- add ShellCheck coverage for the release-bootstrap scripts touched here

## Why the previous sequence cannot recur

After these changes, merging a version update changes both producer and
consumer namespaces through the same committed `VERSION` value. The
producer no longer depends on whether the alpha tag existed when the
workflow checkout occurred. The release also stops before building
images if a consumer base does not correspond to the current matrix, so
component-version drift is reported directly rather than surfacing as a
late missing-manifest error.

## Validation

- `pre-commit run --all-files`
  - zizmor
  - devcontainer base-image validation
  - ShellCheck for the release-bootstrap scripts
- positive validation against the 26.12 / UCX 1.21 configuration
- negative validation with a deliberate UCX 1.19 base, which failed and
identified the affected file and unproducible tag
- `git diff --check`

Incident:
https://github.com/rapidsai/devcontainers/actions/runs/34280170418/job/102279620120

---------

Co-authored-by: Paul Taylor <178183+trxcllnt@users.noreply.github.com>
@msarahan
msarahan requested a review from a team as a code owner September 10, 2026 18:10
@msarahan
msarahan requested review from bdice and removed request for a team September 10, 2026 18:10
@msarahan

Copy link
Copy Markdown
Contributor Author

/merge nosquash

@rapids-bot

rapids-bot Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Could not determine original ForwardMerger PR from branch name. The branch name should follow the pattern <target_branch>-merge-<source_branch> (e.g., branch-25.06-merge-branch-25.04 or main-merge-release/25.06). Please contact @rapidsdevops on Slack for assistance.

@msarahan msarahan closed this Sep 10, 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.

1 participant