ci: pin the toolchain to 1.98.0 and record the tree's two floors #2
No reviewers
Labels
No labels
waiting-on-julian
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jlxq0/hevy-mcp!2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ci/pin-toolchain-and-record-lint-floor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
clippy::unused_async_trait_impl, new in clippy 1.98, fires on methods#[tool_handler]generates insrc/mcp.rs. Nothing written here can be changedto satisfy it, so it takes an
#[allow]with the reason on it. matrix-mcp hitthe same lint from the same macro; this follows what
jlxq0/matrix-mcp#112settled on.
Why the toolchain gets pinned in the same change
An
#[allow]naming a lint the running clippy does not have is itself an errorunder
-D warnings. So the suppression creates a floor, and withtoolchain: stableCI is permanently on the new side of a floor nobody wrotedown — the next clippy release reds an untouched repository and the version
below which nobody can lint is discovered by someone hitting it.
ci.ymlnownames
1.98.0.Measured
All four installed toolchains,
cargo clippy --all-targets --all-features --locked -- -D warnings, counting distinct sites rather than cargo'sper-target repeats:
The tree used to lint on 1.96 and 1.97 only, and was red on both sides of that
window. It now lints on 1.98 and later. After, 1.93.0's two are the unknown
lint plus a
missing_const_for_fnatsrc/hevy_client.rs:435that only 1.93'sclippy fires.
cargo +1.93.0 check --all-features --lockedpasses, so the build floor isunmoved: 1.93 builds, 1.98 lints, and those are two different numbers. The
rust:1.93-bookwormbuilder in the Dockerfile makes the first one a gate ratherthan a comment.
The two removed allows
Both
duration_suboptimal_unitssuppressions are gone because the stated reasonwas false.
src/session.rssaidDuration::from_minswas "unstable on our MSRV(Rust 1.93)". Probed directly on a throwaway crate, in const context:
from_minsfrom_hoursfrom_daysE0658: duration_constructorsE0658Only
from_daysis still unstable. Clippy's advice compiled all along, soSESSION_KEEP_ALIVEisDuration::from_mins(30)and therate_limittest'sDuration::from_secs(60)isfrom_mins(1). Values unchanged: 1800s and 60s.The second allow turned out to be suppressing that single test line on 1.96 and
1.97 and nothing at all on 1.98.
That leaves exactly one attribute setting the lint floor instead of three, and
the one that remains cannot be removed without bumping rmcp.
Verification
cargo fmt --all --checkcleancargo clippyon 1.93.0 / 1.96.0 / 1.97.1 / 1.98.0 — the table abovecargo +1.93.0 check --all-features --lockedpassescargo test --all-features --locked— 44 passed, 0 failedcargo deny check bans licenses sources— okcargo auditstill fails: RUSTSEC-2026-0258,h20.4.15. That is aseparate change and this branch does not carry it, so this PR's CI will be red
on its audit step. Merging this first is deliberate — until the toolchain is
pinned, every other pull request is red on clippy for a reason that has
nothing to do with its own diff.
The
#[allow]is load-bearing rather than decorative: removing it is the"before" column's 1.98.0 row, one error.
CI is red as predicted, and it is the audit step.
CI / cargo (pull_request)failed,CI / docker (pull_request)passed. Job logs are not retrievable on this instance —runs/10/jobs/0/logs404s over both the API and the web path — so this is reproduction rather than log-reading. Ran the job's five steps locally in the workflow's own order, on the toolchain the workflow now pins and with itsRUSTFLAGS: -Dwarnings:error: 1 vulnerability found!— RUSTSEC-2026-0258,h20.4.15. The two steps this PR is about both pass, and the step that fails is the one the next PR fixes.Merging red on purpose. A reviewer arriving cold sees a red tick, so: the red is a gate this branch deliberately does not carry, stated before the run rather than explained after it. Until the toolchain is pinned, every other pull request in this repo is red on clippy for a reason that has nothing to do with its own diff, which is why this one goes first.