1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//! [`PassportObligation`] — whether an act requires a digital product passport,
//! and if not, why not.
use ;
use ObligationDate;
/// Whether an instrument requires a digital product passport.
///
/// # The state the previous model could not express
///
/// A catalog entry used to carry `dppAppliesFrom: Option<String>`, so an act
/// either had a passport date or had not been given one yet. Two real and
/// distinct situations both collapsed into "no date":
///
/// - an act that creates obligations but **no passport at all** — ESPR Arts.
/// 24–25 on unsold goods is a disclosure duty owed by an operator over a
/// financial year, with no product record anywhere in it; and
/// - an act whose passport is **displaced** by an equivalent digital system
/// under ESPR Art. 9(4)(b) — the working plan states that every product
/// covered by ecodesign measures gets a passport "except if there is an
/// alternative digital system providing equivalent information, for example
/// the EPREL database".
///
/// Because neither could be said, an adjacent act was recorded as `in_force`
/// with an inferred date, and a passport obligation that does not exist became
/// assertable. Making that state unrepresentable is the point of this type.
///
/// # A third state, found later: content owed to someone else's passport
///
/// Regulation (EU) 2024/1252 Art. 28(6) creates no passport and displaces none,
/// and it is not "no passport" either: for a product that another act already
/// requires a passport for, the magnet information Art. 28(4) lists *"shall be
/// included in that product passport"*. [`NotRequired`](Self::NotRequired) is
/// literally true of it, and it hides what a reader of the catalog most needs to
/// know. The Act was first filed as a list of materials for that reason.
/// [`IncludedIn`](Self::IncludedIn) says it.
///
/// It is for an **operative** duty only. Regulation (EU) 2025/40 recital 70 says
/// a packaged product's passport "should also be used" for packaging
/// information, and a recital binds nobody, so that act stays `NotRequired`.
///
/// ✅ COMPLIANCE-PIN: EU 2024/1252, Art. 28(6) (OJ L, 2024/1252, 3.5.2024, as
/// corrected by Corrigendum 2024/90330): the sentence quoted above, and the only
/// place the Regulation mentions a passport. EU 2025/40, recital (70) (OJ L,
/// 2025/40, 22.1.2025): "that digital product passport should also be used for
/// providing the relevant information under this Regulation".
///
/// Serialised internally tagged on `obligation`:
/// `{"obligation":"required","from":{"date":"2027-02-18","basis":"sourced"}}`,
/// `{"obligation":"notRequired"}`,
/// `{"obligation":"displacedBy","system":"EPREL","basis":"ESPR Art. 9(4)(b)"}`,
/// `{"obligation":"includedIn","basis":"Regulation (EU) 2024/1252 Art. 28(6)"}`.