Skip to content

[WoA] Automate public cross-repository dispatch - #3026

Merged
isVoid merged 22 commits into
mainfrom
codex/woa-xrepo-public-automation
Nov 3, 2026
Merged

isVoid merged 22 commits into
mainfrom
codex/woa-xrepo-public-automation

Conversation

@isVoid

@isVoid isVoid commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Automatically requests private GB10 Windows ARM64 validation of public main builds, extending merged #3025. Renames woa-validation-dispatch.yml to woa-main-ci.yml and removes the phase-1 transport diagnostic.

Paired private PR: https://github.com/NVIDIA-dev/cuda-python-private/pull/651. Tracks https://github.com/NVIDIA-dev/cuda-python-private/issues/584.

Dispatch and batching

  • Public ci.yml calls the reusable dispatch workflow only for pushes to NVIDIA/cuda-python:main, after build-linux-64 and build-windows-arm64 succeed. Linux supplies the shared pathfinder wheel. Private tests can overlap the remaining public CI jobs. PR builds do not dispatch private validation.
  • A read-only job resolves and selects the public build. A separate credential-bearing job dispatches the private workflow without checking out code or processing artifacts.
  • ci/tools/select-woa-batch selects the candidate after three commits since the nearest older successful App-owned WoA check, or when the oldest pending commit is at least two hours old. It scans up to 100 main commits, bootstraps without a baseline, and suppresses an already-recorded attempt for the exact run/SHA.
  • Selection runs on eligible main pushes or manual invocation. There is no cron or idle timer: a deferred batch waits for another eligible push or a manual invocation, even after two hours elapse.
  • Manual dispatch accepts an optional public run ID. Leaving it empty finds a successful main/push CI run through lookup-run-id --event push. Explicit IDs may identify an eligible in-progress main/push run. Manual dispatch follows the same batching and deduplication rules.
  • lookup-run-id gains optional branch-mode --event filtering; callers that omit it retain their existing behavior.
  • Dispatch uses non-cancelling workflow concurrency. It sends six inputs—schema version, repository name, approved workflow ID, public run ID, SHA, and correlation ID—to ctk-next-woa-main-ci.yml on private ctk-next, then verifies the returned private run metadata.

Public results

The paired private workflow validates the exact public artifacts and test sources, reads the CUDA version and supported Python variants from the tested public commit, and runs installed-wheel tests on GB10.

It publishes the aggregate cuda-python WoA integration check and one check per supported Python version on the public commit. Checks contain status/conclusion and a link to the private workflow run. Logs and JUnit artifacts remain private and require private-repository access.

The aggregate App check provides the batching baseline. These checks remain separate from public Check job status.

Rollout and validation

Merge private #651 first so the renamed endpoint exists, then merge this PR. Existing App credentials and permissions are reused.

  • The current public PR CI checks pass, including Windows ARM64 wheel builds and Linux/Windows pre-commit checks.
  • A read-only contract check confirms the six dispatch inputs match the private receiver. All 15 expected artifacts for seven Python variants exist in successful public main run 41487299755.
  • The merged manual pilot completed a real round trip. The expanded automatic/all-Python/full-suite path still requires actual GB10 validation.

Batch selection uses bounded commit/check history. Recovery from whole-workflow cancellation or a reporting-service outage remains deferred.

@copy-pr-bot

copy-pr-bot Bot commented Oct 5, 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.

@github-actions github-actions Bot added the CI/CD CI/CD infrastructure label Oct 5, 2026
@isVoid isVoid mentioned this pull request Oct 14, 2026
4 of 6 tasks
Base automatically changed from codex/woa-xrepo-public-manual-broker to main October 14, 2026 08:23
Comment thread .github/workflows/ci.yml Resolved
@isVoid
isVoid marked this pull request as ready for review October 16, 2026 17:45
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Summary

Summary by CodeRabbit

  • Chores
    • Automated WoA validation now starts after successful Linux and Windows ARM64 builds.
    • Validation runs are batched to avoid redundant checks, with earlier runs scheduled when enough changes have accumulated or a wait threshold is reached.
    • Run selection can now be limited to a specific event type, improving consistency when identifying successful builds.

The CI workflow now triggers WoA main CI after eligible main-branch builds succeed. The WoA workflow resolves and validates a public run, selects whether to dispatch private WoA main CI, and sends the selected run ID and SHA. The manual transport-check workflow was removed.

Changes: WoA main CI

Layer / File(s) Summary
Main-run trigger and public run resolution
.github/workflows/ci.yml, .github/workflows/woa-main-ci.yml, ci/tools/lookup-run-id
The CI workflow invokes WoA main CI after the Linux x64 and Windows ARM64 builds succeed on a main push. The WoA workflow accepts reusable and manual triggers, validates in-progress or successful runs, and uses branch lookup that can filter successful runs by event.
Batch dispatch selection
.github/workflows/woa-main-ci.yml, ci/tools/select-woa-batch
The selector suppresses dispatch when a matching check exists. Otherwise, it checks for a successful baseline and uses pending commit count and age to decide whether to dispatch. The workflow gates dispatch on the selector output.
Private dispatch integration
.github/workflows/woa-main-ci.yml, .github/workflows/woa-transport-check.yml
The private dispatch now targets ctk-next-woa-main-ci.yml and passes the public run ID and SHA. The manual transport-check workflow was removed.

Possibly related issues

  • Issue 2616 describes a condition where build-windows-arm64 can be skipped on stable channels. The new dispatch job requires that build to succeed, and this PR does not change the condition.

Possibly related PRs

  • NVIDIA/cuda-python#3176: Adds the --event branch filter to ci/tools/lookup-run-id, which this PR uses as part of public-run lookup.

Suggested reviewers: leofang

Priority: Normal

Change: Feature

Merge Risk: Low · up to e0f73

The workflow unnecessarily exposes unrelated caller credentials, so pass only the required secret before merging.

- [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@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: 2


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/cuda-python/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: adce7e2b-5bf5-4ae6-8534-b1e2dff63265
📥 Commits

Reviewing files that changed from the base of the PR and between 1cd41ea and 9db98f2.

📒 Files selected for processing: 6
  • .github/workflows/ci.yml
  • .github/workflows/woa-main-ci.yml
  • .github/workflows/woa-transport-check.yml
  • ci/tools/lookup-run-id
  • ci/tools/select-woa-batch
  • ci/tools/tests/test_lookup_run_id.py
💤 Files with no reviewable changes: 1
  • .github/workflows/woa-transport-check.yml

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

Comment thread .github/workflows/woa-main-ci.yml Resolved
Comment thread ci/tools/select-woa-batch Resolved
@github-actions

Copy link
Copy Markdown
Contributor

Comment thread .github/workflows/ci.yml
Comment on lines +485 to +486
github.event_name == 'push' &&
github.ref == 'refs/heads/main' &&

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

They made sure that only merges onto main can trigger this workflow. Even if you see this in the PR CI, they will alway be skipped.

Image

@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: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/cuda-python/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 674c92bb-796f-4725-b5c2-a177e116bb87
📥 Commits

Reviewing files that changed from the base of the PR and between 9db98f2 and 0b144bd.

📒 Files selected for processing: 3
  • .github/workflows/woa-main-ci.yml
  • ci/tools/select-woa-batch
  • ci/tools/tests/test_woa_main_ci.py
🚧 Files skipped from review as they are similar to previous changes: 1
  • ci/tools/select-woa-batch

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

Comment thread .github/workflows/woa-main-ci.yml Resolved

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

♻️ Duplicate comments: 1
.github/workflows/woa-main-ci.yml: 1

17-17: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

important: Restore the hourly schedule. The selector defers batches below three commits until the oldest pending commit is two hours old. With only reusable and manual triggers, that time limit does not start another run. A deferred batch can remain unvalidated until another push or manual dispatch. Restore the minute-17 schedule and update the no-cron assertion in ci/tools/tests/test_woa_main_ci.py. This repeats a concern marked addressed in an earlier review.


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/cuda-python/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 46f7ca8b-08dc-40e6-9ef2-5e235c45e4d7
📥 Commits

Reviewing files that changed from the base of the PR and between 0b144bd and d1ea93a.

📒 Files selected for processing: 4
  • .github/workflows/ci.yml
  • .github/workflows/woa-main-ci.yml
  • ci/tools/select-woa-batch
  • ci/tools/tests/test_woa_main_ci.py
🚧 Files skipped from review as they are similar to previous changes: 1
  • ci/tools/select-woa-batch

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

@rwgk rwgk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, based on a codex GPT-6.1-Sol ultra review of the 651, 3026 pair of PRs.

Comment thread ci/tools/lookup-run-id Resolved
Comment thread ci/tools/tests/test_lookup_run_id.py Resolved

@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: 1


Review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between dcd7b6f and e0f7368.

Files selected for processing: 1
  • .github/workflows/ci.yml

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

Comment thread .github/workflows/ci.yml
uses: ./.github/workflows/woa-main-ci.yml
with:
public_run_id: ${{ github.run_id }}
secrets: inherit

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: Pass only the required secret.

secrets: inherit gives woa-main-ci.yml every available caller secret, although its workflow_call contract declares only CUDA_PYTHON_WOA_XREPO_CI_PRIVATE_APP_PRIVATE_KEY. Pass that secret by name to limit credential exposure in the called workflow. GitHub documents that inherit passes all caller secrets. (docs.github.com) As per path instructions, “focus on least-privilege permissions” and “security boundaries.”

Tools
zizmor (1.30.1)

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

(excessive-permissions)

Sources: Path instructions, Linters/SAST tools

@isVoid
isVoid merged commit 4862cc1 into main Nov 3, 2026
157 of 159 checks passed
@isVoid
isVoid deleted the codex/woa-xrepo-public-automation branch November 3, 2026 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD CI/CD infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants