@tracepass/dpp-validate 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -1
- package/dist/battery-applicability.d.ts +13 -11
- package/dist/battery-applicability.d.ts.map +1 -1
- package/dist/battery-applicability.js +117 -16
- package/dist/battery-applicability.js.map +1 -1
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +30 -19
- package/dist/rules.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @tracepass/dpp-validate
|
|
5
5
|
|
|
6
|
-
**Evaluate an EU Digital Product Passport against its category field spec. Pure functions, no third-party runtime dependencies,
|
|
6
|
+
**Evaluate an EU Digital Product Passport against its category field spec. Pure functions, no third-party runtime dependencies, 46 tests.**
|
|
7
7
|
|
|
8
8
|
[](../../LICENSE)
|
|
9
9
|
[](#)
|
|
@@ -83,6 +83,28 @@ A `compliant` verdict means *this passport satisfies the rules encoded here* —
|
|
|
83
83
|
product may be placed on the market*. Delegated acts are still landing. Verify against
|
|
84
84
|
[EUR-Lex](https://eur-lex.europa.eu).
|
|
85
85
|
|
|
86
|
+
## Battery identifier requirement (BAT-1)
|
|
87
|
+
|
|
88
|
+
The battery passport must carry a unique product identifier. Battery Regulation Art. 77(3)
|
|
89
|
+
requires ISO/IEC 15459 until a delegated act replaces it with EN 18219. A GS1 Digital Link
|
|
90
|
+
URI satisfies that requirement because GS1 is an ISO/IEC 15459 issuing agency. The BAT-1
|
|
91
|
+
fix text in findings explains this:
|
|
92
|
+
|
|
93
|
+
```jsonc
|
|
94
|
+
{
|
|
95
|
+
"fix": "Provide identifier — an ISO/IEC 15459 unique identifier, e.g. a GS1 Digital Link URI
|
|
96
|
+
(Battery Regulation Art. 77(3) requires ISO/IEC 15459 until a delegated act replaces
|
|
97
|
+
it with EN 18219)."
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Plain-language background on the rules encoded here:
|
|
102
|
+
|
|
103
|
+
- [Holding data is not compliance](https://www.tracepass.eu/regulatory/holding-data-is-not-compliance)
|
|
104
|
+
— where DPP duties are actually discharged, and why the verdict is narrower than market placement.
|
|
105
|
+
- [Article 77 battery passport — Regulation (EU) 2023/1542](https://www.tracepass.eu/regulatory/battery-articles/article-77)
|
|
106
|
+
— the article behind the battery checks and applicability gates.
|
|
107
|
+
|
|
86
108
|
## License
|
|
87
109
|
|
|
88
110
|
[Apache-2.0](../../LICENSE)
|
|
@@ -8,9 +8,12 @@
|
|
|
8
8
|
* than asking a reviewer for data the regulation doesn't require.
|
|
9
9
|
*
|
|
10
10
|
* Derives from Regulation (EU) 2023/1542 (the EU Battery Regulation), Annex
|
|
11
|
-
* XIII, and
|
|
12
|
-
* field
|
|
13
|
-
*
|
|
11
|
+
* XIII, Art. 14(1) and Annex VII Parts A and B. EV batteries do NOT carry every
|
|
12
|
+
* field: the capacity threshold for exhaustion and the state of certified
|
|
13
|
+
* energy are EV-only, while the remaining-capacity and expected-lifetime sets
|
|
14
|
+
* apply to LMT batteries and stationary battery energy storage systems only.
|
|
15
|
+
* Industrial batteries are conditional on the BMS / rechargeable /
|
|
16
|
+
* external-storage / stationary-storage flags.
|
|
14
17
|
*
|
|
15
18
|
* Design contract — the SAFETY rule that makes A safe:
|
|
16
19
|
* "unknown" (a gate's trigger field is absent) ⇒ treat as APPLIES for the
|
|
@@ -22,10 +25,10 @@
|
|
|
22
25
|
* - batteryCategory — a real template field in battery.json (enum: LMT |
|
|
23
26
|
* EV | industrial_gt_2kwh | industrial_lte_2kwh | SLI
|
|
24
27
|
* | portable). Read from `passport.fields`.
|
|
25
|
-
* - hasBMS, rechargeable, externalStorageOnly — tri-state
|
|
26
|
-
* `passport.batteryProfile` (a separate
|
|
27
|
-
* template fields — deliberately outside the
|
|
28
|
-
* field set, so they do not inflate its count).
|
|
28
|
+
* - hasBMS, rechargeable, externalStorageOnly, isStationaryBess — tri-state
|
|
29
|
+
* booleans on `passport.batteryProfile` (a separate
|
|
30
|
+
* block, NOT template fields — deliberately outside the
|
|
31
|
+
* template field set, so they do not inflate its count).
|
|
29
32
|
* Absent ⇒ the dependent gate resolves to
|
|
30
33
|
* "unknown" (show + warn), not a guess.
|
|
31
34
|
*
|
|
@@ -37,10 +40,6 @@ export type Applicability = "applies" | "not_applicable" | "unknown";
|
|
|
37
40
|
* (BAT-1). Used only to keep this module self-contained; the passport-
|
|
38
41
|
* level scope gate still lives in rules.ts BAT-1. */
|
|
39
42
|
export declare const IN_SCOPE_BATTERY_CATEGORIES: readonly ["LMT", "EV", "industrial_gt_2kwh"];
|
|
40
|
-
/** Field keys whose applicability is conditional, with a short reason +
|
|
41
|
-
* the deck article they map to. Everything NOT listed here is always
|
|
42
|
-
* "applies". Kept as data so the rules engine + editor can enumerate the
|
|
43
|
-
* conditional set and so a reader can audit each gate against the deck. */
|
|
44
43
|
export interface FieldGate {
|
|
45
44
|
/** Battery template field keys this gate governs. */
|
|
46
45
|
keys: string[];
|
|
@@ -48,6 +47,8 @@ export interface FieldGate {
|
|
|
48
47
|
article: string;
|
|
49
48
|
/** One-line reason, surfaced in the verdict + editor tooltip. */
|
|
50
49
|
reason: string;
|
|
50
|
+
/** Extra remediation, for gates that turn on the stationary-storage flag. */
|
|
51
|
+
fixHint?: string;
|
|
51
52
|
/** Decide applicability from the resolved trigger values. */
|
|
52
53
|
decide(t: Triggers): Applicability;
|
|
53
54
|
}
|
|
@@ -56,6 +57,7 @@ interface Triggers {
|
|
|
56
57
|
hasBMS: boolean | undefined;
|
|
57
58
|
rechargeable: boolean | undefined;
|
|
58
59
|
externalStorageOnly: boolean | undefined;
|
|
60
|
+
isStationaryBess: boolean | undefined;
|
|
59
61
|
}
|
|
60
62
|
/**
|
|
61
63
|
* The conditional gates, one per applicability rule from the deck. Order
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"battery-applicability.d.ts","sourceRoot":"","sources":["../src/battery-applicability.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"battery-applicability.d.ts","sourceRoot":"","sources":["../src/battery-applicability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAErE;;sDAEsD;AACtD,eAAO,MAAM,2BAA2B,8CAA+C,CAAC;AAUxF,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CACpC;AAED,UAAU,QAAQ;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAqDD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,EAwH1C,CAAC;AAQF,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA+B,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAIjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAS/B;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE7D"}
|
|
@@ -8,9 +8,12 @@
|
|
|
8
8
|
* than asking a reviewer for data the regulation doesn't require.
|
|
9
9
|
*
|
|
10
10
|
* Derives from Regulation (EU) 2023/1542 (the EU Battery Regulation), Annex
|
|
11
|
-
* XIII, and
|
|
12
|
-
* field
|
|
13
|
-
*
|
|
11
|
+
* XIII, Art. 14(1) and Annex VII Parts A and B. EV batteries do NOT carry every
|
|
12
|
+
* field: the capacity threshold for exhaustion and the state of certified
|
|
13
|
+
* energy are EV-only, while the remaining-capacity and expected-lifetime sets
|
|
14
|
+
* apply to LMT batteries and stationary battery energy storage systems only.
|
|
15
|
+
* Industrial batteries are conditional on the BMS / rechargeable /
|
|
16
|
+
* external-storage / stationary-storage flags.
|
|
14
17
|
*
|
|
15
18
|
* Design contract — the SAFETY rule that makes A safe:
|
|
16
19
|
* "unknown" (a gate's trigger field is absent) ⇒ treat as APPLIES for the
|
|
@@ -22,10 +25,10 @@
|
|
|
22
25
|
* - batteryCategory — a real template field in battery.json (enum: LMT |
|
|
23
26
|
* EV | industrial_gt_2kwh | industrial_lte_2kwh | SLI
|
|
24
27
|
* | portable). Read from `passport.fields`.
|
|
25
|
-
* - hasBMS, rechargeable, externalStorageOnly — tri-state
|
|
26
|
-
* `passport.batteryProfile` (a separate
|
|
27
|
-
* template fields — deliberately outside the
|
|
28
|
-
* field set, so they do not inflate its count).
|
|
28
|
+
* - hasBMS, rechargeable, externalStorageOnly, isStationaryBess — tri-state
|
|
29
|
+
* booleans on `passport.batteryProfile` (a separate
|
|
30
|
+
* block, NOT template fields — deliberately outside the
|
|
31
|
+
* template field set, so they do not inflate its count).
|
|
29
32
|
* Absent ⇒ the dependent gate resolves to
|
|
30
33
|
* "unknown" (show + warn), not a guess.
|
|
31
34
|
*
|
|
@@ -35,6 +38,12 @@
|
|
|
35
38
|
* (BAT-1). Used only to keep this module self-contained; the passport-
|
|
36
39
|
* level scope gate still lives in rules.ts BAT-1. */
|
|
37
40
|
export const IN_SCOPE_BATTERY_CATEGORIES = ["LMT", "EV", "industrial_gt_2kwh"];
|
|
41
|
+
/** Field keys whose applicability is conditional, with a short reason +
|
|
42
|
+
* the deck article they map to. Everything NOT listed here is always
|
|
43
|
+
* "applies". Kept as data so the rules engine + editor can enumerate the
|
|
44
|
+
* conditional set and so a reader can audit each gate against the deck. */
|
|
45
|
+
/** Remediation for the gates that depend on `isStationaryBess`. */
|
|
46
|
+
const SBESS_FIX_HINT = "For an industrial (>2 kWh) battery, confirm whether it is a stationary battery energy storage system: Art. 14 state-of-health and Annex VII expected-lifetime data apply only to stationary storage systems, LMT and (for state of health) EV batteries.";
|
|
38
47
|
/**
|
|
39
48
|
* Resolve a profile flag to a confirmed boolean. Only an `approved` flag
|
|
40
49
|
* counts — a `pending_review` (AI-suggested, unconfirmed) flag resolves to
|
|
@@ -54,8 +63,42 @@ function readTriggers(passport) {
|
|
|
54
63
|
hasBMS: confirmed(profile?.hasBMS),
|
|
55
64
|
rechargeable: confirmed(profile?.rechargeable),
|
|
56
65
|
externalStorageOnly: confirmed(profile?.externalStorageOnly),
|
|
66
|
+
isStationaryBess: confirmed(profile?.isStationaryBess),
|
|
57
67
|
};
|
|
58
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Is this battery an Art. 14(1) subject (state-of-health / expected-lifetime
|
|
71
|
+
* data applies)? Art. 14(1) covers EV, LMT, and stationary battery energy
|
|
72
|
+
* storage systems — NOT other industrial batteries.
|
|
73
|
+
*/
|
|
74
|
+
function art14Subject(t) {
|
|
75
|
+
if (t.category === undefined)
|
|
76
|
+
return undefined;
|
|
77
|
+
if (t.category === "EV" || t.category === "LMT")
|
|
78
|
+
return true;
|
|
79
|
+
if (t.category === "industrial_gt_2kwh")
|
|
80
|
+
return t.isStationaryBess;
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Annex VII Part A + B applicability: applies for LMT; for industrial_gt_2kwh
|
|
85
|
+
* only when confirmed as a stationary BESS; not_applicable for EV and all
|
|
86
|
+
* other categories; unknown when category absent or isStationaryBess unset.
|
|
87
|
+
*/
|
|
88
|
+
function sbessOrLmt(t) {
|
|
89
|
+
if (t.category === undefined)
|
|
90
|
+
return "unknown";
|
|
91
|
+
if (t.category === "LMT")
|
|
92
|
+
return "applies";
|
|
93
|
+
if (t.category === "industrial_gt_2kwh") {
|
|
94
|
+
if (t.isStationaryBess === true)
|
|
95
|
+
return "applies";
|
|
96
|
+
if (t.isStationaryBess === false)
|
|
97
|
+
return "not_applicable";
|
|
98
|
+
return "unknown";
|
|
99
|
+
}
|
|
100
|
+
return "not_applicable";
|
|
101
|
+
}
|
|
59
102
|
/**
|
|
60
103
|
* The conditional gates, one per applicability rule from the deck. Order
|
|
61
104
|
* doesn't matter — each governs a disjoint set of field keys.
|
|
@@ -74,18 +117,20 @@ export const BATTERY_FIELD_GATES = [
|
|
|
74
117
|
},
|
|
75
118
|
},
|
|
76
119
|
{
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
// on (in-scope category) AND (hasBMS). hasBMS absent ⇒ unknown.
|
|
120
|
+
// Annex XIII 4(b) / Art. 14(1): state of health applies to SBESS, LMT,
|
|
121
|
+
// and EV batteries with a BMS. A plain industrial battery that is NOT a
|
|
122
|
+
// stationary ESS does NOT owe state-of-health data.
|
|
81
123
|
keys: ["stateOfHealth"],
|
|
82
124
|
article: "Annex XIII 4(b) / Art. 14",
|
|
83
|
-
|
|
125
|
+
fixHint: SBESS_FIX_HINT,
|
|
126
|
+
reason: "State of health (Art. 14) applies only to stationary battery energy storage systems, LMT, and EV batteries that have a battery management system (BMS). A plain industrial (>2 kWh) battery that is not a stationary storage system does not owe this data.",
|
|
84
127
|
decide: (t) => {
|
|
85
|
-
|
|
128
|
+
const a14 = art14Subject(t);
|
|
129
|
+
if (a14 === false || t.hasBMS === false)
|
|
130
|
+
return "not_applicable";
|
|
131
|
+
if (a14 === undefined || t.hasBMS === undefined)
|
|
86
132
|
return "unknown";
|
|
87
|
-
|
|
88
|
-
return inScope && t.hasBMS ? "applies" : "not_applicable";
|
|
133
|
+
return "applies";
|
|
89
134
|
},
|
|
90
135
|
},
|
|
91
136
|
{
|
|
@@ -120,15 +165,71 @@ export const BATTERY_FIELD_GATES = [
|
|
|
120
165
|
"recycledContentLithium",
|
|
121
166
|
"recycledContentNickel",
|
|
122
167
|
"recycledContentDocumentation",
|
|
168
|
+
// Pre/post-consumer split-shares (Annex XIII 1(e)) carry the same gate
|
|
169
|
+
// as the combined figures above — external-storage-only batteries are exempt.
|
|
170
|
+
"preConsumerRecycledNickelShare",
|
|
171
|
+
"preConsumerRecycledCobaltShare",
|
|
172
|
+
"preConsumerRecycledLithiumShare",
|
|
173
|
+
"postConsumerRecycledNickelShare",
|
|
174
|
+
"postConsumerRecycledCobaltShare",
|
|
175
|
+
"postConsumerRecycledLithiumShare",
|
|
123
176
|
],
|
|
124
177
|
article: "Annex XIII 1(e) / Art. 8",
|
|
125
|
-
reason: "Recycled-content information does not apply to batteries with external storage
|
|
178
|
+
reason: "Recycled-content information does not apply to industrial batteries with exclusively external storage.",
|
|
126
179
|
decide: (t) => {
|
|
180
|
+
// Art. 8(1) exempts only "industrial batteries … except those with
|
|
181
|
+
// exclusively external storage"; EV and LMT batteries owe it regardless.
|
|
182
|
+
if (t.category !== undefined && t.category !== "industrial_gt_2kwh")
|
|
183
|
+
return "applies";
|
|
127
184
|
if (t.externalStorageOnly === undefined)
|
|
128
185
|
return "unknown";
|
|
129
186
|
return t.externalStorageOnly ? "not_applicable" : "applies";
|
|
130
187
|
},
|
|
131
188
|
},
|
|
189
|
+
{
|
|
190
|
+
// Annex XIII 4(b) / Art. 14: state of certified energy (SOCE) applies
|
|
191
|
+
// only to electric-vehicle (EV) batteries.
|
|
192
|
+
keys: ["stateOfCertifiedEnergy"],
|
|
193
|
+
article: "Annex XIII 4(b) / Art. 14",
|
|
194
|
+
reason: "State of certified energy (SOCE) applies only to electric-vehicle (EV) batteries.",
|
|
195
|
+
decide: (t) => {
|
|
196
|
+
if (t.category === undefined)
|
|
197
|
+
return "unknown";
|
|
198
|
+
return t.category === "EV" ? "applies" : "not_applicable";
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
// Annex XIII 4(b) / Art. 14 / Annex VII Part A: remaining capacity /
|
|
203
|
+
// power capability, remaining round-trip efficiency, self-discharge
|
|
204
|
+
// evolution, pack ohmic resistance, and initial self-discharge rate apply
|
|
205
|
+
// only to SBESS and LMT batteries — NOT EV, and NOT plain industrial
|
|
206
|
+
// batteries that are not stationary storage systems.
|
|
207
|
+
keys: [
|
|
208
|
+
"remainingCapacity",
|
|
209
|
+
"remainingPowerCapability",
|
|
210
|
+
"remainingRoundTripEfficiency",
|
|
211
|
+
"evolutionOfSelfDischargeRate",
|
|
212
|
+
"currentInternalResistancePack",
|
|
213
|
+
"initialSelfDischargeRate",
|
|
214
|
+
],
|
|
215
|
+
article: "Annex XIII 4(b) / Art. 14 / Annex VII Part A",
|
|
216
|
+
fixHint: SBESS_FIX_HINT,
|
|
217
|
+
reason: "Remaining capacity and related Annex VII Part A metrics apply only to LMT batteries and stationary battery energy storage systems.",
|
|
218
|
+
decide: sbessOrLmt,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
// Annex XIII 4(b) / Art. 14 / Annex VII Part B: expected-lifetime
|
|
222
|
+
// parameters apply only to SBESS and LMT batteries.
|
|
223
|
+
keys: [
|
|
224
|
+
"capacityThroughput",
|
|
225
|
+
"energyThroughput",
|
|
226
|
+
"dateOfServiceEntry",
|
|
227
|
+
],
|
|
228
|
+
article: "Annex XIII 4(b) / Art. 14 / Annex VII Part B",
|
|
229
|
+
fixHint: SBESS_FIX_HINT,
|
|
230
|
+
reason: "Expected-lifetime parameters (Annex VII Part B) apply only to LMT batteries and stationary battery energy storage systems.",
|
|
231
|
+
decide: sbessOrLmt,
|
|
232
|
+
},
|
|
132
233
|
];
|
|
133
234
|
/** Pre-computed map from field key → the gate governing it. */
|
|
134
235
|
const KEY_TO_GATE = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"battery-applicability.js","sourceRoot":"","sources":["../src/battery-applicability.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"battery-applicability.js","sourceRoot":"","sources":["../src/battery-applicability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH;;sDAEsD;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAoB,CAAU,CAAC;AAExF;;;4EAG4E;AAC5E,mEAAmE;AACnE,MAAM,cAAc,GAClB,0PAA0P,CAAC;AAuB7P;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAA0C;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,QAAkB;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC;IACxC,OAAO;QACL,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QACtF,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;QAClC,YAAY,EAAE,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;QAC9C,mBAAmB,EAAE,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAC5D,gBAAgB,EAAE,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAAW;IAC/B,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,CAAC,CAAC,QAAQ,KAAK,oBAAoB;QAAE,OAAO,CAAC,CAAC,gBAAgB,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,CAAW;IAC7B,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC,CAAC,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,gBAAgB,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAClD,IAAI,CAAC,CAAC,gBAAgB,KAAK,KAAK;YAAE,OAAO,gBAAgB,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C;QACE,mEAAmE;QACnE,sEAAsE;QACtE,IAAI,EAAE,CAAC,gCAAgC,CAAC;QACxC,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,oFAAoF;QAC5F,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC/C,OAAO,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC5D,CAAC;KACF;IACD;QACE,uEAAuE;QACvE,wEAAwE;QACxE,oDAAoD;QACpD,IAAI,EAAE,CAAC,eAAe,CAAC;QACvB,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,6PAA6P;QACrQ,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK;gBAAE,OAAO,gBAAgB,CAAC;YACjE,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;IACD;QACE,+DAA+D;QAC/D,sEAAsE;QACtE,0CAA0C;QAC1C,IAAI,EAAE;YACJ,sBAAsB;YACtB,iCAAiC;YACjC,sBAAsB;YACtB,yBAAyB;YACzB,0BAA0B;YAC1B,yBAAyB;YACzB,gBAAgB;YAChB,sBAAsB;SACvB;QACD,OAAO,EAAE,0BAA0B;QACnC,MAAM,EAAE,sEAAsE;QAC9E,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACnD,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACvD,CAAC;KACF;IACD;QACE,sEAAsE;QACtE,sEAAsE;QACtE,oBAAoB;QACpB,IAAI,EAAE;YACJ,uBAAuB;YACvB,qBAAqB;YACrB,wBAAwB;YACxB,uBAAuB;YACvB,8BAA8B;YAC9B,uEAAuE;YACvE,8EAA8E;YAC9E,gCAAgC;YAChC,gCAAgC;YAChC,iCAAiC;YACjC,iCAAiC;YACjC,iCAAiC;YACjC,kCAAkC;SACnC;QACD,OAAO,EAAE,0BAA0B;QACnC,MAAM,EAAE,wGAAwG;QAChH,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,mEAAmE;YACnE,yEAAyE;YACzE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,oBAAoB;gBAAE,OAAO,SAAS,CAAC;YACtF,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC1D,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,CAAC;KACF;IACD;QACE,sEAAsE;QACtE,2CAA2C;QAC3C,IAAI,EAAE,CAAC,wBAAwB,CAAC;QAChC,OAAO,EAAE,2BAA2B;QACpC,MAAM,EAAE,mFAAmF;QAC3F,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC/C,OAAO,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC5D,CAAC;KACF;IACD;QACE,qEAAqE;QACrE,oEAAoE;QACpE,0EAA0E;QAC1E,qEAAqE;QACrE,qDAAqD;QACrD,IAAI,EAAE;YACJ,mBAAmB;YACnB,0BAA0B;YAC1B,8BAA8B;YAC9B,8BAA8B;YAC9B,+BAA+B;YAC/B,0BAA0B;SAC3B;QACD,OAAO,EAAE,8CAA8C;QACvD,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,oIAAoI;QAC5I,MAAM,EAAE,UAAU;KACnB;IACD;QACE,kEAAkE;QAClE,oDAAoD;QACpD,IAAI,EAAE;YACJ,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;SACrB;QACD,OAAO,EAAE,8CAA8C;QACvD,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,4HAA4H;QACpI,MAAM,EAAE,UAAU;KACnB;CACF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;AACjD,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAEjF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB,EAAE,GAAW;IAChE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAkB,EAClB,QAAgB;IAEhB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/rules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAapD;iFACiF;AACjF,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,IAAI,CAAC;CACX;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAAC;CACrF;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAapD;iFACiF;AACjF,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,IAAI,CAAC;CACX;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAAC;CACrF;AA6ED,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAC5D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAE3D;AAmUD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAM/D,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAAU,CAAC"}
|
package/dist/rules.js
CHANGED
|
@@ -32,6 +32,14 @@ function hasValue(passport, key) {
|
|
|
32
32
|
function valueOf(passport, key) {
|
|
33
33
|
return hasValue(passport, key) ? passport.fields[key].value : undefined;
|
|
34
34
|
}
|
|
35
|
+
/** English label for `key` from the template, with the raw key in parentheses for
|
|
36
|
+
* traceability. Falls back to the raw key alone when the template has no matching
|
|
37
|
+
* field or no English label — so the message is always actionable. */
|
|
38
|
+
function fieldLabel(key, template) {
|
|
39
|
+
const field = template.fields.find((f) => f.key === key);
|
|
40
|
+
const en = field?.label?.en;
|
|
41
|
+
return en ? `${en} (${key})` : key;
|
|
42
|
+
}
|
|
35
43
|
// ── CC-1 · cross-cutting EU economic-operator rule ──────────────────
|
|
36
44
|
// Reg (EU) 2019/1020 Art. 4(1)+(2): a product may be placed on the
|
|
37
45
|
// market only if there is an EU-established operator. When the
|
|
@@ -134,14 +142,11 @@ const BAT1 = {
|
|
|
134
142
|
why: mandatory
|
|
135
143
|
? `This is an in-scope battery (${String(cat)}); a battery passport with its unique identifier is mandatory.`
|
|
136
144
|
: `This is an in-scope battery (${String(cat)}); the battery passport becomes mandatory on 18 February 2027 (Art. 77(1)), and its unique identifier is not set yet.`,
|
|
137
|
-
//
|
|
138
|
-
// is
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
// not impose, which could push an implementer onto GS1 when their
|
|
143
|
-
// scheme was already conformant.
|
|
144
|
-
fix: `Provide ${key} — the battery passport's unique identifier, in one of the schemes EN 18219 permits for a product identifier.`,
|
|
145
|
+
// Battery Regulation Art. 77(3) requires ISO/IEC 15459; a GS1 Digital
|
|
146
|
+
// Link URI is one conformant form. DID, DOI and IEC 61406 are not
|
|
147
|
+
// 15459 identifiers, so they are not valid here until a delegated act
|
|
148
|
+
// replaces Art. 77(3)'s 15459 reference with EN 18219.
|
|
149
|
+
fix: `Provide ${key} — an ISO/IEC 15459 unique identifier, e.g. a GS1 Digital Link URI (Battery Regulation Art. 77(3) requires ISO/IEC 15459 until a delegated act replaces it with EN 18219).`,
|
|
145
150
|
});
|
|
146
151
|
}
|
|
147
152
|
}
|
|
@@ -164,7 +169,7 @@ const BAT1 = {
|
|
|
164
169
|
// applicability, so it stays additive and can't double-count.
|
|
165
170
|
const BAT_APP = {
|
|
166
171
|
id: "BAT-APP",
|
|
167
|
-
run(passport) {
|
|
172
|
+
run(passport, template) {
|
|
168
173
|
const findings = [];
|
|
169
174
|
// Reuse the shared predicate so the verdict + editor read applicability
|
|
170
175
|
// through ONE path (incl. the "pending AI flag = unknown" safety rule).
|
|
@@ -175,7 +180,11 @@ const BAT_APP = {
|
|
|
175
180
|
if (verdict === "applies")
|
|
176
181
|
continue;
|
|
177
182
|
for (const key of gate.keys) {
|
|
178
|
-
|
|
183
|
+
// A value the platform wrote (a template or product default, a derived
|
|
184
|
+
// value) is not the user's entry: telling them to remove it, or to
|
|
185
|
+
// classify the battery to justify it, points at data they never gave.
|
|
186
|
+
const filled = hasValue(passport, key) && passport.fields[key].source !== "system";
|
|
187
|
+
const label = fieldLabel(key, template);
|
|
179
188
|
if (verdict === "not_applicable" && filled) {
|
|
180
189
|
findings.push({
|
|
181
190
|
type: "invalid_format",
|
|
@@ -184,8 +193,8 @@ const BAT_APP = {
|
|
|
184
193
|
regulation: "(EU) 2023/1542",
|
|
185
194
|
article: gate.article,
|
|
186
195
|
ruleId: "BAT-APP",
|
|
187
|
-
why: `${
|
|
188
|
-
fix: `Remove ${
|
|
196
|
+
why: `${label} is filled but doesn't apply to this battery — ${gate.reason}`,
|
|
197
|
+
fix: `Remove ${label}, or correct the battery classification (batteryCategory / battery profile).${gate.fixHint ? ` ${gate.fixHint}` : ""}`,
|
|
189
198
|
});
|
|
190
199
|
}
|
|
191
200
|
else if (verdict === "unknown" && filled) {
|
|
@@ -196,8 +205,8 @@ const BAT_APP = {
|
|
|
196
205
|
regulation: "(EU) 2023/1542",
|
|
197
206
|
article: gate.article,
|
|
198
207
|
ruleId: "BAT-APP",
|
|
199
|
-
why: `${
|
|
200
|
-
fix:
|
|
208
|
+
why: `${label} is filled, but whether it applies couldn't be confirmed — ${gate.reason}`,
|
|
209
|
+
fix: `Set the battery classification (has-BMS / rechargeable / external-storage / stationary-BESS) so applicability can be confirmed.${gate.fixHint ? ` ${gate.fixHint}` : ""}`,
|
|
201
210
|
});
|
|
202
211
|
}
|
|
203
212
|
}
|
|
@@ -244,12 +253,13 @@ const BATTERY_NONNEGATIVE_FIELDS = [
|
|
|
244
253
|
];
|
|
245
254
|
const BAT_VAL = {
|
|
246
255
|
id: "BAT-VAL",
|
|
247
|
-
run(passport) {
|
|
256
|
+
run(passport, template) {
|
|
248
257
|
const findings = [];
|
|
249
258
|
// (1a) percentages in [0, 100].
|
|
250
259
|
for (const key of BATTERY_PERCENT_FIELDS) {
|
|
251
260
|
const n = numberOf(passport, key);
|
|
252
261
|
if (n !== undefined && (n < 0 || n > 100)) {
|
|
262
|
+
const label = fieldLabel(key, template);
|
|
253
263
|
findings.push({
|
|
254
264
|
type: "invalid_format",
|
|
255
265
|
severity: "warning",
|
|
@@ -257,8 +267,8 @@ const BAT_VAL = {
|
|
|
257
267
|
regulation: "(EU) 2023/1542",
|
|
258
268
|
article: "Annex XIII",
|
|
259
269
|
ruleId: "BAT-VAL",
|
|
260
|
-
why: `${
|
|
261
|
-
fix: `Correct ${
|
|
270
|
+
why: `${label} is ${n}, outside the valid 0–100% range.`,
|
|
271
|
+
fix: `Correct ${label} to a percentage between 0 and 100.`,
|
|
262
272
|
});
|
|
263
273
|
}
|
|
264
274
|
}
|
|
@@ -266,6 +276,7 @@ const BAT_VAL = {
|
|
|
266
276
|
for (const key of BATTERY_NONNEGATIVE_FIELDS) {
|
|
267
277
|
const n = numberOf(passport, key);
|
|
268
278
|
if (n !== undefined && n < 0) {
|
|
279
|
+
const label = fieldLabel(key, template);
|
|
269
280
|
findings.push({
|
|
270
281
|
type: "invalid_format",
|
|
271
282
|
severity: "warning",
|
|
@@ -273,8 +284,8 @@ const BAT_VAL = {
|
|
|
273
284
|
regulation: "(EU) 2023/1542",
|
|
274
285
|
article: "Art. 7",
|
|
275
286
|
ruleId: "BAT-VAL",
|
|
276
|
-
why: `${
|
|
277
|
-
fix: `Correct ${
|
|
287
|
+
why: `${label} is ${n}; a carbon-footprint value cannot be negative.`,
|
|
288
|
+
fix: `Correct ${label} to a non-negative value (kg CO2e/kWh).`,
|
|
278
289
|
});
|
|
279
290
|
}
|
|
280
291
|
}
|
package/dist/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tracepass/dpp-validate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Evaluate an EU Digital Product Passport against its category field-spec — a three-tier compliance verdict with regulation-cited findings. Pure functions, no third-party runtime dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"digital-product-passport",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"clean": "rm -rf dist"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@tracepass/dpp-types": "^0.
|
|
48
|
+
"@tracepass/dpp-types": "^0.9.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"typescript": "^5.6.3"
|