dpp_rules/lineage/mod.rs
1//! Lineage rules — the cross-field checks that bind one passport to another.
2//!
3//! Top-level rather than under a product group because the edges are envelope
4//! fields every product group carries, and because the linkage obligation is
5//! framework-level: **ESPR (EU) 2024/1781 Art. 11(d)** requires that "where a
6//! new digital product passport is created for a product that already has a
7//! digital product passport, the new digital product passport shall be linked to
8//! the original digital product passport or passports."
9//!
10//! The *operation vocabulary* those edges use is battery-specific
11//! (Reg. (EU) 2023/1542 Art. 77(7)), but the shape of the rule is not, and
12//! filing it under `batteries` would imply only batteries can have second-life
13//! lineage — which the envelope contradicts.
14
15pub mod consent;
16pub mod consistency;
17pub mod finding;
18pub mod input;
19pub mod status_defect;
20
21#[cfg(test)]
22mod consent_tests;
23#[cfg(test)]
24mod consistency_tests;
25
26pub use consent::check_derivation_consent;
27pub use consistency::check_life_status_consistency;
28pub use finding::{ConsentDefect, ConsentFinding};
29pub use input::{DerivationEdge, TransferEvidence};
30pub use status_defect::StatusDefect;