dpp_rules/lint/mod.rs
1//! Passport plausibility lints — non-binding findings that flag *implausible*
2//! data (arithmetic that doesn't add up, values outside physically plausible
3//! ranges, or fields whose declared values are inconsistent with each other),
4//! as distinct from the *malformed* data JSON Schema catches or the
5//! *non-compliant* data a [`crate::batteries`]/[`crate::textiles`]-style rule
6//! catches. A lint finding never blocks publish — see [`LintSeverity`].
7//!
8//! Each lint cites the physics or arithmetic behind it, the way the product group
9//! rule modules cite the regulatory article behind a binding rule. Findings
10//! are phrased as questions ("intended?"), never verdicts.
11
12mod types;
13
14pub mod battery;
15pub mod svhc;
16#[cfg(test)]
17mod svhc_tests;
18pub mod textile;
19pub mod unsold_goods;
20
21pub use types::{LintFinding, LintSeverity};
22
23/// Version of this crate's lint pack. Bump whenever a lint is added, removed,
24/// or its trigger condition changes — callers surface this alongside
25/// findings so a consumer can tell which pack produced them.
26///
27/// 1.1.0 adds the three [`svhc`] lints. They are the first pack that is not
28/// scoped to one product group: REACH Art. 33 reaches every article, so the
29/// lints run wherever a payload declares substances rather than under a single
30/// product group's arm.
31pub const LINT_PACK_VERSION: &str = "1.1.0";