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
//! [`ResponsibleOperatorSnapshot`] — Annex III(k)'s three elements, in the passport.
use ;
use ;
/// The economic operator answerable for a product, copied into the passport by
/// value.
///
/// # What it satisfies
///
/// **ESPR Annex III, point (k)** asks the passport to carry "the name, contact
/// details and unique operator identifier of the economic operator established
/// in the Union responsible for carrying out" the relevant tasks. All three live
/// on [`ResponsibleOperator`]; [`basis`](Self::basis) records which law makes
/// this operator the responsible one, which point (k) leaves open as a
/// disjunction rather than fixing.
///
/// # Why a snapshot, and not a reference to the transfer chain
///
/// The chain is the authoritative history of who has been responsible; this is
/// the passport's own statement of who is responsible for the version a reader
/// is holding. Copying by value is the same choice
/// [`FacilitySnapshot`](crate::facility::FacilitySnapshot) makes and for the
/// same reason: a signed passport stays a complete record, independent of a
/// registry that can change underneath it.
///
/// # Why it is not frozen the way `operator_identifier` is
///
/// **ESPR Art. 9(1)**, final sentence: "The data in the digital product passport
/// shall be accurate, complete and up to date." So point (k) wants whoever is
/// responsible *now*, not at first publication —
/// [`Passport::operator_identifier`](crate::passport::Passport::operator_identifier)
/// is the publisher frozen at publish and is a different fact.
///
/// A published passport's content is immutable, so "up to date" cannot mean
/// rewriting this in place. It means the transfer that moves responsibility is
/// followed by a corrected successor carrying the new operator — the record of
/// the handover stays in the chain, and the reader of any single version sees
/// the operator that version was issued under.