docs(deps): defer sqlx 0.9 — version-coupled public API plus a 1.94 rustc floor over the 1.81 MSRV - #19
Merged
Conversation
…ustc floor over the 1.81 MSRV Assessment verdict for the dependency-currency follow-up filed by the tower-http/validator pass: sqlx stays at 0.8. Coupling, read from the source: impl From<sqlx::Error> for ApiError (src/error.rs:318-338) is the crate's only sqlx-gated surface and puts sqlx::Error in the public API for sqlx-feature users, so a hard 0.9 bump is a semver major for them (the 2.0.0 route). The widen instrument that saved tower-http is blocked here by MSRV: sqlx 0.9.0 declares rust-version 1.94.0 (registry + its own changelog), thirteen minors above this crate's 1.81 floor, so >=0.8,<0.10 would hand fresh-resolving 1.81-1.93 consumers an unbuildable match — the false-declared-MSRV class 2.1.0 corrected. Candidate 3.0 driver, or rides an MSRV raise to >=1.94. Recorded in ROADMAP.md's dependency watch (dated) and CHANGELOG [Unreleased], mirroring the validator 0.21 deferral. No code change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dependency-currency assessment for
sqlx 0.9.0(the follow-up filed by the tower-http/validator pass, PR #18): verdict DEFER at0.8, recorded inROADMAP.md's dependency watch (dated 2026-08-08) andCHANGELOG.md[Unreleased], mirroring the validator 0.21 deferral. Docs only — no code, noCargo.tomlchange, no new dependency.The assessment, each fact measured rather than inherited
sqlx::ErrorIS version-coupled into the public API forsqlx-feature users via#[cfg(feature = "sqlx")] impl From<sqlx::Error> for ApiErroratsrc/error.rs:318-338. That is the crate's ONLY sqlx-gated surface:grep -rn 'feature = "sqlx"' src/ tests/returns src/error.rs:318 plus four#[cfg]-gated unit tests in the same file, and thesrc/lib.rshits are doc prose; thepub uselist atsrc/lib.rs:119-133re-exports no sqlx type. A hard0.8 -> 0.9bump therefore changes whichsqlx::Errorthe impl accepts and is a semver major for feature users — the exact route that made 2.0.0 a major.sqlx 0.9.0rust_version: "1.94.0"(0.9.0-alpha.1was already 1.86.0), and sqlx's own 0.9.0 changelog names 1.94.0 as the release cycle's supported floor. That is thirteen minors above this crate's declaredrust-version = "1.81". A widened>=0.8, <0.10range would hand any fresh-resolving 1.81-1.93 consumer a resolver match on 0.9.0 followed by a compile failure — precisely the false-declared-MSRV failure class (2.0.0 declared 1.75 over an effective 1.81 floor) that the v2.1.0 cut corrected at the registry.Errorvariants the impl matches (the error-adjacent entry, Feature: Add exclusion violation error kind transact-rs/sqlx#3918, is an additive exclusion-violation kind).Adding sqlx v0.8.6 (available: v0.9.0)reproduced verbatim by this run's owncargo generate-lockfile; registrynewest_version=max_stable_version= 0.9.0 (created 2026-05-21). The item'smatchitabsence claim re-verified: not in[dependencies], axum's transitive — nothing to assess.No guard added, deliberately: this is a dated assessment record (the PR #18 validator-deferral shape), not a live claim two artifacts can drift on. The
Semver compatibilityjob is cited per the item's close condition only in its trivial form — no change was attempted, and the job runs green on this PR against published 2.1.0.Verification (tier 2, ci.yml-pinned recipes — L-010, lines 33/36/39/42 plus the audit job)
cargo fmt --checkexit 0cargo clippy --all-targets --all-features -- -D warningscleancargo test83 passed, 0 failed (byte-equal to theorigin/mainbaseline; the 6 roadmap-truth guards pass on the edited ROADMAP/CHANGELOG — the- Unreleased on mainbullet still exists exactly while[Unreleased]has entries)cargo test --all-features231 passed, 0 failed (byte-equal to baseline)cargo audit --deny warningsexit 0 over 135 crate dependencies (fresh resolution; count unchanged — no dependency was added or moved)2 files changed, 10 insertions(+), zero deletions — one ROADMAP bullet, one CHANGELOG entry.Lessons applied: L-040 (handed facts re-derived: sqlx 0.9.0
rust_version: "1.94.0"read from the crates.io API and the availability line reproduced by this run's owncargo generate-lockfile), L-026 (coupling read from source, absence claims exhaustively searched:grep -rn 'feature = "sqlx"' src/ tests/-> src/error.rs only; nopub use sqlxat src/lib.rs:119-133; no matchit in[dependencies]), L-010 (gates from .github/workflows/ci.yml lines 33/36/39/42 plus the audit job'scargo audit --deny warnings), L-018 (original branchmainrecorded; branchedautodev/akk-sqlx-0-9-assessmentfrom origin/main at d282e5d), L-024 (explicitcd d:/Projects/cargo_crates/axum-api-kit &&withgit rev-parse --show-toplevelprinted on every git/gh command).🤖 Generated with Claude Code