Skip to content

ci: add Rust MSRV build and latest-stable lint checks - #470

Merged
tobyhede merged 2 commits into
mainfrom
claude/project-thread-v9m494
Oct 15, 2026
Merged

tobyhede merged 2 commits into
mainfrom
claude/project-thread-v9m494

Conversation

@tobyhede

@tobyhede tobyhede commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Toby · project thread

Resolves CIP-4954. Stacked on #468, which pins the full matrix and release builds to Rust 1.99.0.

Before: CI ran only one toolchain. Nothing recorded the oldest compiler that can build Proxy, so a dependency or code change could raise it without anyone noticing. Rust 1.88 already fails, in stack-profile (File::lock), and no manifest declares that. With #468's pin, nothing would warn us when a new stable release breaks the build.

After: CI uses three toolchains.

Toolchain Declared in Job
Pinned 1.99.0 rust-toolchain.toml (#468) Full PostgreSQL test matrix, burn-in, release binaries (unchanged)
Latest stable stable channel Lint (Rust stable): fmt + Clippy -D warnings
MSRV 1.89.0 rust-version in Cargo.toml Build (Rust MSRV): cargo build --locked --release --package cipherstash-proxy

The two new jobs need no PostgreSQL services or secrets, and neither expands the matrix.

How

  • The workspace declares rust-version = "1.89.0" under [workspace.package], and every package inherits it.
  • The MSRV job reads that value from the root Cargo.toml. It doesn't use cargo metadata for this step because cargo would need the pinned toolchain installed first. It installs the MSRV toolchain, then checks that cargo metadata reports the same rust_version for cipherstash-proxy before building. In both new jobs, RUSTUP_TOOLCHAIN overrides rust-toolchain.toml.
  • DEVELOPMENT.md gets a new "Supported Rust versions" section. It covers the three toolchains, how to run the checks locally, bumping the pin when the stable lint fails, and the steps for a deliberate MSRV increase (Cargo.toml, docs, changelog).
  • CHANGELOG.md gets an [Unreleased] entry.

Validation (Linux x86_64)

  • cargo +1.89.0 build --locked --release --package cipherstash-proxy passes with ci: pin the Rust toolchain to 1.99.0 #468's lockfile, and the binary reports cipherstash-proxy 3.0.1.
  • On 1.99.0, cargo fmt --all -- --check and cargo clippy --all --no-deps --all-targets --all-features -- -D warnings pass, with the incompatible_msrv lint active.

After merge

Add Build (Rust MSRV) to the required status checks. I suggest leaving Lint (Rust stable) non-required, since it exists to give early warning.

Acknowledgment

By submitting this pull request, I confirm that CipherStash can use, modify, copy, and redistribute this contribution, under the terms of CipherStash's choice.

https://claude.ai/code/session_01PeBRsmwf2siZczh49FAPfe

@tobyhede tobyhede self-assigned this Oct 15, 2026
Declare rust-version = "1.89.0" in the workspace and inherit it in every
package. Next to the full test matrix on the pinned toolchain from
rust-toolchain.toml, add two quick checks that need no PostgreSQL or
credentials:

- Quick check (Rust MSRV) reads rust-version from Cargo.toml and builds
  the production binary on it with the committed lockfile.
- Quick check (Rust stable) runs fmt and Clippy on the latest stable
  release, to flag breakage before the pin is bumped.

Document the three toolchains and how to bump the pin or the MSRV in
DEVELOPMENT.md.

Refs CIP-4954

Claude-Session: https://claude.ai/code/session_01PeBRsmwf2siZczh49FAPfe
@tobyhede
tobyhede force-pushed the claude/project-thread-v9m494 branch from f450538 to 2811b74 Compare October 15, 2026 00:57
@tobyhede tobyhede changed the title ci: build on Rust 1.89 MSRV and test on explicit stable ci: add Rust MSRV and latest-stable quick checks Oct 15, 2026
@tobyhede
tobyhede changed the base branch from main to ci/pin-rust-toolchain October 15, 2026 00:57
@tobyhede
tobyhede requested a review from freshtonic October 15, 2026 00:59
@tobyhede
tobyhede marked this pull request as ready for review October 15, 2026 00:59
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 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-15T01:02:40.057003Z 2811b74 Draft marked ready
ℹ️ 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.

Comment thread .github/workflows/test.yml Outdated
@tobyhede tobyhede changed the title ci: add Rust MSRV and latest-stable quick checks ci: add Rust MSRV build and latest-stable lint checks Oct 15, 2026

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

Nice

Base automatically changed from ci/pin-rust-toolchain to main October 15, 2026 01:22
@tobyhede
tobyhede merged commit 612d09e into main Oct 15, 2026
7 checks passed
@tobyhede
tobyhede deleted the claude/project-thread-v9m494 branch October 15, 2026 01:23
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.

3 participants