8000 ci: add MSRV, public-API semver and dependency policy checks (#395) by adityamukho · Pull Request #418 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

ci: add MSRV, public-API semver and dependency policy checks (#395) - #418

Merged
adityamukho merged 1 commit into
mainfrom
ci/msrv-semver-deny-395
Sep 26, 2026
Merged

adityamukho merged 1 commit into
mainfrom
ci/msrv-semver-deny-395

Conversation

@adityamukho
Copy link
Copy Markdown
Collaborator

Closes #395

New Policy workflow (.github/workflows/policy.yml):

  • msrv — cargo check --all-features and cargo test --lib on Rust 1.89, with CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS=fallback so a new upstream release can't break the MSRV build by itself. Fails if rust-version in Cargo.toml no longer matches the tested toolchain.
  • semver-checks — cargo-semver-checks against the latest v* tag reachable from HEAD (currently v2.0.1). Hard gate on main. On PRs to major-version branches (v[0-9]*, e.g. v3) it runs with continue-on-error, so breaks are visible but allowed.
  • cargo-deny — deny.toml: permissive license allow-list (MIT, Apache-2.0, BSD, ISC, Zlib, Unicode-3.0, Unlicense, CC0), duplicate crate versions and wildcard requirements denied (exceptions go in skip with a reason), all crates from crates.io only. Covers native targets plus wasm32-unknown-unknown with all features. Advisories remain with cargo-audit / OSV-Scanner.

Local verification:

  • cargo +1.89 check --all-features ✅, cargo +1.89 test --lib ✅ (792 passed)
  • cargo semver-checks --baseline-rev v2.0.1 ✅ (223 pass, no semver update required)
  • cargo deny check bans licenses sources ✅ (no duplicates today)

🤖 Generated with Claude Code

https://claude.ai/code/session_01BedF9ZmqVZLkvDwn91fuKy

New Policy workflow:
- msrv: cargo check --all-features and cargo test --lib on Rust 1.89,
  with MSRV-aware dependency resolution; fails if Cargo.toml's
  rust-version drifts from the tested toolchain.
- semver-checks: cargo-semver-checks against the latest v* release tag.
  Hard gate on main; informational (continue-on-error) on PRs to
  major-version branches such as v3.
- cargo-deny: deny.toml allows only permissive licenses, denies
  duplicate crate versions and wildcard requirements, and requires
  every crate to come from crates.io. Advisories stay with cargo-audit
  and OSV-Scanner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BedF9ZmqVZLkvDwn91fuKy
@adityamukho adityamukho added this to the v2.0.2 milestone Sep 26, 2026
@adityamukho
adityamukho merged commit 0296caf into main Sep 26, 2026
19 checks passed
@adityamukho
adityamukho deleted the ci/msrv-semver-deny-395 branch September 26, 2026 13:22
@codecov
codecov Bot commented Sep 26, 2026
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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.

ci: add MSRV check, public-API semver check, and dependency policy check

1 participant

0