Skip to content

build(ci): pin Rust 1.99 and share Cargo acquisition policy - #4543

Merged
ScriptedAlchemy merged 31 commits into
masterfrom
build/rust-1.99-blaze-compat
Oct 27, 2026
Merged

ScriptedAlchemy merged 31 commits into
masterfrom
build/rust-1.99-blaze-compat

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Bazel now uses Rust 1.99.0 consistently for compilation and Cargo dependency queries. The generator runs with declared Cargo and rustc tools and shares a narrow Git acquisition policy with crate-universe. This removes its PATH/rustup selection and the runtime policy gap exposed by cold CI resolution.

Releases retain the fleet selected by their outer setup through prepared-build. Fleet enrollment and coordinator probing preserve the existing infrastructure fallback behavior. The native Git startup future is boxed at the Rust 1.99 layout failure. Production feature isolation is checked during the generator's existing locked resolution; Feature gates runs the parser and policy tests.

Validation:

  • 22 generator tests passed, including real declared-tool loading, acquisition policy parsing, and denial cases.
  • Cold generation and separate crate-universe resolution completed with depth-one Git fetches and an unchanged Cargo.lock. A fresh cold --check after merging current master confirmed all 60 generated BUILD files are current.
  • The release-refresh fixture passed all six cases through Bazel. Its explicit repository-gates caller retains the Node/pnpm provisioning it requires.
  • Independent source review and normal commit hooks completed. Current-head CI remains the hosted integration check.

The manual Blaze experiment remains uncommitted. No Blaze-edited CLI or edit speedup is established, and this PR does not enable a Blaze worker.

@changeset-bot

changeset-bot Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 547bbce

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy
ScriptedAlchemy force-pushed the build/rust-1.99-blaze-compat branch from bc2bd2b to d8e95ad Compare October 25, 2026 09:52

@devin-ai-integration devin-ai-integration Bot 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.

Note

Newer findings are available below. Devin Review posted a newer report on this PR, in addition to the findings presented here.

🔍 Devin Review: 1 flag

Not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

@ScriptedAlchemy ScriptedAlchemy changed the title build(ci): align Rust with Blaze and allow fleet fallback build(ci): pin Rust 1.99 and share Cargo acquisition policy Oct 25, 2026
devin-ai-integration[bot]

This comment was marked as resolved.

ScriptedAlchemy and others added 5 commits October 25, 2026 20:09
Clippy 1.99 denies large_futures on the four pending-stop wrappers.
Keep master's parallel job start and 4543's feature-gates body.
The hosted Windows workspace build exhausted its disk while linking test and benchmark binaries. fastbuild already uses debuginfo=0, but the Rust toolchain still declared a PDB for every executable and the MSVC fastbuild feature requested /DEBUG:FASTLINK. Bazel retained copies in its output tree and disk cache.

Set the toolchain strip mode coherently so the declared outputs match rustc, and disable the MSVC PDB feature in the Windows CI config. Keep debug builds, unoptimized CI compilation, all targets, and test assertions intact.

Failure evidence: https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40262687638/job/121378315631
The generic cargo_bootstrap helper kills native provisioning after 600 seconds. Two cold hosted runs progressed through unique upstream dependencies until the cutoff: the latest compiled aws-config at 05:21:51 and aws-smithy-http-client at 05:22:08, then was killed at 05:22:30. It never reached workspace compilation or tests.

Give the pinned optimized compiler build an explicit 30-minute budget within the existing 90-minute job. Keep the shared bootstrap artifacts, source checksum, locked dependency graph, and workspace test deadlines unchanged. This isolates the measured cold compiler cost from application test policy.

Failure evidence: https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40271873114/job/121406236336
ScriptedAlchemy and others added 7 commits October 25, 2026 22:40
Bazel 9.3.1 pins rules_cc 0.2.17. Its feature resolver rejects an unsupported feature that another enabled feature unconditionally implies; the MSVC fastbuild feature implies generate_pdb_file, so disabling only the latter causes an analysis error.

Disable the C toolchain fastbuild feature for both target and exec configurations. Preserve its /Od and /INCREMENTAL:NO settings explicitly, while omitting /Z7 and /DEBUG:FASTLINK. The Rust compilation mode and opt/debug/strip mappings, CRT selection, explicit dbg feature, and every CI target remain unchanged.

Verified against rules_cc 0.2.17 cc/private/toolchain_config/configure_features.bzl and cc/private/toolchain/windows_cc_toolchain_config.bzl, and Bazel 9.3.1 src/MODULE.tools and CppOptions.java. git diff --check passes; hosted Windows CI will validate the complete action graph.
The failing Windows job restored an 11,695,764,148-byte action-cache archive produced by master with full PDB generation, then exhausted D: with only 7 MB free. Its restore prefix does not include compiler or linker flags, so the new action keys would leave those obsolete CAS entries beside freshly built outputs.

Move only the Windows action cache to ci-windows-test-v2 with no fallback to the former prefix. Repository and dependency caches, every build/test target, and the existing cache save/verification policy remain intact.

Evidence: https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40262687638/job/121378315631 and https://github.com/ScriptedAlchemy/tracedecay/actions/runs/40226853333/job/121314025643. Workflow YAML parsing and semantic comparison confirm that only the Windows cache generation changes; git diff --check passes.
# Conflicts:
#	.github/actions/setup-bazel/action.yml
# Conflicts:
#	.bazelrc
#	.github/workflows/ci.yml
#	MODULE.bazel

@devin-ai-integration devin-ai-integration Bot 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.

Devin Review found 1 new potential issue.

⚠️ 1 issue in files not directly in the diff

⚠️ Automation stale-lock setting has no effect

Setting stale_lock_secs succeeds, but AutomationTaskLock::try_acquire ignores it for every task. Operators cannot use the accepted setting to change lock recovery.

1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

@ScriptedAlchemy
ScriptedAlchemy enabled auto-merge (squash) October 27, 2026 02:24
@ScriptedAlchemy
ScriptedAlchemy merged commit 5f8892c into master Oct 27, 2026
15 of 17 checks passed
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