ci: make Cargo with nextest the CI Gate Rust lane and retire the Bazel jobs - #1649
Conversation
…l jobs Replace the bazel-bootstrap and bazel-diagnostics jobs in the Test Suite with a Rust Tests job: cargo nextest over the workspace, then the bdd and disabled_allocations custom-harness targets and the doctests under cargo test, on the dev/test profile with a shared toolchain-keyed target/ sticky disk. The lifecycle producer now runs against a Cargo-built gf. Rename the classifier's bazel output to rust_tests, keep every Rust test data path that set it, and stop routing Bazel build descriptions to any CI Gate lane. The storage policy now asserts the Cargo lane, its sticky volume, the CI Gate wiring, and that dev/test keep runtime checks on. Closes #1644 Part of #1618 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: CurateLabs/graphforge/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Closes #1644
Part of #1618
Implements ADR 0048 decision items 1–3 and 5 for the PR gate.
What changed
.github/workflows/test.yml: replacesbazel-bootstrapwithrust-tests(Rust Tests) onblacksmith-4vcpu-ubuntu-2404:target/sticky disk, keyed by the toolchain (…-rust-tests-rust-1.96.0-target-v1), plus the usual registry cache;cargo-nextest@0.9.145, installed through the repo's existingtaiki-e/install-actionSHA; Rust 1.96.0;CARGO_INCREMENTAL=0and dev/testdebug=0, on the dev/test profile, so debug assertions and overflow checks stay on;cargo nextest run --workspace --locked --no-fail-fast, excluding the two custom-harness binaries. It then runscargo test --workspace --locked --test bdd --test disabled_allocationsandcargo test --workspace --locked --doc. The follow-up steps run even when nextest fails, so one run reports every failure. All three go throughscripts/test_environment.py --.cargo build --locked -p graphforge-cli --bin gf→target/debug/gf.bazel-diagnosticsjob.ci-gateneedsrust-tests, andrequire-gates.shreceives its result.scripts/ci/classify-changes.sh: thebazeloutput is renamed torust_tests. Every Rust test-data path that set it still does: TCK, release workflows, reference docs, contract examples, crate goldens/snaps/fixtures/corpus, and agent-grounding. Bazel build descriptions no longer route to any CI Gate lane. Bazel scripts and docs fall through to the ordinary Python and docs rules. Unknown paths stillenable_all.scripts/ci/test-classify-changes.sh: fixtures updated. It adds docs-only fixtures that expectrust_tests=false, and it checks thattest.ymlconsumesrust_testsand neveroutputs.bazel.scripts/ci/test-ci-storage-policy.py: the Bazel-authority checks are replaced with Rust Tests lane checks:bazelor runsbazelisk;rust-testsmay mount a sticky disk, and only its key attarget;--release/--profile;needsequals therequire-gates.sharguments;[profile.dev]/[profile.test]inCargo.tomlkeep debug assertions and overflow checks.It drops the
.bazelrcand Makefile assertions, which build: remove Bazel build descriptions, tooling, and docs (#1618) #1646 would otherwise trip on..github/workflows/README.md: rewritten for the Cargo lane.config/gate-registry.jsonneeds no change:test-suite→github-status/CI Gate,exact_head. Ruleset 19988544 still requires onlyCI Gate, so the job display name is free to change.Binding packaging smoke
//:binding_cdylibs //:python_wheel_smoke //:node_package_smokeproved that Bazel-built cdylibs could be assembled into a wheel and an npm zip byassemble_bazel_binding_packages.py, without maturin or napi. That is the Bazel→Binding RC handoff, and it has no meaning without Bazel. The existingPython BindingandNode Bindingjobs already cover the Cargo path. They run on everyrustorbindingschange. They build the same-SHA wheel (maturin) and addon (napi), install them, and run the smoke, lifecycle, consumer, and notebook suites. No replacement step was added.Local verification
bash scripts/ci/test-classify-changes.sh: passedbash scripts/ci/test-require-gates.sh: passedmake gate-registry-check: 14 tests OKpython3 scripts/ci/test-ci-storage-policy.py: passedpython3 scripts/ci/workflow_policy.py: exit 0scripts/check-workflows.sh(actionlint 1.7.12): exit 0make pre-push-fast: passedcargo nextest list -p graphforge-observability -E '<the lane filter>'with nextest 0.9.145 parses the filter and lists the unit tests withoutdisabled_allocations.test.ymlwere each rejected by the storage policy (CI Gate need removed, require-gates arg removed,--releaseadded, retired sticky key, gating onrustinstead ofrust_tests, job renamed tobazel-bootstrap). Making*.mdsetrust_testswas rejected by the classifier test.Docs-only acceptance criterion: the evidence is the classifier fixtures (
docs/a file with spaces.md,docs/book/architecture/ast-and-planning.md,README.md→ every output false, sorust-testsis skipped andrequire-gates.shacceptsskipped).🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.