You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #505 (policy: activate Clippy 1.94/1.95 ratchets) is the long-standing draft that promotes 8 planned Clippy lints to active in [workspace.lints.clippy]. The workspace MSRV is now 1.95 (v0.7.0), so the 1.94 and 1.95 ratchets are eligible. #505 is intentionally PARKED until v0.7.0 publishes; this issue tracks the prerequisites, merge plan, and acceptance criteria so the flip is clean once unblocked.
After merge, verify on main that cargo xtask check-lint-policy reports the 8 lints as active in [[active_clippy]] (not [[planned]]).
Risks
Adapter crates (uselesskey-jsonwebtoken, uselesskey-rustls, uselesskey-ring, uselesskey-rustcrypto, uselesskey-aws-lc-rs, uselesskey-tonic) may touch the same lint surfaces (raw-parts, casts, durations) and could trip the new lints in code that was clean on 2026-05-08 but has since changed.
Rust toolchain drift: a new stable Rust release between now and merge could surface additional findings under the activated lints (especially needless_type_cast and duration_suboptimal_units).
cargo xtask check-lint-policy reports 8 lints as active (with disallowed_fields and manual_pop_if remaining tracked separately).
No CI regressions on main post-merge.
Workspace [workspace.lints.clippy] block reflects the activated entries; policy/clippy-lints.toml[[planned]] reduced accordingly.
Not in scope
This is the tracking issue and plan. The actual lint flip happens in PR #505 once unblocked; this issue does not modify any source files. disallowed_fields (HELD) and manual_pop_if (DEFERRED to MSRV 1.96) remain out of scope for #505 and this issue.
Summary
PR #505 (
policy: activate Clippy 1.94/1.95 ratchets) is the long-standing draft that promotes 8 planned Clippy lints to active in[workspace.lints.clippy]. The workspace MSRV is now 1.95 (v0.7.0), so the 1.94 and 1.95 ratchets are eligible. #505 is intentionally PARKED until v0.7.0 publishes; this issue tracks the prerequisites, merge plan, and acceptance criteria so the flip is clean once unblocked.PR reference
policy: activate Clippy 1.94/1.95 ratchets(draft, 8 lints to activate, +53/-50)40405a4(2026-05-08) — predates the publish-recovery lane below.policy/clippy-rust-1.95-ratchets→main.Lints to activate
Sourced from
policy/clippy-lints.toml[[planned]]entries.clippy::same_length_and_capacityclippy::manual_ilog2clippy::decimal_bitwise_operandsclippy::needless_type_castclippy::manual_checked_opsclippy::manual_takeclippy::duration_suboptimal_unitsclippy::unnecessary_trailing_commaclippy::disallowed_fieldsclippy::manual_pop_if#505 also fixes resulting
duration_suboptimal_unitswarnings by replacingDuration::from_secs(N*3600/86400)withfrom_hours/from_mins.Prerequisites
mainCI green post-publish (publish-recovery lane xtask: fix PUBLISH_CRATES order so compat shims publish after their owners #565/ci: migrate release publish to shipper #566/ci: gitignore .shipper/ and pass --allow-dirty to shipper preflight #567/ci: pass --allow-dirty to shipper publish/resume too #568/fix: make internal test-helper deps path-only in workspace.dependencies #569/ci: revert publish workflow to cargo xtask publish (shipper#173 blocker) #570 already merged).main(last commit 2026-05-08 predates xtask: fix PUBLISH_CRATES order so compat shims publish after their owners #565/ci: migrate release publish to shipper #566/ci: gitignore .shipper/ and pass --allow-dirty to shipper preflight #567/ci: pass --allow-dirty to shipper publish/resume too #568/fix: make internal test-helper deps path-only in workspace.dependencies #569/ci: revert publish workflow to cargo xtask publish (shipper#173 blocker) #570 merged on 2026-05-11; rebase definitely required).cargo clippy --workspace --all-targets --all-features --locked -- -D warningsre-runs clean on the rebased PR.cargo xtask check-lint-policypasses on the rebased PR.Merge plan
mainCI is green.main. Resolve any conflicts inCargo.toml([workspace.lints.clippy]) andpolicy/clippy-lints.toml.rtk cargo xtask gate --checklocally and re-confirmrtk cargo clippy --workspace --all-targets --all-features --locked -- -D warnings.prworkflow run is green.mainthatcargo xtask check-lint-policyreports the 8 lints as active in[[active_clippy]](not[[planned]]).Risks
uselesskey-jsonwebtoken,uselesskey-rustls,uselesskey-ring,uselesskey-rustcrypto,uselesskey-aws-lc-rs,uselesskey-tonic) may touch the same lint surfaces (raw-parts, casts, durations) and could trip the new lints in code that was clean on 2026-05-08 but has since changed.Cargo.toml.needless_type_castandduration_suboptimal_units).Acceptance criteria
main.cargo xtask check-lint-policyreports 8 lints as active (withdisallowed_fieldsandmanual_pop_ifremaining tracked separately).mainpost-merge.[workspace.lints.clippy]block reflects the activated entries;policy/clippy-lints.toml[[planned]]reduced accordingly.Not in scope
This is the tracking issue and plan. The actual lint flip happens in PR #505 once unblocked; this issue does not modify any source files.
disallowed_fields(HELD) andmanual_pop_if(DEFERRED to MSRV 1.96) remain out of scope for #505 and this issue.