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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//! [`ManufacturerInfo`] embedded in the passport.
use ;
/// Manufacturer information embedded in the passport.
///
/// # The contact obligation this has to satisfy
///
/// ESPR **Art. 27(6)** names four elements, and it is unusually direct about
/// where they go:
///
/// > manufacturers shall indicate their **name, registered trade name or
/// > registered trade mark, postal address** at which, and **electronic means of
/// > communication** through which, they can be contacted: (a) **on the public
/// > part of the digital product passport**, where applicable […]
///
/// Most of Annex III lists what a delegated act *may* specify for a product
/// group. This is not that: it is a direct duty on the manufacturer for any
/// product a delegated act covers, and the act's only role is the "where
/// applicable" of whether the product has a passport at all. That makes it the
/// strongest data-content claim in the Regulation on this type.
///
/// The same four-element floor appears in ESPR Art. 29(3) (importer),
/// Art. 4(4) of Regulation (EU) 2019/1020, and Art. 16(3) of Regulation (EU)
/// 2023/988. [`ResponsibleOperator`](crate::operator::ResponsibleOperator)
/// already carries it for the operator side; this type reuses its **field
/// names** rather than sharing a type, because the two records differ in what
/// else they carry and in which of their fields are required.
///
/// # What is still not enforceable
///
/// Art. 27(6) closes with *"The address shall indicate a single point where the
/// manufacturer can be contacted."* [`address`](Self::address) is a free string,
/// so nothing here can check that — and a structured address could not either,
/// because "single point" is a property of the content rather than the shape. It
/// is stated so that a reader knows it is unchecked, not to imply it is.
///
/// # Why these fields are public
///
/// `manufacturer` carries no entry in
/// [`PASSPORT_FIELD_DISCLOSURE`](crate::disclosure::PASSPORT_FIELD_DISCLOSURE),
/// so it and its nested keys default to [`Public`](crate::disclosure::Disclosure::Public).
/// For these two that is not an oversight to be tidied up later — Art. 27(6)(a)
/// puts the contact details **on the public part** specifically, so classifying
/// them anywhere else would break the obligation the fields exist to satisfy.