Skip to content

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

Open
isVoid wants to merge 22 commits into
mainfrom
codex/woa-xrepo-public-automation
Open

isVoid wants to merge 22 commits into
mainfrom
codex/woa-xrepo-public-automation

Conversation

@isVoid

@isVoid isVoid commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Automates public-to-private WoA validation, incrementally on top of merged #3025. Renames woa-validation-dispatch.yml to woa-main-ci.yml; removes the completed phase-1 transport diagnostic rather than adding another automation wrapper.

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

Behavior

  • Public ci.yml calls the reusable dispatch workflow only for pushes to NVIDIA/cuda-python:main, after the Windows ARM64 and Linux build groups succeed. Linux provides the shared pathfinder wheel. Private testing can overlap remaining public CI jobs; PR CI does not dispatch WoA tests.
  • The existing two-job separation remains: a read-only resolver/selector, then a credential-bearing dispatch job with no checkout or artifact processing.
  • ci/tools/select-woa-batch selects a batch after three commits since the nearest older successful App-owned WoA check, or once the oldest pending commit is at least two hours old. It scans up to 100 main commits, bootstraps when no baseline is found, and suppresses an already-recorded attempt for the exact run/SHA.
  • An hourly schedule at minute 17 UTC revisits deferred batches. Manual dispatch accepts an optional public run ID; leaving it empty finds a successful main/push CI run. Manual dispatch still follows batching and deduplication, not a force-run bypass.
  • lookup-run-id gains optional branch-mode --event filtering without changing callers that omit it. Explicit run IDs also allow an eligible in-progress main/push run, enabling early dispatch after the required builds.
  • Public dispatch is non-cancelling and concurrency-controlled. It sends only schema version, repository name, approved workflow ID, 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 private workflow creates and completes the aggregate cuda-python WoA integration check plus one check per supported Python version on the public commit. Checks report status/conclusion and link to the private workflow run; viewing its logs and JUnit artifacts requires private-repository access. No raw JUnit XML or test output is uploaded publicly.

The aggregate App check remains the batching baseline. These checks are not integrated into public Check job status in this PR.

Rollout

Merge private #651 first, then this PR: the public workflow dispatches the renamed private endpoint. Existing App credentials and variables are reused; no new secrets or App permissions are introduced.

Validation

  • Local regression tests cover lookup event filtering and backwards compatibility; workflow lint, Bash syntax, and diff checks are exercised.
  • Local simulations cover batching/deduplication and the coordinated six-input dispatch contract.
  • The pre-commit failure identified in this sweep was missing SPDX headers on the new selector and lookup tests; this update adds the standard repository headers.
  • The earlier merged manual pilot completed a real round trip. The expanded automatic/all-Python/full-suite path still needs actual GB10 validation; local mocks do not establish hardware success.

Known Limits

Batch selection uses bounded commit/check history, not a durable external ledger. Workflow cancellation or a reporting-service outage can leave checks incomplete; durable recovery is not included here.

@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
@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
Comment thread ci/tools/select-woa-batch Outdated
@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

@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
Comment thread ci/tools/tests/test_lookup_run_id.py Outdated

@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

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants