Skip to content

ci: pin the Rust toolchain to 1.99.0 - #468

Merged
tobyhede merged 1 commit into
mainfrom
ci/pin-rust-toolchain
Oct 15, 2026
Merged

tobyhede merged 1 commit into
mainfrom
ci/pin-rust-toolchain

Conversation

@tobyhede

Copy link
Copy Markdown
Contributor

Problem

CI installed the floating stable toolchain (rustup toolchain install stable in setup-test). When Rust 1.99.0 was released, its clippy began failing every Test job with -D warnings. This is unrelated to whatever PR is under test; for example, #466 changes only Cargo.lock.

  • clippy::double_must_use fires on code generated by #[async_trait] (proxy/mod.rs:150)
  • clippy::useless_conversion fires in zerokms.rs:362

rust-toolchain.toml existed locally but was gitignored, so CI never saw a pin.

Changes

  • Commit rust-toolchain.toml pinning 1.99.0 (clippy + rustfmt, minimal profile) and remove it from .gitignore
  • setup-test and the mise build task install the pinned toolchain instead of stable, so release binaries use the same version
  • Bump async-trait 0.1.88 → 0.1.92 ("Resolve double_must_use clippy lint in generated code")
  • Remove the redundant .into_iter()

Toolchain upgrades now happen deliberately by editing rust-toolchain.toml.

Validation (local, 1.99.0)

  • cargo fmt --all -- --check passes
  • cargo clippy --all --no-deps --all-targets --all-features -- -D warnings passes
  • cargo test -p cipherstash-proxy --lib -- --test-threads=1: 250 passed

Some config::tandem tests are flaky when run in parallel locally, apparently from shared env vars. The same happens on main with 1.92, so this PR doesn't cause it.

Note for local checkouts

If you have an untracked rust-toolchain.toml, delete it before pulling.

CI installed the floating `stable` toolchain, so the Rust 1.99.0 release
broke every Test job with new clippy lints unrelated to the PR under test.

- Commit rust-toolchain.toml (previously gitignored) pinning 1.99.0 with
  clippy and rustfmt
- Install the pinned toolchain in setup-test and the mise build task
  instead of `stable`
- Bump async-trait to 0.1.92, which fixes `double_must_use` in its
  generated code
- Drop a redundant `.into_iter()` flagged by `useless_conversion`
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T01:19:32.446313Z ae7689f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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

This change is correct and small. A committed pin is the correct fix for the CI failures that come from the floating stable toolchain. All six checks pass. I found no blocking problems.

What I checked:

  • rust-toolchain.toml is in effect for both CI paths. setup-test and the mise build task now run rustup toolchain install with no argument, so rustup reads the pin and its profile.
  • The bump to async-trait 0.1.92 does not add a new major version of syn to the build. syn 3.0.3 is already in main's Cargo.lock through pg-proto-fsm, ref-cast-impl and tokio-macros.
  • The .into_iter() removal in zerokms.rs does not change behaviour.
  • A CHANGELOG entry is not necessary, because users do not see this change.

Non-blocking suggestions:

  1. Check the release build path. release.yml runs mise run build on ubuntu-latest, and the test checks do not run it. rustup toolchain install without a toolchain name needs rustup 1.28 or later. Runner images have this today, but a release dry run (or a manual run of the build job) would show that the release binaries use 1.99.0 before the next tag.
  2. Tell developers in DEVELOPMENT.md. The PR description says that an untracked rust-toolchain.toml blocks git pull. This note will not be easy to find after the merge. A short line in DEVELOPMENT.md (the toolchain is pinned, edit rust-toolchain.toml to upgrade) keeps it with the other setup procedures.
  3. Plan the upgrades. The pin stops unplanned failures, but nothing will tell us when 1.99.0 is old. A dependency bot that updates rust-toolchain.toml, or a recurring reminder, would keep upgrades planned and regular.

@freshtonic
freshtonic self-requested a review October 15, 2026 01:21
@tobyhede
tobyhede merged commit 485fe46 into main Oct 15, 2026
6 checks passed
@tobyhede
tobyhede deleted the ci/pin-rust-toolchain branch October 15, 2026 01:22
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.

2 participants