diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c08767e..9359f3d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,3 +34,19 @@ jobs: # and pinning those to the oldest supported toolchain is not useful. - uses: dtolnay/rust-toolchain@1.88.0 - run: cargo test + + stable: + name: Latest stable (advisory) + runs-on: ubuntu-latest + # Advisory only. The pinned `test` job is the gate; this one exists so + # that a new stable release breaking the build or firing a new clippy + # lint is visible before the pin moves, without failing a pull request + # that did not cause it. Check it when bumping `devVersion`. + continue-on-error: true + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + - run: cargo test + - run: cargo clippy --all-targets -- -D warnings diff --git a/CHANGELOG.md b/CHANGELOG.md index bf8b4b9..4597efc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - A declared minimum supported Rust version of **1.88**, verified by running the test suite against it. The floor comes from the dependency graph (`reqwest` → `url` → `idna` → `icu_*`), not from this crate's own code. - CI builds on both the MSRV and the pinned dev toolchain. + CI builds on both the MSRV and the pinned dev toolchain, plus an advisory + job on latest stable that reports breakage from a new Rust release + without gating pull requests. - Wrappers for every one of the API's 34 `Route::resource` groups, plus `users` — 265 methods. See `COVERAGE.md` for the per-endpoint inventory. - `COVERAGE.md`, a detailed record of what is wrapped, what is not, and why, diff --git a/CLAUDE.md b/CLAUDE.md index 03bdb09..d20be02 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,6 +23,13 @@ Two versions are pinned, and **three places must agree** when either moves: | Dev toolchain | 1.99.1 | `devVersion` in `flake.nix`, `test` job in `ci.yml` | | MSRV | 1.88 | `msrvVersion` in `flake.nix`, `rust-version` in `Cargo.toml`, `msrv` job in `ci.yml` | +CI has a third job, `stable`, which tracks latest stable and is marked +`continue-on-error`. It is **advisory, not a gate**: it exists so a new +Rust release that breaks the build or fires a new clippy lint shows up +before the pin moves, without failing a pull request that did not cause it. +Check it when bumping `devVersion` — if it is red, the bump needs work +first. Nothing needs to stay in sync with it. + The MSRV is set by the **dependency graph**, not by this crate's code: `reqwest` pulls in `url` → `idna` → `idna_adapter` → `icu_*`, and the `icu` crates require 1.88. Recheck the floor after a dependency bump with: