Skip to content

Add MSRV testing to CI and Justfile for dev tasks#113

Merged
kwsantiago merged 5 commits intomainfrom
MSRV-and-Justfile
Jan 16, 2026
Merged

Add MSRV testing to CI and Justfile for dev tasks#113
kwsantiago merged 5 commits intomainfrom
MSRV-and-Justfile

Conversation

@wksantiago
Copy link
Contributor

@wksantiago wksantiago commented Jan 12, 2026

  • Add rust-version = 1.81 to workspace Cargo.toml
  • Update CI with MSRV/stable/nightly matrix
  • Add Justfile with common dev recipes
  • Document in README

Summary by CodeRabbit

  • Chores

    • Restructured CI into separate fmt, lint, build, and test jobs and added MSRV-aware automation tasks for local workflows.
    • Pinned and aligned storage-related dependencies to workspace/MSRV constraints.
  • Documentation

    • Updated MSRV to 1.83 and refreshed developer setup, build and task automation guidance.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 12, 2026

Warning

Rate limit exceeded

@kwsantiago has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 10 minutes and 4 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between a225b50 and fe84173.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • .github/workflows/ci.yml
  • Cargo.toml
  • Justfile
  • README.md
  • keep-core/Cargo.toml
  • keep-enclave/host/Cargo.toml

Walkthrough

Bumps workspace MSRV to 1.83, converts several crates to workspace-pinned dependencies, restructures CI into separate fmt/clippy/build/test jobs, adds a Justfile with developer tasks, and updates README to reflect MSRV and new dev workflow.

Changes

Cohort / File(s) Summary
CI Workflow Restructuring
​.github/workflows/ci.yml
Replace single build job with four jobs: fmt (rustfmt on stable), clippy (stable clippy, -D warnings), build (release build), and test (matrix: 1.83.0, stable, nightly, continues-on-error for nightly). Add CARGO_TERM_COLOR: always. Remove draft-PR guard.
Workspace / Manifest updates
Cargo.toml, keep-core/Cargo.toml, keep-enclave/host/Cargo.toml
Set workspace rust-version = "1.83". Add workspace dependency pins for redb (converted to redb.workspace = true) and add workspace pins for base64ct, blake3, constant_time_eq (notes about MSRV/edition). Adjust keep-core package rust-version from 1.81→1.83.
Developer tooling / Tasks
Justfile
Add Justfile with targets: build, test, lint (fmt check + clippy), fmt, doc, bench, fuzz, ci, msrv-check; set msrv = "1.83".
Documentation
README.md
Update MSRV in README to 1.83, add MSRV Policy section, replace build instructions with Dev setup using just tasks, and include debug-logging example.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I hopped through Cargo, set MSRV to one-eight-three,
I split CI jobs so each can run free,
Justfile whispers tasks with a tap and a hop,
README now guides the new dev desktop,
A little rabbit celebrates—cheer, clap, and tea! 🥕✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: adding MSRV testing to CI and introducing a Justfile for development tasks, which aligns with the primary modifications across the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@wksantiago wksantiago requested a review from kwsantiago January 12, 2026 21:14
@wksantiago wksantiago self-assigned this Jan 12, 2026
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
README.md (1)

401-416: Consider mentioning just --list for discoverability.

The documented tasks cover the essentials, but the Justfile also includes bench, fuzz, and msrv-check. A note about just --list would help developers discover all available tasks.

📝 Suggested addition
 just ci       # Run full CI checks locally

+Run just --list to see all available tasks.

</details>

</blockquote></details>
<details>
<summary>Justfile (1)</summary><blockquote>

`14-16`: **Consider adding `--all-targets` to clippy.**

This would also lint tests, examples, and benches, catching more issues during local development.



<details>
<summary>📝 Suggested improvement</summary>

```diff
 lint:
     cargo fmt -- --check
-    cargo clippy -- -D warnings
+    cargo clippy --all-targets -- -D warnings
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e9b5abd and c51ed0a.

📒 Files selected for processing (4)
  • .github/workflows/ci.yml
  • Cargo.toml
  • Justfile
  • README.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test (nightly)
  • GitHub Check: test (stable)
  • GitHub Check: build
🔇 Additional comments (13)
Cargo.toml (1)

21-21: LGTM!

The MSRV declaration is correctly placed under [workspace.package] and is consistent with the CI matrix (1.81.0), Justfile (msrv := "1.81"), and README documentation.

README.md (3)

28-28: LGTM!

MSRV requirement is clearly stated and consistent with Cargo.toml and CI configuration.


418-422: LGTM!

Clear and practical debug logging example.


424-427: LGTM!

Clear MSRV policy with appropriate breaking-change communication commitment.

Justfile (4)

1-6: LGTM!

Shell configuration with -uc flags (errexit undefined variable checking + pipefail) and the default task for discoverability are good practices.


32-33: LGTM!

Good use of --all-targets for comprehensive MSRV checking. Note that this requires the 1.81 toolchain to be installed (rustup toolchain install 1.81).


8-12: LGTM!

Standard build and test targets.


27-30: LGTM!

The fuzz target correctly uses nightly toolchain. The ci aggregation has a sensible order: lint catches formatting/style issues first, then tests verify correctness, and finally build confirms release compilation.

.github/workflows/ci.yml (5)

9-10: LGTM!

CARGO_TERM_COLOR: always ensures readable colored output in CI logs.


13-20: LGTM!

The fmt job is correctly minimal—no build dependencies needed for formatting checks.


22-30: LGTM!

Clippy job correctly uses -D warnings to fail on warnings. Consistent with the Justfile lint target.


32-38: LGTM!

Standard release build job with required system dependencies.


40-53: LGTM!

Well-structured test matrix:

  • MSRV (1.81.0) matches Cargo.toml and Justfile
  • fail-fast: false ensures all toolchains are tested
  • continue-on-error for nightly prevents unstable compiler issues from blocking merges
  • Using @master with explicit toolchain parameter is the correct pattern for dynamic toolchain selection

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
keep-core/Cargo.toml (1)

25-25: Consider adding a comment for consistency.

The other workspace pins (lines 11-13) have # Pin for MSRV compatibility comments. Adding a similar comment here would maintain consistency and clarify why redb is workspace-managed.

Suggested change
-redb.workspace = true
+redb.workspace = true  # Pin for MSRV compatibility
.github/workflows/ci.yml (3)

30-30: Consider adding --all-targets to also lint tests and examples.

The current command only lints the library/binary targets. Adding --all-targets ensures clippy also checks test code, examples, and benchmarks for issues.

♻️ Suggested improvement
-      - run: cargo clippy -- -D warnings
+      - run: cargo clippy --all-targets -- -D warnings

32-53: Consider adding Rust caching to speed up CI.

Rust builds can be slow without caching. Adding Swatinem/rust-cache before the build/test steps can significantly reduce CI times, especially for the test matrix which runs three separate builds.

♻️ Suggested improvement for build job
       - uses: dtolnay/rust-toolchain@stable
+      - uses: Swatinem/rust-cache@v2
       - run: cargo build --release
♻️ Suggested improvement for test job
       - uses: dtolnay/rust-toolchain@master
         with:
           toolchain: ${{ matrix.rust }}
+      - uses: Swatinem/rust-cache@v2
       - run: cargo test

22-53: Consider adding job dependencies to fail fast on lint errors.

Currently all jobs run in parallel. Adding needs: [fmt, clippy] to build and test jobs would prevent running expensive builds when formatting or linting fails, saving CI minutes.

♻️ Suggested improvement
   build:
     runs-on: ubuntu-latest
+    needs: [fmt, clippy]
     steps:
       ...
 
   test:
     runs-on: ubuntu-latest
+    needs: [fmt, clippy]
     strategy:
       ...
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c51ed0a and a225b50.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • Cargo.toml
  • Justfile
  • keep-core/Cargo.toml
  • keep-enclave/host/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (2)
  • Cargo.toml
  • Justfile
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test (nightly)
  • GitHub Check: build
  • GitHub Check: test (stable)
🔇 Additional comments (7)
keep-enclave/host/Cargo.toml (1)

32-32: LGTM!

Moving redb to a workspace-managed dependency ensures consistent versioning across the workspace and aligns with the MSRV compatibility strategy. This is a clean change.

keep-core/Cargo.toml (2)

5-5: LGTM!

MSRV bump to 1.83 aligns with the PR objectives and ensures compatibility with the edition 2024-related dependencies.


11-13: LGTM!

The workspace pins for base64ct, blake3, and constant_time_eq with inline comments explaining the MSRV compatibility reasoning is good practice. This makes it clear to future maintainers why these are pinned at the workspace level.

.github/workflows/ci.yml (4)

9-11: LGTM!

Good addition for improved CI log readability.


13-20: LGTM!

Clean separation of the fmt job. Correctly omits system dependencies since formatting doesn't require compilation.


32-38: LGTM!

Release build verification with stable is appropriate. The test matrix covers build compatibility for MSRV and nightly.


40-53: Test matrix looks good!

The matrix correctly covers MSRV (1.83.0), stable, and nightly. Using fail-fast: false and continue-on-error for nightly follows best practices for Rust CI.

@kwsantiago kwsantiago merged commit 4185907 into main Jan 16, 2026
8 checks passed
@kwsantiago kwsantiago deleted the MSRV-and-Justfile branch January 16, 2026 20:53
@coderabbitai coderabbitai bot mentioned this pull request Feb 8, 2026
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.

Add Justfile for common development tasks Add MSRV testing to CI matrix

2 participants