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
//! [`ProductGroupDescriptor`] — a single product group's catalog entry.
use ;
/// A single product group's catalog entry — the canonical record every
/// component (schema registry, plugin host, passport model) resolves against.
///
/// # What this record is not
///
/// It carries **no law**. `status`, `regime`, `legalBasis`, `dppAppliesFrom`,
/// `retentionYears` and `retentionYearsBasis` were fields here, and every one of
/// them was singular — which asserts that exactly one act governs a product
/// group. ESPR Art. 5(7) says otherwise: one delegated act may cover many
/// product groups, a group-specific act may supplement a horizontal one, and the
/// Regulation contains no precedence rule anywhere, so overlapping acts
/// accumulate. Each of those fields is a property of an *(act, product group)*
/// pair and now lives on
/// [`InstrumentBinding`](crate::instrument::InstrumentBinding), reached through
/// [`InstrumentCatalog`](crate::instrument::InstrumentCatalog).
///
/// What is left is identity, scope, and our own implementation of it: what the
/// group is called, what sub-types it has, which schema versions we serve for
/// it, how its fields are disclosed, and which plugin handles it. None of that
/// changes when a new act arrives; all of the law does.