Skip to content

build(bazel): cut over CI Gate, retain rollback, retire PR Cargo sticky disks (#4) - #427

Merged
DecisionNerd merged 4 commits into
mainfrom
build/4-ci-gate-cutover
Aug 7, 2026
Merged

DecisionNerd merged 4 commits into
mainfrom
build/4-ci-gate-cutover

Conversation

@DecisionNerd

@DecisionNerd DecisionNerd commented Aug 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Make Bazel //:ci_rust_tests the authoritative Rust compile/test path under the unchanged required check name CI Gate; retire Cargo rust-test from Test Suite aggregation.
  • Remove all PR job-isolated Cargo target/ sticky disks from .github/workflows/test.yml (Binding RC / fuzz / M1 packaging sticky lanes retained).
  • Document one-release-cycle Cargo diagnostic/rollback in docs/development/bazel-migration-cutover.md; keep diagnostic same-SHA dual-build parity under Bazel Bootstrap for that cycle.
  • Classifier: any rust=true change also enables bazel=true so the authoritative job always runs for Rust surfaces.

Test plan

  • python3 scripts/ci/test-ci-storage-policy.py (cutover + sticky/deps contracts)
  • scripts/ci/test-classify-changes.sh
  • python3 scripts/ci/bazel-cache-perf.py --mode evaluate (strict, no --allow-pending)
  • scripts/check-workflows.sh
  • Exact-head Test Suite + CI Gate green on this PR

Closes #4

Made with Cursor


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Summary by CodeRabbit

  • New Features

    • Added a unified Rust test suite covering unit, integration, snapshot, CLI, and BDD tests.
    • Rust changes now trigger the appropriate Bazel validation automatically.
  • Bug Fixes

    • Updated CI validation to reflect the Bazel test migration and retired storage configuration.
    • Improved change classification for Rust, Bazel, and infrastructure updates.

Note

Cut over CI Gate to Bazel for Rust tests and retire PR Cargo sticky disks

  • Removes the rust-test Cargo workspace job from CI and replaces it with bazelisk test //:ci_rust_tests in the bazel-bootstrap job, which becomes the authoritative Rust test runner.
  • Adds a new ci_rust_tests Bazel test suite in BUILD.bazel aggregating unit, integration, snapshot, CLI, and BDD tests.
  • Removes Cargo sticky target/ disk mounts from PR jobs (rust-lint, python-binding, node-binding); sticky disks are retained only for Binding RC and M1 host-native release builds.
  • Updates scripts/ci/test-ci-storage-policy.py to enforce cutover invariants: fails if rust-test exists, if Test Suite jobs mount sticky disks, or if CI Gate does not depend on the Bazel job running //:ci_rust_tests.
  • Fixes hermetic Bazel builds for bdd_timing and fixed_hop_limit integration test targets by explicitly declaring all #[path] module sources in crates/graphforge-api/BUILD.bazel.

Macroscope summarized 2253947.

Make Bazel //:ci_rust_tests authoritative under the unchanged CI Gate name,
retire the Cargo rust-test job and PR sticky target/ mounts, and document a
one-release-cycle Cargo diagnostic/rollback path after #5 perf evidence.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation ci-cd CI/CD configuration changes tooling Developer tooling and automation release:none No release note or version impact labels Aug 7, 2026
@coderabbitai

coderabbitai Bot commented Aug 7, 2026 •

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The PR adds the authoritative Bazel Rust test suite, updates change classification to enable Bazel for Rust and migration-document changes, and validates the CI Gate cutover with retired Cargo storage and job checks.

Changes

Bazel CI cutover

Layer / File(s) Summary
Authoritative Rust test graph
BUILD.bazel
Adds ci_rust_tests with unit, integration, snapshot, CLI, and BDD test suites. Updates the smoke-surface comments.
Bazel change classification
scripts/ci/classify-changes.sh, scripts/ci/test-classify-changes.sh
Classifies the migration cutover documentation as Bazel-related and enables Bazel for Rust changes. Updates the classification fixtures.
CI storage and gate validation
scripts/ci/test-ci-storage-policy.py
Removes PR Cargo target sticky-disk expectations, reduces registry cache expectations, and requires CI Gate to invoke bazelisk test //:ci_rust_tests without the retired Rust job.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

Possibly related PRs

Suggested labels: core, testing

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive The PR addresses the Bazel cutover and classification requirements [#4], but workflow and rollback-doc evidence is excluded and exact-head results remain pending. Review the excluded workflow and documentation files, then provide passing exact-head Test Suite and CI Gate results for the cutover SHA.
✅ Passed checks (3 passed)
Check name Status Explanation
Out of Scope Changes check ✅ Passed The reviewed changes support the linked issue by updating Bazel test aggregation, CI classification, and cutover validation.
Title check ✅ Passed The title clearly and concisely identifies the Bazel CI Gate cutover and retirement of PR Cargo sticky disks.
Description check ✅ Passed The description clearly explains the cutover, related issue, implementation details, and validation plan, with pending exact-head CI results explicitly noted.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch build/4-ci-gate-cutover

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

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/ci/test-ci-storage-policy.py`:
- Around line 409-426: Update validate_ci_gate_cutover to parse test.yml as YAML
and inspect jobs and steps semantically instead of relying on raw text searches.
Reject any rust-test job and sticky-disk step, identify the job containing the
bazelisk test //:ci_rust_tests command, and require the job named CI Gate to
depend on that job while preserving the existing retirement and required-check
assertions.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 137babaf-a501-47c7-a983-0bbf97d246a7

📥 Commits

Reviewing files that changed from the base of the PR and between bad99f9 and 38799d0.

⛔ Files ignored due to path filters (8)
  • .github/workflows/README.md is excluded by !**/*.md, !**/.github/**
  • .github/workflows/test.yml is excluded by !**/.github/**
  • docs/development/bazel-bootstrap.md is excluded by !**/*.md, !**/docs/**
  • docs/development/bazel-migration-cutover.md is excluded by !**/*.md, !**/docs/**
  • docs/development/bazel-migration-ledger.md is excluded by !**/*.md, !**/docs/**
  • docs/development/bazel-migration-parity.md is excluded by !**/*.md, !**/docs/**
  • docs/development/bazel-migration-perf.md is excluded by !**/*.md, !**/docs/**
  • docs/engineering/TESTING.md is excluded by !**/*.md, !**/docs/**
📒 Files selected for processing (4)
  • BUILD.bazel
  • scripts/ci/classify-changes.sh
  • scripts/ci/test-ci-storage-policy.py
  • scripts/ci/test-classify-changes.sh

Comment thread scripts/ci/test-ci-storage-policy.py
Hermetic Bazel compile needs the path-included modules in srcs so
//:ci_rust_tests can build the API integration suite after CI Gate cutover.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the core Core source code changes label Aug 7, 2026
DecisionNerd and others added 2 commits August 7, 2026 00:21
Strengthen #4 cutover checks so CI Gate must depend on the job that runs
//:ci_rust_tests, and retirement of rust-test / PR sticky disks is job-scoped.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@DecisionNerd
DecisionNerd merged commit 75a33e5 into main Aug 7, 2026
20 checks passed
@DecisionNerd
DecisionNerd deleted the build/4-ci-gate-cutover branch August 7, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-cd CI/CD configuration changes core Core source code changes documentation Improvements or additions to documentation release:none No release note or version impact tooling Developer tooling and automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bazel: cut over CI Gate, retain rollback, retire Cargo sticky disks

1 participant