Skip to content

chore(lints): close the remaining gaps against praxis #15

Description

@araujof

Description

41 lints are not enforced, grouped by reason in [workspace.lints] and explained in docs/lints.md. 38 of them are lints praxis enforces more strictly. The groups: style 10, perf 9, hygiene 7, api 5, complexity 5, attributes 2, docs 1, concurrency 1, test-hygiene 1.

Several are cheap now that the tree compiles clean. The complexity group (too_many_lines, too_many_arguments, cognitive_complexity, type_complexity, struct_excessive_bools) has thresholds already set in clippy.toml at the bar we want, so enforcing them is the only step left. Some are not cheap: unused_qualifications is 130 sites whose suggested fixes overlap and cannot be applied by rustfix, and allow_attributes cannot be satisfied under every feature set because two suppressions depend on #[cfg(feature)]-gated bodies.

The outcome is a decision per lint, not a clean sweep. A lint that stays allowed needs its reason in docs/lints.md, same as the current entries.

Measure per the doc: one lint at a time, on a tree that compiles, since some lints mask each other and a failing crate blocks its dependents from being linted. touch the file first; clippy caches hard enough to report a stale zero.

Acceptance criteria

  • Every one of the 41 is either enforced or has a current reason recorded.
  • clippy.toml thresholds that are set but inert become live, or the values are revised with a reason.
  • Counts in docs/lints.md are re-measured and match the tool.
  • make lint passes with the new levels.
  • No #[allow] is added above a #[cfg(test)] boundary, which would suppress production hits and make the surface look clean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    choreInfra, dependency updates, etc.

    Type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions