@bsv/dpp-profiles 0.3.0-beta.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/LICENSE +58 -0
- package/README.md +64 -0
- package/dist/applicability.d.ts +96 -0
- package/dist/applicability.d.ts.map +1 -0
- package/dist/applicability.js +181 -0
- package/dist/applicability.js.map +1 -0
- package/dist/combinations.d.ts +30 -0
- package/dist/combinations.d.ts.map +1 -0
- package/dist/combinations.js +103 -0
- package/dist/combinations.js.map +1 -0
- package/dist/evidence-shapes.d.ts +198 -0
- package/dist/evidence-shapes.d.ts.map +1 -0
- package/dist/evidence-shapes.js +123 -0
- package/dist/evidence-shapes.js.map +1 -0
- package/dist/gs1-epc-binary.d.ts +81 -0
- package/dist/gs1-epc-binary.d.ts.map +1 -0
- package/dist/gs1-epc-binary.js +252 -0
- package/dist/gs1-epc-binary.js.map +1 -0
- package/dist/gs1-resolution.d.ts +392 -0
- package/dist/gs1-resolution.d.ts.map +1 -0
- package/dist/gs1-resolution.js +696 -0
- package/dist/gs1-resolution.js.map +1 -0
- package/dist/identifiers.d.ts +57 -0
- package/dist/identifiers.d.ts.map +1 -0
- package/dist/identifiers.js +117 -0
- package/dist/identifiers.js.map +1 -0
- package/dist/index.d.ts +235 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +124 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest-v2.d.ts +87 -0
- package/dist/manifest-v2.d.ts.map +1 -0
- package/dist/manifest-v2.js +31 -0
- package/dist/manifest-v2.js.map +1 -0
- package/dist/mapping.d.ts +84 -0
- package/dist/mapping.d.ts.map +1 -0
- package/dist/mapping.js +88 -0
- package/dist/mapping.js.map +1 -0
- package/dist/projections.d.ts +233 -0
- package/dist/projections.d.ts.map +1 -0
- package/dist/projections.js +466 -0
- package/dist/projections.js.map +1 -0
- package/frozen.json +42 -0
- package/generated/consumer/battery-v2.json +2248 -0
- package/generated/consumer/battery-v3.json +4354 -0
- package/generated/consumer/general-v1.json +9 -0
- package/generated/consumer/general-v2.json +714 -0
- package/generated/consumer/textile-v1.json +101 -0
- package/generated/consumer/textile-v2.json +1033 -0
- package/generated/consumer/textile-v3.json +2011 -0
- package/generated/index.json +86 -0
- package/generated/mapping/battery@2.md +116 -0
- package/generated/mapping/battery@3.md +130 -0
- package/generated/mapping/general@2.md +50 -0
- package/generated/mapping/textile@2.md +61 -0
- package/generated/mapping/textile@3.md +73 -0
- package/generated/payload-schema/battery@2.public.schema.json +609 -0
- package/generated/payload-schema/battery@2.restricted.schema.json +377 -0
- package/generated/payload-schema/battery@3.public.schema.json +1364 -0
- package/generated/payload-schema/battery@3.restricted.schema.json +1097 -0
- package/generated/payload-schema/general@1.public.schema.json +37 -0
- package/generated/payload-schema/general@1.restricted.schema.json +9 -0
- package/generated/payload-schema/general@2.public.schema.json +352 -0
- package/generated/payload-schema/general@2.restricted.schema.json +52 -0
- package/generated/payload-schema/textile@1.public.schema.json +82 -0
- package/generated/payload-schema/textile@1.restricted.schema.json +22 -0
- package/generated/payload-schema/textile@2.public.schema.json +464 -0
- package/generated/payload-schema/textile@2.restricted.schema.json +78 -0
- package/generated/payload-schema/textile@3.public.schema.json +1299 -0
- package/generated/payload-schema/textile@3.restricted.schema.json +78 -0
- package/manifests/battery@2.json +4047 -0
- package/manifests/battery@3.json +6164 -0
- package/manifests/exchange/untp-0.7.0-jose@1.json +191 -0
- package/manifests/exchange/vc-di-ecdsa-rdfc-2019@1.json +74 -0
- package/manifests/exchange/vsc-draft-compat@0.1.0.json +64 -0
- package/manifests/general@1.json +148 -0
- package/manifests/general@2.json +1266 -0
- package/manifests/interoperability/epcis-json@1.json +69 -0
- package/manifests/interoperability/epcis-vsc@1.json +64 -0
- package/manifests/interoperability/gs1-digital-link@1.json +71 -0
- package/manifests/operator/federated-operators@1.json +54 -0
- package/manifests/operator/single-operator@1.json +52 -0
- package/manifests/textile@1.json +383 -0
- package/manifests/textile@2.json +1682 -0
- package/manifests/textile@3.json +2763 -0
- package/package.json +59 -0
- package/schemas/exchange-profile.schema.json +134 -0
- package/schemas/gs1/NOTICE.md +11 -0
- package/schemas/gs1/resolver-description-file-schema-1.2.0.json +124 -0
- package/schemas/gs1/resolver-linkset-context-1.2.1.jsonld +39 -0
- package/schemas/gs1/resolver-linkset-schema-1.2.1.json +96 -0
- package/schemas/interoperability-profile.schema.json +347 -0
- package/schemas/operator-profile.schema.json +108 -0
- package/schemas/product-identity.schema.json +45 -0
- package/schemas/profile-manifest-v2.schema.json +1087 -0
- package/schemas/profile-manifest.schema.json +291 -0
|
@@ -0,0 +1,2248 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "battery",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"profile": "battery@2",
|
|
5
|
+
"status": "in use",
|
|
6
|
+
"regulatoryLine": "Mapped to Regulation (EU) 2023/1542 Annex XIII and the Battery Pass content guidance, ready ahead of the 18 February 2027 battery passport mandate.",
|
|
7
|
+
"sources": [
|
|
8
|
+
"Regulation (EU) 2023/1542, Article 77 and Annex XIII (normative)",
|
|
9
|
+
"DIN DKE SPEC 99100:2025-02, cited by clause; a licensed standard, not reproduced",
|
|
10
|
+
"Battery Pass Data Model 1.2.0, CC-BY-4.0, vocabulary only (the \"bpdm\" key)",
|
|
11
|
+
"Regulation (EU) 2024/1252 Annex II, the critical raw materials register",
|
|
12
|
+
"ISO 3166-1 alpha-2, for every value typed country"
|
|
13
|
+
],
|
|
14
|
+
"vocabularies": [
|
|
15
|
+
{
|
|
16
|
+
"prefix": "bpdm",
|
|
17
|
+
"name": "Battery Pass Data Model 1.2.0",
|
|
18
|
+
"repository": "https://github.com/batterypass/BatteryPassDataModel",
|
|
19
|
+
"licence": "CC-BY-4.0, declared in the repository README; no LICENCE file present",
|
|
20
|
+
"retrieved": "2026-07-25",
|
|
21
|
+
"urnPattern": "urn:samm:io.BatteryPass.{subModel}:{version}#{property}",
|
|
22
|
+
"use": "Vocabulary alignment only. No file from that repository is redistributed here, and its generated JSON Schema is deliberately not used for validation: every property is required by SAMM generation, so no tiered payload can validate."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"registers": [
|
|
26
|
+
{
|
|
27
|
+
"prefix": "crma",
|
|
28
|
+
"name": "Critical Raw Materials Act, Annex II Section 1",
|
|
29
|
+
"reference": "Regulation (EU) 2024/1252",
|
|
30
|
+
"use": "The closed option list for criticalRawMaterials. Revised at least every three years, so a consumer should check the list date rather than assume permanence.",
|
|
31
|
+
"fields": [
|
|
32
|
+
"criticalRawMaterials"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"prefix": "iso3166",
|
|
37
|
+
"name": "ISO 3166-1 alpha-2",
|
|
38
|
+
"reference": "ISO 3166-1",
|
|
39
|
+
"use": "Every value typed country. Officially assigned codes only; user-assigned and exceptionally-reserved codes are excluded so a passport cannot name a place no register resolves.",
|
|
40
|
+
"fields": [
|
|
41
|
+
"manufacturingPlace.country",
|
|
42
|
+
"sparePartsAddress.country"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"prefix": "cas",
|
|
47
|
+
"name": "CAS Registry Number",
|
|
48
|
+
"reference": "Chemical Abstracts Service",
|
|
49
|
+
"use": "The pattern on hazardousSubstances.cas. The final digit is a check digit, so a consumer can verify the number arithmetically and not only its shape.",
|
|
50
|
+
"fields": [
|
|
51
|
+
"hazardousSubstances.cas"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"conventions": {
|
|
56
|
+
"resolved": "Constraints are resolved, not implied: a percent field carries minimum 0 and maximum 100 explicitly, and a country field carries its pattern. No type-specific defaults need reapplying.",
|
|
57
|
+
"closed": "closed:true means options are exhaustive and a value outside them is invalid. closed:false means the list is what is known in practice and a value outside it is valid, because the source names no exhaustive vocabulary. A field with options and no closed key is closed.",
|
|
58
|
+
"awaitingAct": "awaitingAct names a delegated or implementing act that will fix this value's permitted form. Until it is adopted no list or pattern is stated, because stating one would publish a guess as a standard. Do not reject values on this field.",
|
|
59
|
+
"prose": "prose:true marks a value that is meant to be written for a person to read. It is a deliberate per-field decision, not an absent constraint.",
|
|
60
|
+
"record": "type:record carries fields describing its parts. With repeat:true the value is an array of such records; without, a single one."
|
|
61
|
+
},
|
|
62
|
+
"fields": [
|
|
63
|
+
{
|
|
64
|
+
"key": "passportId",
|
|
65
|
+
"label": "Passport reference",
|
|
66
|
+
"obligation": "should",
|
|
67
|
+
"access": "public",
|
|
68
|
+
"level": "item",
|
|
69
|
+
"type": "id",
|
|
70
|
+
"source": "platform",
|
|
71
|
+
"clause": "6.1.2.1",
|
|
72
|
+
"specName": "Battery passport identifier",
|
|
73
|
+
"legalRef": "none (spec recommendation)",
|
|
74
|
+
"bpdm": "batteryPassportIdentifier",
|
|
75
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#batteryPassportIdentifier",
|
|
76
|
+
"note": "Distinct from the battery identifier: 6.1.2.1(a) expects several passports over one physical battery, because 5.2.1(d) requires a new passport on remanufacture, repurpose or preparation for re-use."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"key": "serial",
|
|
80
|
+
"label": "Serial number",
|
|
81
|
+
"obligation": "must",
|
|
82
|
+
"access": "public",
|
|
83
|
+
"level": "item",
|
|
84
|
+
"type": "id",
|
|
85
|
+
"onLabel": true,
|
|
86
|
+
"source": "form",
|
|
87
|
+
"clause": "6.1.2.2",
|
|
88
|
+
"specName": "Battery identifier",
|
|
89
|
+
"legalRef": "Annex XIII (1a); Art. 38(6); Art. 77(3)",
|
|
90
|
+
"bpdm": "productIdentifier",
|
|
91
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#productIdentifier",
|
|
92
|
+
"supersedes": "serial",
|
|
93
|
+
"note": "Must comply with ISO/IEC 15459 or equivalent, and should be serialised. The spec deviates from BattReg here deliberately: the regulation attaches the identifier to the model, 6.1.2.2(e) attaches it to the item."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"key": "modelName",
|
|
97
|
+
"label": "Model name",
|
|
98
|
+
"obligation": "must",
|
|
99
|
+
"access": "public",
|
|
100
|
+
"level": "model",
|
|
101
|
+
"type": "text",
|
|
102
|
+
"maxLength": 200,
|
|
103
|
+
"prose": true,
|
|
104
|
+
"onLabel": true,
|
|
105
|
+
"source": "form",
|
|
106
|
+
"clause": "6.1.2.2",
|
|
107
|
+
"specName": "Model identification",
|
|
108
|
+
"legalRef": "Annex VI Part A(2)",
|
|
109
|
+
"supersedes": "name",
|
|
110
|
+
"note": "Prose by nature: it is whatever the maker calls the model. Length is capped so it fits a label and a passport heading."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"key": "operator",
|
|
114
|
+
"label": "Responsible operator",
|
|
115
|
+
"obligation": "should",
|
|
116
|
+
"access": "public",
|
|
117
|
+
"level": "item",
|
|
118
|
+
"type": "id",
|
|
119
|
+
"source": "brand",
|
|
120
|
+
"clause": "6.1.2.3",
|
|
121
|
+
"specName": "Operator identifier and information",
|
|
122
|
+
"legalRef": "ESPR Annex III(h)",
|
|
123
|
+
"bpdm": "operatorInformation",
|
|
124
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#operatorInformation",
|
|
125
|
+
"note": "The operator answering for the passport, which need not be the manufacturer and can change over life."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"key": "manufacturer",
|
|
129
|
+
"label": "Brand name",
|
|
130
|
+
"obligation": "must",
|
|
131
|
+
"access": "public",
|
|
132
|
+
"level": "model",
|
|
133
|
+
"type": "text",
|
|
134
|
+
"onLabel": true,
|
|
135
|
+
"source": "brand",
|
|
136
|
+
"clause": "6.1.2.4",
|
|
137
|
+
"specName": "Manufacturer identifier and information",
|
|
138
|
+
"legalRef": "Annex VI Part A(1); Art. 38(7)",
|
|
139
|
+
"bpdm": "manufacturerInformation",
|
|
140
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#manufacturerInformation",
|
|
141
|
+
"supersedes": "manufacturer"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"key": "manufacturerContact",
|
|
145
|
+
"label": "Brand contact",
|
|
146
|
+
"obligation": "must",
|
|
147
|
+
"access": "public",
|
|
148
|
+
"level": "model",
|
|
149
|
+
"type": "text",
|
|
150
|
+
"onLabel": true,
|
|
151
|
+
"source": "brand",
|
|
152
|
+
"clause": "6.1.2.4",
|
|
153
|
+
"specName": "Manufacturer information (contact point)",
|
|
154
|
+
"legalRef": "Annex VI Part A(1)",
|
|
155
|
+
"bpdm": "manufacturerInformation.emailAddress",
|
|
156
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#manufacturerInformation",
|
|
157
|
+
"supersedes": "manufacturerContact",
|
|
158
|
+
"note": "6.1.2.4(c) wants five parts: name, registered trade name or trademark, postal address with a single contact point, web address, e-mail. Our brand record holds one contact string."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"key": "manufacturingPlace",
|
|
162
|
+
"label": "Place of manufacture",
|
|
163
|
+
"obligation": "must",
|
|
164
|
+
"access": "public",
|
|
165
|
+
"level": "model",
|
|
166
|
+
"type": "record",
|
|
167
|
+
"fields": [
|
|
168
|
+
{
|
|
169
|
+
"key": "site",
|
|
170
|
+
"label": "Plant or city",
|
|
171
|
+
"type": "text"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"key": "country",
|
|
175
|
+
"label": "Country",
|
|
176
|
+
"type": "country",
|
|
177
|
+
"pattern": "^[A-Z]{2}$",
|
|
178
|
+
"patternHint": "A two-letter country code",
|
|
179
|
+
"required": true
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"onLabel": true,
|
|
183
|
+
"source": "form",
|
|
184
|
+
"clause": "6.1.3.1",
|
|
185
|
+
"specName": "Manufacturing place",
|
|
186
|
+
"legalRef": "Annex VI Part A(3)",
|
|
187
|
+
"bpdm": "manufacturingPlace",
|
|
188
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#manufacturingPlace",
|
|
189
|
+
"supersedes": "made",
|
|
190
|
+
"note": "Model level, not unit: it is the plant. A record rather than a sentence, so the country is a code a consumer can group and compare on while the plant stays human-readable. `battery@1` put it on the unit and joined it to the date in one free-text string."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"key": "manufacturingDate",
|
|
194
|
+
"label": "Made",
|
|
195
|
+
"obligation": "must",
|
|
196
|
+
"access": "public",
|
|
197
|
+
"level": "item",
|
|
198
|
+
"type": "date",
|
|
199
|
+
"onLabel": true,
|
|
200
|
+
"source": "form",
|
|
201
|
+
"clause": "6.1.3.2",
|
|
202
|
+
"specName": "Manufacturing date",
|
|
203
|
+
"legalRef": "Annex VI Part A(4)",
|
|
204
|
+
"bpdm": "manufacturingDate",
|
|
205
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#manufacturingDate",
|
|
206
|
+
"supersedes": "made",
|
|
207
|
+
"note": "The spec caps this at month; the product owner asked for the day (2026-07-27). Day precision truncates to month, so a reader expecting 6.1.3.2 loses nothing. Item level, unlike the place."
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"key": "serviceDate",
|
|
211
|
+
"label": "Put into service",
|
|
212
|
+
"obligation": "must",
|
|
213
|
+
"access": "legitimate",
|
|
214
|
+
"level": "item",
|
|
215
|
+
"type": "date",
|
|
216
|
+
"categories": [
|
|
217
|
+
"stationary",
|
|
218
|
+
"lmt"
|
|
219
|
+
],
|
|
220
|
+
"needsBms": true,
|
|
221
|
+
"source": "event",
|
|
222
|
+
"clause": "6.1.3.3",
|
|
223
|
+
"specName": "Date of putting the battery into service",
|
|
224
|
+
"legalRef": "Annex XIII (4)",
|
|
225
|
+
"bpdm": "puttingIntoService",
|
|
226
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#puttingIntoService",
|
|
227
|
+
"note": "Restricted, not public, which is counter-intuitive."
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"key": "warrantyUntil",
|
|
231
|
+
"label": "Guarantee until",
|
|
232
|
+
"obligation": "must",
|
|
233
|
+
"access": "public",
|
|
234
|
+
"level": "model",
|
|
235
|
+
"type": "date",
|
|
236
|
+
"source": "form",
|
|
237
|
+
"clause": "6.1.3.4",
|
|
238
|
+
"specName": "Warranty period of the battery",
|
|
239
|
+
"legalRef": "Annex XIII (1m)",
|
|
240
|
+
"bpdm": "warrentyPeriod",
|
|
241
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#warrentyPeriod",
|
|
242
|
+
"note": "Legal warranty period, or the manufacturer guarantee where longer, from the purchase date. Absent from battery@1."
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"key": "category",
|
|
246
|
+
"label": "Category",
|
|
247
|
+
"obligation": "must",
|
|
248
|
+
"access": "public",
|
|
249
|
+
"level": "model",
|
|
250
|
+
"type": "enum",
|
|
251
|
+
"options": [
|
|
252
|
+
{
|
|
253
|
+
"value": "lmt",
|
|
254
|
+
"label": "Light transport"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"value": "ev",
|
|
258
|
+
"label": "Vehicle"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"value": "industrial",
|
|
262
|
+
"label": "Industrial"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"value": "stationary",
|
|
266
|
+
"label": "Stationary storage"
|
|
267
|
+
}
|
|
268
|
+
],
|
|
269
|
+
"closed": true,
|
|
270
|
+
"onLabel": true,
|
|
271
|
+
"source": "form",
|
|
272
|
+
"clause": "6.1.3.5",
|
|
273
|
+
"specName": "Battery category",
|
|
274
|
+
"legalRef": "Annex VI Part A(2); Art. 3",
|
|
275
|
+
"bpdm": "batteryCategory",
|
|
276
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#batteryCategory",
|
|
277
|
+
"supersedes": "kind",
|
|
278
|
+
"note": "May change when a new passport is issued, for instance an EV battery repurposed into stationary storage. Consumer wording (\"e-bike\") stays in the UI; the payload carries the category."
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"key": "massKg",
|
|
282
|
+
"label": "Mass",
|
|
283
|
+
"obligation": "must",
|
|
284
|
+
"access": "public",
|
|
285
|
+
"level": "model",
|
|
286
|
+
"type": "decimal",
|
|
287
|
+
"unit": "kg",
|
|
288
|
+
"minimum": 0,
|
|
289
|
+
"onLabel": true,
|
|
290
|
+
"source": "form",
|
|
291
|
+
"clause": "6.1.3.6",
|
|
292
|
+
"specName": "Battery mass",
|
|
293
|
+
"legalRef": "Annex VI Part A(5)",
|
|
294
|
+
"bpdm": "batteryMass",
|
|
295
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#batteryMass",
|
|
296
|
+
"supersedes": "weight",
|
|
297
|
+
"note": "The spec says mass, not weight: BattReg says weight, the physically correct quantity is mass (footnote 5, DIN EN ISO 80000-4). Module and cell mass should also be given, for recycling efficiency."
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"key": "status",
|
|
301
|
+
"label": "Status",
|
|
302
|
+
"obligation": "must",
|
|
303
|
+
"access": "legitimate",
|
|
304
|
+
"level": "item",
|
|
305
|
+
"type": "enum",
|
|
306
|
+
"options": [
|
|
307
|
+
{
|
|
308
|
+
"value": "Original",
|
|
309
|
+
"label": "As made"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"value": "Reused",
|
|
313
|
+
"label": "Re-used"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"value": "Repurposed",
|
|
317
|
+
"label": "Repurposed"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"value": "Remanufactured",
|
|
321
|
+
"label": "Remanufactured"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"value": "Waste",
|
|
325
|
+
"label": "Waste"
|
|
326
|
+
}
|
|
327
|
+
],
|
|
328
|
+
"closed": true,
|
|
329
|
+
"dynamic": true,
|
|
330
|
+
"source": "event",
|
|
331
|
+
"clause": "6.1.3.7",
|
|
332
|
+
"specName": "Battery status",
|
|
333
|
+
"legalRef": "Annex XIII 4(c); Art. 77(7)",
|
|
334
|
+
"bpdm": "batteryStatus",
|
|
335
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.GeneralProductInformation:1.2.0#batteryStatus",
|
|
336
|
+
"note": "Our lifecycle already produces this. The spec warns the five words are undefined at source and must travel with a description of the treatments applied."
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"key": "separateCollectionSymbol",
|
|
340
|
+
"label": "Separate collection symbol",
|
|
341
|
+
"obligation": "must",
|
|
342
|
+
"access": "public",
|
|
343
|
+
"level": "model",
|
|
344
|
+
"type": "graphic",
|
|
345
|
+
"onLabel": true,
|
|
346
|
+
"source": "platform",
|
|
347
|
+
"clause": "6.2.2",
|
|
348
|
+
"specName": "Separate collection symbol",
|
|
349
|
+
"legalRef": "Art. 13(4); Annex VI Part B; Annex XIII (1q)",
|
|
350
|
+
"bpdm": "labels",
|
|
351
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Labels:1.2.0#labels",
|
|
352
|
+
"note": "Mandatory on every battery since 18 August 2025. We draw it, nobody types it."
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"key": "elementSymbols",
|
|
356
|
+
"label": "Element symbols",
|
|
357
|
+
"obligation": "must",
|
|
358
|
+
"access": "public",
|
|
359
|
+
"level": "model",
|
|
360
|
+
"type": "graphic",
|
|
361
|
+
"onLabel": true,
|
|
362
|
+
"source": "derived",
|
|
363
|
+
"clause": "6.2.3",
|
|
364
|
+
"specName": "Symbols for cadmium and lead",
|
|
365
|
+
"legalRef": "Art. 13(5); Art. 74(1e); Annex XIII (1s)",
|
|
366
|
+
"bpdm": "labels",
|
|
367
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Labels:1.2.0#labels",
|
|
368
|
+
"note": "Required above 0.002% cadmium or 0.004% lead, so derived from the substance figures."
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"key": "carbonFootprintLabel",
|
|
372
|
+
"label": "Carbon footprint label",
|
|
373
|
+
"obligation": "must",
|
|
374
|
+
"access": "public",
|
|
375
|
+
"level": "model",
|
|
376
|
+
"type": "graphic",
|
|
377
|
+
"onLabel": true,
|
|
378
|
+
"source": "derived",
|
|
379
|
+
"clause": "6.2.4",
|
|
380
|
+
"specName": "Carbon footprint label",
|
|
381
|
+
"legalRef": "Art. 7(2); Annex XIII (1c)",
|
|
382
|
+
"bpdm": "labels",
|
|
383
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Labels:1.2.0#labels"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"key": "extinguishingAgent",
|
|
387
|
+
"label": "Usable extinguishing agent",
|
|
388
|
+
"obligation": "must",
|
|
389
|
+
"access": "public",
|
|
390
|
+
"level": "model",
|
|
391
|
+
"type": "multi",
|
|
392
|
+
"options": [
|
|
393
|
+
{
|
|
394
|
+
"value": "water",
|
|
395
|
+
"label": "Water"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"value": "water-mist",
|
|
399
|
+
"label": "Water mist"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"value": "foam",
|
|
403
|
+
"label": "Foam"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"value": "co2",
|
|
407
|
+
"label": "Carbon dioxide"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"value": "dry-powder-abc",
|
|
411
|
+
"label": "Dry powder, ABC"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"value": "dry-powder-bc",
|
|
415
|
+
"label": "Dry powder, BC"
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"value": "metal-fire-powder",
|
|
419
|
+
"label": "Class D metal-fire powder"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"value": "sand",
|
|
423
|
+
"label": "Dry sand"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"value": "vermiculite",
|
|
427
|
+
"label": "Vermiculite"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"value": "encapsulator",
|
|
431
|
+
"label": "Encapsulating agent"
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
"closed": false,
|
|
435
|
+
"onLabel": true,
|
|
436
|
+
"source": "form",
|
|
437
|
+
"clause": "6.2.5",
|
|
438
|
+
"specName": "Extinguishing agent",
|
|
439
|
+
"legalRef": "Annex VI Part A(9)",
|
|
440
|
+
"note": "Several agents may be usable, so this takes more than one. Open: the Annex requires the agent to be stated but names no vocabulary, and proprietary agents appear faster than a list is revised."
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"key": "labelMeaning",
|
|
444
|
+
"label": "What the symbols mean",
|
|
445
|
+
"obligation": "must",
|
|
446
|
+
"access": "public",
|
|
447
|
+
"level": "model",
|
|
448
|
+
"type": "text",
|
|
449
|
+
"onLabel": true,
|
|
450
|
+
"source": "platform",
|
|
451
|
+
"clause": "6.2.6",
|
|
452
|
+
"specName": "Meaning of labels and symbols",
|
|
453
|
+
"legalRef": "Art. 74(1e); Annex XIII (1s)",
|
|
454
|
+
"note": "Standard explanatory copy, the same for every brand. Ours to write once."
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"key": "declarationOfConformity",
|
|
458
|
+
"label": "Declaration of conformity",
|
|
459
|
+
"obligation": "must",
|
|
460
|
+
"access": "public",
|
|
461
|
+
"level": "model",
|
|
462
|
+
"type": "document",
|
|
463
|
+
"onLabel": true,
|
|
464
|
+
"source": "deferred",
|
|
465
|
+
"clause": "6.2.7",
|
|
466
|
+
"specName": "EU declaration of conformity",
|
|
467
|
+
"legalRef": "Art. 18; Annex XIII (1r)",
|
|
468
|
+
"bpdm": "declarationOfConformity",
|
|
469
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Labels:1.2.0#declarationOfConformity",
|
|
470
|
+
"note": "Public document. Needs the attachment seam we do not have yet."
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"key": "testReports",
|
|
474
|
+
"label": "Test reports",
|
|
475
|
+
"obligation": "must",
|
|
476
|
+
"access": "authority",
|
|
477
|
+
"level": "model",
|
|
478
|
+
"type": "document",
|
|
479
|
+
"source": "deferred",
|
|
480
|
+
"clause": "6.2.8",
|
|
481
|
+
"specName": "Results of test reports proving compliance",
|
|
482
|
+
"legalRef": "Annex XIII (3)",
|
|
483
|
+
"bpdm": "resultOfTestReport",
|
|
484
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Labels:1.2.0#resultOfTestReport",
|
|
485
|
+
"note": "The whole reason the authority tier exists: notified bodies, market surveillance authorities and the Commission, nobody else."
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"key": "carbonFootprint",
|
|
489
|
+
"label": "Declared footprint",
|
|
490
|
+
"obligation": "must",
|
|
491
|
+
"access": "public",
|
|
492
|
+
"level": "model",
|
|
493
|
+
"type": "decimal",
|
|
494
|
+
"unit": "kg CO₂e/kWh",
|
|
495
|
+
"minimum": 0,
|
|
496
|
+
"onLabel": true,
|
|
497
|
+
"source": "form",
|
|
498
|
+
"clause": "6.3.2",
|
|
499
|
+
"specName": "Battery carbon footprint per functional unit",
|
|
500
|
+
"legalRef": "Art. 7(1); Annex XIII",
|
|
501
|
+
"bpdm": "batteryCarbonFootprint",
|
|
502
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#batteryCarbonFootprint",
|
|
503
|
+
"supersedes": "carbonDeclared"
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"key": "carbonRawMaterials",
|
|
507
|
+
"label": "Footprint: raw materials",
|
|
508
|
+
"obligation": "must",
|
|
509
|
+
"access": "public",
|
|
510
|
+
"level": "model",
|
|
511
|
+
"type": "decimal",
|
|
512
|
+
"unit": "kg CO₂e/kWh",
|
|
513
|
+
"minimum": 0,
|
|
514
|
+
"source": "form",
|
|
515
|
+
"clause": "6.3.3",
|
|
516
|
+
"specName": "Contribution of raw material acquisition and pre-processing lifecycle stage",
|
|
517
|
+
"legalRef": "Art. 7(1)",
|
|
518
|
+
"bpdm": "carbonFootprintPerLifecycleStage",
|
|
519
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#carbonFootprintPerLifecycleStage"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"key": "carbonProduction",
|
|
523
|
+
"label": "Footprint: production",
|
|
524
|
+
"obligation": "must",
|
|
525
|
+
"access": "public",
|
|
526
|
+
"level": "model",
|
|
527
|
+
"type": "decimal",
|
|
528
|
+
"unit": "kg CO₂e/kWh",
|
|
529
|
+
"minimum": 0,
|
|
530
|
+
"source": "form",
|
|
531
|
+
"clause": "6.3.4",
|
|
532
|
+
"specName": "Contribution of main product production/manufacturing lifecycle stage",
|
|
533
|
+
"legalRef": "Art. 7(1)",
|
|
534
|
+
"bpdm": "carbonFootprintPerLifecycleStage",
|
|
535
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#carbonFootprintPerLifecycleStage"
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"key": "carbonDistribution",
|
|
539
|
+
"label": "Footprint: distribution",
|
|
540
|
+
"obligation": "must",
|
|
541
|
+
"access": "public",
|
|
542
|
+
"level": "model",
|
|
543
|
+
"type": "decimal",
|
|
544
|
+
"unit": "kg CO₂e/kWh",
|
|
545
|
+
"minimum": 0,
|
|
546
|
+
"source": "form",
|
|
547
|
+
"clause": "6.3.5",
|
|
548
|
+
"specName": "Contribution of distribution lifecycle stage",
|
|
549
|
+
"legalRef": "Art. 7(1)",
|
|
550
|
+
"bpdm": "carbonFootprintPerLifecycleStage",
|
|
551
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#carbonFootprintPerLifecycleStage"
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"key": "carbonEndOfLife",
|
|
555
|
+
"label": "Footprint: end of life",
|
|
556
|
+
"obligation": "must",
|
|
557
|
+
"access": "public",
|
|
558
|
+
"level": "model",
|
|
559
|
+
"type": "decimal",
|
|
560
|
+
"unit": "kg CO₂e/kWh",
|
|
561
|
+
"minimum": 0,
|
|
562
|
+
"source": "form",
|
|
563
|
+
"clause": "6.3.6",
|
|
564
|
+
"specName": "Contribution of end of life and recycling lifecycle stage",
|
|
565
|
+
"legalRef": "Art. 7(1)",
|
|
566
|
+
"bpdm": "carbonFootprintPerLifecycleStage",
|
|
567
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#carbonFootprintPerLifecycleStage"
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"key": "carbonClass",
|
|
571
|
+
"label": "Carbon class",
|
|
572
|
+
"obligation": "must",
|
|
573
|
+
"access": "public",
|
|
574
|
+
"level": "model",
|
|
575
|
+
"type": "text",
|
|
576
|
+
"maxLength": 32,
|
|
577
|
+
"awaitingAct": "Art. 7(2) delegated and implementing acts, not yet adopted",
|
|
578
|
+
"onLabel": true,
|
|
579
|
+
"source": "form",
|
|
580
|
+
"clause": "6.3.7",
|
|
581
|
+
"specName": "Carbon footprint performance class",
|
|
582
|
+
"legalRef": "Art. 7(2); Annex XIII (1c)",
|
|
583
|
+
"bpdm": "carbonFootprintPerformanceClass",
|
|
584
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#carbonFootprintPerformanceClass",
|
|
585
|
+
"supersedes": "carbonClass",
|
|
586
|
+
"note": "The one field that cannot be constrained yet, and the reason is stated rather than worked around: both the class set and the declaration format come from acts under Art. 7(2) that have not been adopted. Offering a guessed A-to-G list would publish our invention as the class scheme. The surface says the format is pending instead of presenting an open box as a free choice. Becomes a closed enum the day the act lands."
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"key": "carbonStudyUrl",
|
|
590
|
+
"label": "Footprint study",
|
|
591
|
+
"obligation": "must",
|
|
592
|
+
"access": "public",
|
|
593
|
+
"level": "model",
|
|
594
|
+
"type": "url",
|
|
595
|
+
"source": "form",
|
|
596
|
+
"clause": "6.3.8",
|
|
597
|
+
"specName": "Web link to public carbon footprint study",
|
|
598
|
+
"legalRef": "Art. 7(1)",
|
|
599
|
+
"bpdm": "carbonFootprintStudy",
|
|
600
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#carbonFootprintStudy",
|
|
601
|
+
"note": "The declaration alone does not discharge the duty; the study has to be reachable."
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"key": "carbonGeneralInfo",
|
|
605
|
+
"label": "Battery and brand information",
|
|
606
|
+
"obligation": "must",
|
|
607
|
+
"access": "public",
|
|
608
|
+
"level": "model",
|
|
609
|
+
"type": "text",
|
|
610
|
+
"source": "derived",
|
|
611
|
+
"clause": "6.3.9",
|
|
612
|
+
"specName": "General battery and manufacturer information",
|
|
613
|
+
"legalRef": "Art. 7(1)",
|
|
614
|
+
"note": "The spec points back at 6.1 and 6.2 rather than adding fields."
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"key": "carbonAbsolute",
|
|
618
|
+
"label": "Total footprint",
|
|
619
|
+
"obligation": "should",
|
|
620
|
+
"access": "public",
|
|
621
|
+
"level": "model",
|
|
622
|
+
"type": "decimal",
|
|
623
|
+
"unit": "t CO₂e",
|
|
624
|
+
"minimum": 0,
|
|
625
|
+
"source": "form",
|
|
626
|
+
"clause": "6.3.10",
|
|
627
|
+
"specName": "Absolute battery carbon footprint",
|
|
628
|
+
"legalRef": "none (spec recommendation)",
|
|
629
|
+
"bpdm": "absoluteCarbonFootprint",
|
|
630
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.CarbonFootprint:1.2.0#absoluteCarbonFootprint"
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
"key": "dueDiligenceReport",
|
|
634
|
+
"label": "Due diligence report",
|
|
635
|
+
"obligation": "must",
|
|
636
|
+
"access": "public",
|
|
637
|
+
"level": "model",
|
|
638
|
+
"type": "document",
|
|
639
|
+
"source": "form",
|
|
640
|
+
"clause": "6.4.2",
|
|
641
|
+
"specName": "Information of due diligence report in the battery passport",
|
|
642
|
+
"legalRef": "Annex XIII (1d); Art. 52(3)",
|
|
643
|
+
"bpdm": "supplyChainDueDiligenceReport",
|
|
644
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.SupplyChainDueDiligence:1.2.0#supplyChainDueDiligenceReport",
|
|
645
|
+
"supersedes": "dueDiligence",
|
|
646
|
+
"note": "battery@1 takes a reference string. The duty is a published report, so a link is the honest minimum."
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"key": "dueDiligenceAssurances",
|
|
650
|
+
"label": "Third-party assurance",
|
|
651
|
+
"obligation": "should",
|
|
652
|
+
"access": "public",
|
|
653
|
+
"level": "model",
|
|
654
|
+
"type": "record",
|
|
655
|
+
"fields": [
|
|
656
|
+
{
|
|
657
|
+
"key": "scheme",
|
|
658
|
+
"label": "Scheme",
|
|
659
|
+
"type": "text",
|
|
660
|
+
"required": true
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
"key": "assurer",
|
|
664
|
+
"label": "Who verified it",
|
|
665
|
+
"type": "text",
|
|
666
|
+
"required": true
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
"key": "reference",
|
|
670
|
+
"label": "Certificate reference",
|
|
671
|
+
"type": "text"
|
|
672
|
+
}
|
|
673
|
+
],
|
|
674
|
+
"repeat": true,
|
|
675
|
+
"source": "form",
|
|
676
|
+
"clause": "6.4.3",
|
|
677
|
+
"specName": "Third-party assurances of recognised schemes",
|
|
678
|
+
"legalRef": "Art. 53",
|
|
679
|
+
"bpdm": "thirdPartyAussurances",
|
|
680
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.SupplyChainDueDiligence:1.2.0#thirdPartyAussurances",
|
|
681
|
+
"note": "A record, because an assurance is only worth what the verifier is worth: naming the scheme without the body that certified against it is unfalsifiable. The scheme name stays open text rather than a list, since recognition itself arrives by implementing and delegated acts under Art. 53."
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
"key": "supplyChainIndices",
|
|
685
|
+
"label": "Supply chain indices",
|
|
686
|
+
"obligation": "should",
|
|
687
|
+
"access": "public",
|
|
688
|
+
"level": "model",
|
|
689
|
+
"type": "text",
|
|
690
|
+
"source": "deferred",
|
|
691
|
+
"clause": "6.4.4",
|
|
692
|
+
"specName": "Supply chain indices",
|
|
693
|
+
"legalRef": "none (spec recommendation)",
|
|
694
|
+
"bpdm": "supplyChainIndicies",
|
|
695
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.SupplyChainDueDiligence:1.2.0#supplyChainIndicies"
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
"key": "chemistry",
|
|
699
|
+
"label": "Chemistry",
|
|
700
|
+
"obligation": "must",
|
|
701
|
+
"access": "public",
|
|
702
|
+
"level": "model",
|
|
703
|
+
"type": "enum",
|
|
704
|
+
"options": [
|
|
705
|
+
{
|
|
706
|
+
"value": "LFP",
|
|
707
|
+
"label": "LFP, lithium iron phosphate"
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
"value": "LMFP",
|
|
711
|
+
"label": "LMFP, lithium manganese iron phosphate"
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
"value": "NMC",
|
|
715
|
+
"label": "NMC, nickel manganese cobalt"
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"value": "NCA",
|
|
719
|
+
"label": "NCA, nickel cobalt aluminium"
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
"value": "LCO",
|
|
723
|
+
"label": "LCO, lithium cobalt oxide"
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"value": "LMO",
|
|
727
|
+
"label": "LMO, lithium manganese oxide"
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"value": "LTO",
|
|
731
|
+
"label": "LTO, lithium titanate"
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
"value": "NA-ION",
|
|
735
|
+
"label": "Sodium-ion"
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"value": "LI-METAL",
|
|
739
|
+
"label": "Lithium metal"
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
"value": "SOLID-STATE",
|
|
743
|
+
"label": "Solid state"
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"value": "PB-ACID",
|
|
747
|
+
"label": "Lead-acid"
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
"value": "NIMH",
|
|
751
|
+
"label": "Nickel metal hydride"
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
"value": "NICD",
|
|
755
|
+
"label": "Nickel cadmium"
|
|
756
|
+
}
|
|
757
|
+
],
|
|
758
|
+
"closed": false,
|
|
759
|
+
"onLabel": true,
|
|
760
|
+
"source": "form",
|
|
761
|
+
"clause": "6.5.2",
|
|
762
|
+
"specName": "Battery chemistry",
|
|
763
|
+
"legalRef": "Annex XIII (1b)",
|
|
764
|
+
"bpdm": "batteryChemistry",
|
|
765
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.MaterialComposition:1.2.0#batteryChemistry",
|
|
766
|
+
"supersedes": "chemistry",
|
|
767
|
+
"note": "An open list, not a closed one: 6.5.2 NOTE records that no unambiguous nomenclature exists yet, so the familiar abbreviations are offered and a value outside them stays valid. The fuller cathode, anode and electrolyte description belongs to electrodeMaterials."
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"key": "criticalRawMaterials",
|
|
771
|
+
"label": "Critical raw materials",
|
|
772
|
+
"obligation": "must",
|
|
773
|
+
"access": "public",
|
|
774
|
+
"level": "model",
|
|
775
|
+
"type": "multi",
|
|
776
|
+
"options": [
|
|
777
|
+
{
|
|
778
|
+
"value": "aluminium",
|
|
779
|
+
"label": "Aluminium / bauxite / alumina"
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
"value": "antimony",
|
|
783
|
+
"label": "Antimony"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"value": "arsenic",
|
|
787
|
+
"label": "Arsenic"
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"value": "baryte",
|
|
791
|
+
"label": "Baryte"
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
"value": "beryllium",
|
|
795
|
+
"label": "Beryllium"
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
"value": "bismuth",
|
|
799
|
+
"label": "Bismuth"
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
"value": "boron",
|
|
803
|
+
"label": "Boron"
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"value": "cobalt",
|
|
807
|
+
"label": "Cobalt"
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"value": "coking-coal",
|
|
811
|
+
"label": "Coking coal"
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
"value": "copper",
|
|
815
|
+
"label": "Copper"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"value": "feldspar",
|
|
819
|
+
"label": "Feldspar"
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
"value": "fluorspar",
|
|
823
|
+
"label": "Fluorspar"
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"value": "gallium",
|
|
827
|
+
"label": "Gallium"
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"value": "germanium",
|
|
831
|
+
"label": "Germanium"
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"value": "hafnium",
|
|
835
|
+
"label": "Hafnium"
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
"value": "helium",
|
|
839
|
+
"label": "Helium"
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"value": "heavy-ree",
|
|
843
|
+
"label": "Rare earths, heavy"
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
"value": "light-ree",
|
|
847
|
+
"label": "Rare earths, light"
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"value": "lithium",
|
|
851
|
+
"label": "Lithium"
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
"value": "magnesium",
|
|
855
|
+
"label": "Magnesium"
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"value": "manganese",
|
|
859
|
+
"label": "Manganese"
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"value": "natural-graphite",
|
|
863
|
+
"label": "Graphite, natural"
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"value": "nickel",
|
|
867
|
+
"label": "Nickel, battery grade"
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
"value": "niobium",
|
|
871
|
+
"label": "Niobium"
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
"value": "pgm",
|
|
875
|
+
"label": "Platinum group metals"
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"value": "phosphate-rock",
|
|
879
|
+
"label": "Phosphate rock"
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"value": "phosphorus",
|
|
883
|
+
"label": "Phosphorus"
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
"value": "scandium",
|
|
887
|
+
"label": "Scandium"
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"value": "silicon-metal",
|
|
891
|
+
"label": "Silicon metal"
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
"value": "strontium",
|
|
895
|
+
"label": "Strontium"
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"value": "tantalum",
|
|
899
|
+
"label": "Tantalum"
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
"value": "titanium-metal",
|
|
903
|
+
"label": "Titanium metal"
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
"value": "tungsten",
|
|
907
|
+
"label": "Tungsten"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
"value": "vanadium",
|
|
911
|
+
"label": "Vanadium"
|
|
912
|
+
}
|
|
913
|
+
],
|
|
914
|
+
"closed": true,
|
|
915
|
+
"onLabel": true,
|
|
916
|
+
"source": "form",
|
|
917
|
+
"clause": "6.5.3",
|
|
918
|
+
"specName": "Critical raw materials",
|
|
919
|
+
"legalRef": "Annex XIII (1b); Annex VI Part A(10)",
|
|
920
|
+
"note": "Those present above 0.1% by weight, selected from Reg. (EU) 2024/1252 Annex II. Closed, because that register is exhaustive by law; it is revised at least every three years, so the mirrored list carries that review duty with it."
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
"key": "electrodeMaterials",
|
|
924
|
+
"label": "Cathode, anode and electrolyte materials",
|
|
925
|
+
"obligation": "must",
|
|
926
|
+
"access": "legitimate",
|
|
927
|
+
"level": "model",
|
|
928
|
+
"type": "record",
|
|
929
|
+
"fields": [
|
|
930
|
+
{
|
|
931
|
+
"key": "component",
|
|
932
|
+
"label": "Component",
|
|
933
|
+
"type": "enum",
|
|
934
|
+
"options": [
|
|
935
|
+
{
|
|
936
|
+
"value": "cathode",
|
|
937
|
+
"label": "Cathode"
|
|
938
|
+
},
|
|
939
|
+
{
|
|
940
|
+
"value": "anode",
|
|
941
|
+
"label": "Anode"
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
"value": "electrolyte",
|
|
945
|
+
"label": "Electrolyte"
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
"value": "separator",
|
|
949
|
+
"label": "Separator"
|
|
950
|
+
},
|
|
951
|
+
{
|
|
952
|
+
"value": "casing",
|
|
953
|
+
"label": "Casing"
|
|
954
|
+
}
|
|
955
|
+
],
|
|
956
|
+
"closed": true,
|
|
957
|
+
"required": true
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"key": "material",
|
|
961
|
+
"label": "Material",
|
|
962
|
+
"type": "text",
|
|
963
|
+
"required": true
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
"key": "share",
|
|
967
|
+
"label": "Share by weight",
|
|
968
|
+
"type": "percent",
|
|
969
|
+
"unit": "%",
|
|
970
|
+
"minimum": 0,
|
|
971
|
+
"maximum": 100
|
|
972
|
+
}
|
|
973
|
+
],
|
|
974
|
+
"repeat": true,
|
|
975
|
+
"source": "form",
|
|
976
|
+
"clause": "6.5.4",
|
|
977
|
+
"specName": "Materials used in cathode, anode and electrolyte",
|
|
978
|
+
"legalRef": "Annex XIII (2a)",
|
|
979
|
+
"bpdm": "batteryMaterials",
|
|
980
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.MaterialComposition:1.2.0#batteryMaterials",
|
|
981
|
+
"note": "The spec names three components, so the component is a closed list while the material stays open: chemistry nomenclature is unsettled (6.5.2 NOTE) but which part of a cell you are describing is not. Separator and casing are included because a dismantler needs them and the Annex says \"used in\", not \"used in only these three\"."
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
"key": "hazardousSubstances",
|
|
985
|
+
"label": "Hazardous substances",
|
|
986
|
+
"obligation": "must",
|
|
987
|
+
"access": "public",
|
|
988
|
+
"level": "model",
|
|
989
|
+
"type": "record",
|
|
990
|
+
"fields": [
|
|
991
|
+
{
|
|
992
|
+
"key": "name",
|
|
993
|
+
"label": "Substance",
|
|
994
|
+
"type": "text",
|
|
995
|
+
"required": true
|
|
996
|
+
},
|
|
997
|
+
{
|
|
998
|
+
"key": "cas",
|
|
999
|
+
"label": "CAS number",
|
|
1000
|
+
"type": "text",
|
|
1001
|
+
"pattern": "^\\d{2,7}-\\d{2}-\\d$",
|
|
1002
|
+
"patternHint": "Two to seven digits, two digits, then a check digit, as in 7439-92-1",
|
|
1003
|
+
"required": true
|
|
1004
|
+
},
|
|
1005
|
+
{
|
|
1006
|
+
"key": "concentration",
|
|
1007
|
+
"label": "Concentration",
|
|
1008
|
+
"type": "percent",
|
|
1009
|
+
"unit": "%",
|
|
1010
|
+
"minimum": 0,
|
|
1011
|
+
"maximum": 100
|
|
1012
|
+
}
|
|
1013
|
+
],
|
|
1014
|
+
"repeat": true,
|
|
1015
|
+
"onLabel": true,
|
|
1016
|
+
"source": "form",
|
|
1017
|
+
"clause": "6.5.5",
|
|
1018
|
+
"specName": "Hazardous substances",
|
|
1019
|
+
"legalRef": "Annex XIII (1b); Annex VI Part A(8)",
|
|
1020
|
+
"bpdm": "hazardousSubstances",
|
|
1021
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.MaterialComposition:1.2.0#hazardousSubstances",
|
|
1022
|
+
"note": "Those other than mercury, cadmium and lead. A repeated record rather than a sentence, because each substance needs its own name and CAS number to be machine-checkable. The CAS check digit is computable, so a consumer can verify the number as well as its shape. No closed substance list: the ECHA candidate list runs to hundreds of entries and is revised twice a year, so mirroring it here would go stale between releases."
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
"key": "substanceImpact",
|
|
1026
|
+
"label": "Effects of those substances",
|
|
1027
|
+
"obligation": "must",
|
|
1028
|
+
"access": "public",
|
|
1029
|
+
"level": "model",
|
|
1030
|
+
"type": "text",
|
|
1031
|
+
"maxLength": 2000,
|
|
1032
|
+
"prose": true,
|
|
1033
|
+
"source": "form",
|
|
1034
|
+
"clause": "6.5.6",
|
|
1035
|
+
"specName": "Impact of substances on environment, human health, safety, persons",
|
|
1036
|
+
"legalRef": "Art. 74(1f)",
|
|
1037
|
+
"note": "Prose by nature, and by duty: Art. 74(1f) requires an explanation of impacts on the environment, human health and safety written for a person to act on. A code list would defeat the purpose of the article."
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
"key": "dismantlingManual",
|
|
1041
|
+
"label": "Dismantling manual",
|
|
1042
|
+
"obligation": "must",
|
|
1043
|
+
"access": "legitimate",
|
|
1044
|
+
"level": "model",
|
|
1045
|
+
"type": "document",
|
|
1046
|
+
"source": "form",
|
|
1047
|
+
"clause": "6.6.1.2",
|
|
1048
|
+
"specName": "Dismantling information: manuals for the removal and the disassembly of the battery pack",
|
|
1049
|
+
"legalRef": "Annex XIII (2c)",
|
|
1050
|
+
"bpdm": "dismantlingAndRemovalInformation",
|
|
1051
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#dismantlingAndRemovalInformation",
|
|
1052
|
+
"supersedes": "dismantling",
|
|
1053
|
+
"note": "The duty is the manual, not a reference to one. battery@1 stores a document number."
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
"key": "partNumbersUrl",
|
|
1057
|
+
"label": "Part numbers",
|
|
1058
|
+
"obligation": "must",
|
|
1059
|
+
"access": "legitimate",
|
|
1060
|
+
"level": "model",
|
|
1061
|
+
"type": "url",
|
|
1062
|
+
"source": "form",
|
|
1063
|
+
"clause": "6.6.1.3",
|
|
1064
|
+
"specName": "Part numbers for components",
|
|
1065
|
+
"legalRef": "Annex XIII (2b)",
|
|
1066
|
+
"bpdm": "sparePartSources.components.partNumber",
|
|
1067
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#sparePartSources"
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
"key": "sparePartsAddress",
|
|
1071
|
+
"label": "Spare parts: postal address",
|
|
1072
|
+
"obligation": "must",
|
|
1073
|
+
"access": "legitimate",
|
|
1074
|
+
"level": "model",
|
|
1075
|
+
"type": "record",
|
|
1076
|
+
"fields": [
|
|
1077
|
+
{
|
|
1078
|
+
"key": "street",
|
|
1079
|
+
"label": "Street",
|
|
1080
|
+
"type": "text",
|
|
1081
|
+
"required": true
|
|
1082
|
+
},
|
|
1083
|
+
{
|
|
1084
|
+
"key": "locality",
|
|
1085
|
+
"label": "Town or city",
|
|
1086
|
+
"type": "text",
|
|
1087
|
+
"required": true
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
"key": "postcode",
|
|
1091
|
+
"label": "Postcode",
|
|
1092
|
+
"type": "text"
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
"key": "region",
|
|
1096
|
+
"label": "State or region",
|
|
1097
|
+
"type": "text"
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"key": "country",
|
|
1101
|
+
"label": "Country",
|
|
1102
|
+
"type": "country",
|
|
1103
|
+
"pattern": "^[A-Z]{2}$",
|
|
1104
|
+
"patternHint": "A two-letter country code",
|
|
1105
|
+
"required": true
|
|
1106
|
+
}
|
|
1107
|
+
],
|
|
1108
|
+
"source": "form",
|
|
1109
|
+
"clause": "6.6.1.4",
|
|
1110
|
+
"specName": "Postal address of sources of spare parts",
|
|
1111
|
+
"legalRef": "Annex XIII (2b)",
|
|
1112
|
+
"bpdm": "sparePartSources.addressOfSupplier",
|
|
1113
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#sparePartSources",
|
|
1114
|
+
"note": "A record rather than one box, so the country is a code and the rest stays as postal services expect. Postcode is optional because several countries have none."
|
|
1115
|
+
},
|
|
1116
|
+
{
|
|
1117
|
+
"key": "sparePartsEmail",
|
|
1118
|
+
"label": "Spare parts: e-mail",
|
|
1119
|
+
"obligation": "must",
|
|
1120
|
+
"access": "legitimate",
|
|
1121
|
+
"level": "model",
|
|
1122
|
+
"type": "text",
|
|
1123
|
+
"pattern": "^[^@\\s]+@[^@\\s.]+(\\.[^@\\s.]+)+$",
|
|
1124
|
+
"patternHint": "An e-mail address",
|
|
1125
|
+
"maxLength": 254,
|
|
1126
|
+
"source": "form",
|
|
1127
|
+
"clause": "6.6.1.4",
|
|
1128
|
+
"specName": "E-mail address of sources of spare parts",
|
|
1129
|
+
"legalRef": "Annex XIII (2b)",
|
|
1130
|
+
"bpdm": "sparePartSources.emailAddressOfSupplier",
|
|
1131
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#sparePartSources",
|
|
1132
|
+
"note": "Deliberately a permissive shape check, not RFC 5322: the aim is to catch a typo before publication, and a pattern strict enough to be correct rejects addresses that work. 254 is the practical maximum length."
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"key": "sparePartsUrl",
|
|
1136
|
+
"label": "Spare parts: web address",
|
|
1137
|
+
"obligation": "must",
|
|
1138
|
+
"access": "legitimate",
|
|
1139
|
+
"level": "model",
|
|
1140
|
+
"type": "url",
|
|
1141
|
+
"source": "form",
|
|
1142
|
+
"clause": "6.6.1.4",
|
|
1143
|
+
"specName": "Web address of sources of spare parts",
|
|
1144
|
+
"legalRef": "Annex XIII (2b)",
|
|
1145
|
+
"bpdm": "sparePartSources.supplierWebAddress",
|
|
1146
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#sparePartSources"
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"key": "safetyMeasures",
|
|
1150
|
+
"label": "Safety measures",
|
|
1151
|
+
"obligation": "must",
|
|
1152
|
+
"access": "legitimate",
|
|
1153
|
+
"level": "model",
|
|
1154
|
+
"type": "document",
|
|
1155
|
+
"source": "form",
|
|
1156
|
+
"clause": "6.6.1.5",
|
|
1157
|
+
"specName": "Safety measures",
|
|
1158
|
+
"legalRef": "Annex XIII (2d)",
|
|
1159
|
+
"bpdm": "safetyMeasures",
|
|
1160
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#safetyMeasures",
|
|
1161
|
+
"note": "Restricted and detailed. Distinct from the public consumer safety line battery@1 carries as `safety`."
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
"key": "recycledShareTotal",
|
|
1165
|
+
"label": "Recycled content",
|
|
1166
|
+
"obligation": "must",
|
|
1167
|
+
"access": "public",
|
|
1168
|
+
"level": "model",
|
|
1169
|
+
"type": "percent",
|
|
1170
|
+
"unit": "%",
|
|
1171
|
+
"minimum": 0,
|
|
1172
|
+
"maximum": 100,
|
|
1173
|
+
"source": "derived",
|
|
1174
|
+
"clause": "6.6.2.2",
|
|
1175
|
+
"specName": "Pre-consumer and post-consumer recycled cobalt, lithium, nickel and lead share",
|
|
1176
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1177
|
+
"bpdm": "recycledContent",
|
|
1178
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent",
|
|
1179
|
+
"supersedes": "recycledContent",
|
|
1180
|
+
"note": "The umbrella figure over the eight splits below. Scoped per model per year per manufacturing plant, which is finer than model level alone. Annex C carries the mandatory targets."
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
"key": "recycledNickelPre",
|
|
1184
|
+
"label": "Nickel, pre-consumer",
|
|
1185
|
+
"obligation": "must",
|
|
1186
|
+
"access": "public",
|
|
1187
|
+
"level": "model",
|
|
1188
|
+
"type": "percent",
|
|
1189
|
+
"unit": "%",
|
|
1190
|
+
"minimum": 0,
|
|
1191
|
+
"maximum": 100,
|
|
1192
|
+
"source": "form",
|
|
1193
|
+
"clause": "6.6.2.3",
|
|
1194
|
+
"specName": "Pre-consumer recycled nickel share",
|
|
1195
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1196
|
+
"bpdm": "recycledContent.preConsumerShare",
|
|
1197
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1198
|
+
},
|
|
1199
|
+
{
|
|
1200
|
+
"key": "recycledCobaltPre",
|
|
1201
|
+
"label": "Cobalt, pre-consumer",
|
|
1202
|
+
"obligation": "must",
|
|
1203
|
+
"access": "public",
|
|
1204
|
+
"level": "model",
|
|
1205
|
+
"type": "percent",
|
|
1206
|
+
"unit": "%",
|
|
1207
|
+
"minimum": 0,
|
|
1208
|
+
"maximum": 100,
|
|
1209
|
+
"source": "form",
|
|
1210
|
+
"clause": "6.6.2.4",
|
|
1211
|
+
"specName": "Pre-consumer recycled cobalt share",
|
|
1212
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1213
|
+
"bpdm": "recycledContent.preConsumerShare",
|
|
1214
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"key": "recycledLithiumPre",
|
|
1218
|
+
"label": "Lithium, pre-consumer",
|
|
1219
|
+
"obligation": "must",
|
|
1220
|
+
"access": "public",
|
|
1221
|
+
"level": "model",
|
|
1222
|
+
"type": "percent",
|
|
1223
|
+
"unit": "%",
|
|
1224
|
+
"minimum": 0,
|
|
1225
|
+
"maximum": 100,
|
|
1226
|
+
"source": "form",
|
|
1227
|
+
"clause": "6.6.2.5",
|
|
1228
|
+
"specName": "Pre-consumer recycled lithium share",
|
|
1229
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1230
|
+
"bpdm": "recycledContent.preConsumerShare",
|
|
1231
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
"key": "recycledLeadPre",
|
|
1235
|
+
"label": "Lead, pre-consumer",
|
|
1236
|
+
"obligation": "must",
|
|
1237
|
+
"access": "public",
|
|
1238
|
+
"level": "model",
|
|
1239
|
+
"type": "percent",
|
|
1240
|
+
"unit": "%",
|
|
1241
|
+
"minimum": 0,
|
|
1242
|
+
"maximum": 100,
|
|
1243
|
+
"source": "form",
|
|
1244
|
+
"clause": "6.6.2.6",
|
|
1245
|
+
"specName": "Pre-consumer recycled lead share",
|
|
1246
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1247
|
+
"bpdm": "recycledContent.preConsumerShare",
|
|
1248
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1249
|
+
},
|
|
1250
|
+
{
|
|
1251
|
+
"key": "recycledNickelPost",
|
|
1252
|
+
"label": "Nickel, post-consumer",
|
|
1253
|
+
"obligation": "must",
|
|
1254
|
+
"access": "public",
|
|
1255
|
+
"level": "model",
|
|
1256
|
+
"type": "percent",
|
|
1257
|
+
"unit": "%",
|
|
1258
|
+
"minimum": 0,
|
|
1259
|
+
"maximum": 100,
|
|
1260
|
+
"source": "form",
|
|
1261
|
+
"clause": "6.6.2.7",
|
|
1262
|
+
"specName": "Post-consumer recycled nickel share",
|
|
1263
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1264
|
+
"bpdm": "recycledContent.postConsumerShare",
|
|
1265
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1266
|
+
},
|
|
1267
|
+
{
|
|
1268
|
+
"key": "recycledCobaltPost",
|
|
1269
|
+
"label": "Cobalt, post-consumer",
|
|
1270
|
+
"obligation": "must",
|
|
1271
|
+
"access": "public",
|
|
1272
|
+
"level": "model",
|
|
1273
|
+
"type": "percent",
|
|
1274
|
+
"unit": "%",
|
|
1275
|
+
"minimum": 0,
|
|
1276
|
+
"maximum": 100,
|
|
1277
|
+
"source": "form",
|
|
1278
|
+
"clause": "6.6.2.8",
|
|
1279
|
+
"specName": "Post-consumer recycled cobalt share",
|
|
1280
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1281
|
+
"bpdm": "recycledContent.postConsumerShare",
|
|
1282
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1283
|
+
},
|
|
1284
|
+
{
|
|
1285
|
+
"key": "recycledLithiumPost",
|
|
1286
|
+
"label": "Lithium, post-consumer",
|
|
1287
|
+
"obligation": "must",
|
|
1288
|
+
"access": "public",
|
|
1289
|
+
"level": "model",
|
|
1290
|
+
"type": "percent",
|
|
1291
|
+
"unit": "%",
|
|
1292
|
+
"minimum": 0,
|
|
1293
|
+
"maximum": 100,
|
|
1294
|
+
"source": "form",
|
|
1295
|
+
"clause": "6.6.2.9",
|
|
1296
|
+
"specName": "Post-consumer recycled lithium share",
|
|
1297
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1298
|
+
"bpdm": "recycledContent.postConsumerShare",
|
|
1299
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1300
|
+
},
|
|
1301
|
+
{
|
|
1302
|
+
"key": "recycledLeadPost",
|
|
1303
|
+
"label": "Lead, post-consumer",
|
|
1304
|
+
"obligation": "must",
|
|
1305
|
+
"access": "public",
|
|
1306
|
+
"level": "model",
|
|
1307
|
+
"type": "percent",
|
|
1308
|
+
"unit": "%",
|
|
1309
|
+
"minimum": 0,
|
|
1310
|
+
"maximum": 100,
|
|
1311
|
+
"source": "form",
|
|
1312
|
+
"clause": "6.6.2.10",
|
|
1313
|
+
"specName": "Post-consumer recycled lead share",
|
|
1314
|
+
"legalRef": "Annex XIII (1e); Art. 8(1)",
|
|
1315
|
+
"bpdm": "recycledContent.postConsumerShare",
|
|
1316
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#recycledContent"
|
|
1317
|
+
},
|
|
1318
|
+
{
|
|
1319
|
+
"key": "renewableShare",
|
|
1320
|
+
"label": "Renewable content",
|
|
1321
|
+
"obligation": "must",
|
|
1322
|
+
"access": "public",
|
|
1323
|
+
"level": "model",
|
|
1324
|
+
"type": "percent",
|
|
1325
|
+
"unit": "%",
|
|
1326
|
+
"minimum": 0,
|
|
1327
|
+
"maximum": 100,
|
|
1328
|
+
"source": "form",
|
|
1329
|
+
"clause": "6.6.2.11",
|
|
1330
|
+
"specName": "Renewable content share",
|
|
1331
|
+
"legalRef": "Annex XIII (1f)",
|
|
1332
|
+
"bpdm": "renewableContent",
|
|
1333
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#renewableContent"
|
|
1334
|
+
},
|
|
1335
|
+
{
|
|
1336
|
+
"key": "endUserWastePrevention",
|
|
1337
|
+
"label": "Making it last",
|
|
1338
|
+
"obligation": "must",
|
|
1339
|
+
"access": "public",
|
|
1340
|
+
"level": "model",
|
|
1341
|
+
"type": "text",
|
|
1342
|
+
"maxLength": 500,
|
|
1343
|
+
"prose": true,
|
|
1344
|
+
"source": "form",
|
|
1345
|
+
"clause": "6.6.3.2",
|
|
1346
|
+
"specName": "Information on the role of end-users in contributing to waste prevention",
|
|
1347
|
+
"legalRef": "Annex XIII (1s); Art. 74(1a)",
|
|
1348
|
+
"bpdm": "endOfLifeInformation",
|
|
1349
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#endOfLifeInformation",
|
|
1350
|
+
"note": "Information, not a document. The clause asks what the end user should do; a sentence on the passport answers that where a linked PDF defers it. Typed as a document until 2026-07-28, which is why the consumer page carried three labels with nothing behind them: the attachment seam is G16, so a document can only be a link, and a sample can only ever declare a reserved host. A brand holding a real document declares its URL here and the surface links it, because the care block sorts on the value rather than the type."
|
|
1351
|
+
},
|
|
1352
|
+
{
|
|
1353
|
+
"key": "endUserCollection",
|
|
1354
|
+
"label": "Where to return it",
|
|
1355
|
+
"obligation": "must",
|
|
1356
|
+
"access": "public",
|
|
1357
|
+
"level": "model",
|
|
1358
|
+
"type": "text",
|
|
1359
|
+
"maxLength": 500,
|
|
1360
|
+
"prose": true,
|
|
1361
|
+
"source": "form",
|
|
1362
|
+
"clause": "6.6.3.3",
|
|
1363
|
+
"specName": "Information on the role of end-users in contributing to the separate collection of waste batteries",
|
|
1364
|
+
"legalRef": "Annex XIII (1s); Art. 74",
|
|
1365
|
+
"bpdm": "endOfLifeInformation",
|
|
1366
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#endOfLifeInformation",
|
|
1367
|
+
"supersedes": "collection",
|
|
1368
|
+
"note": "battery@1 carried this as a sentence, which reads better on a consumer page than a linked PDF. Retyped from document to text on 2026-07-28 to do what that note asked for, matching the textile registry, which answers the same question in prose and reads the better for it."
|
|
1369
|
+
},
|
|
1370
|
+
{
|
|
1371
|
+
"key": "endOfLifeTreatment",
|
|
1372
|
+
"label": "End of life",
|
|
1373
|
+
"obligation": "must",
|
|
1374
|
+
"access": "public",
|
|
1375
|
+
"level": "model",
|
|
1376
|
+
"type": "text",
|
|
1377
|
+
"maxLength": 500,
|
|
1378
|
+
"prose": true,
|
|
1379
|
+
"source": "form",
|
|
1380
|
+
"clause": "6.6.3.4",
|
|
1381
|
+
"specName": "Information on battery collection, preparation for second life and on treatment at end of life",
|
|
1382
|
+
"legalRef": "Annex XIII (1s); Art. 74",
|
|
1383
|
+
"bpdm": "endOfLifeInformation",
|
|
1384
|
+
"bpdmUrn": "urn:samm:io.BatteryPass.Circularity:1.2.0#endOfLifeInformation",
|
|
1385
|
+
"note": "Retyped with the other two end-user clauses on 2026-07-28. What actually happens to the battery is a thing a reader can be told in three sentences, and a document reference tells them nothing at all until they open it."
|
|
1386
|
+
},
|
|
1387
|
+
{
|
|
1388
|
+
"key": "ratedCapacityAh",
|
|
1389
|
+
"label": "Rated capacity",
|
|
1390
|
+
"obligation": "must",
|
|
1391
|
+
"access": "public",
|
|
1392
|
+
"level": "model",
|
|
1393
|
+
"type": "decimal",
|
|
1394
|
+
"unit": "Ah",
|
|
1395
|
+
"minimum": 0,
|
|
1396
|
+
"onLabel": true,
|
|
1397
|
+
"source": "form",
|
|
1398
|
+
"clause": "6.7.2.2",
|
|
1399
|
+
"specName": "Rated capacity",
|
|
1400
|
+
"legalRef": "Annex IV Part A(1); Annex VI Part A(6)",
|
|
1401
|
+
"supersedes": "ratedCapacity",
|
|
1402
|
+
"note": "Ampere-hours. battery@1 held a free string and the sample filled it with 630 Wh, which is energy: a different attribute (6.7.2.5)."
|
|
1403
|
+
},
|
|
1404
|
+
{
|
|
1405
|
+
"key": "remainingCapacityAh",
|
|
1406
|
+
"label": "Remaining capacity",
|
|
1407
|
+
"obligation": "must",
|
|
1408
|
+
"access": "legitimate",
|
|
1409
|
+
"level": "item",
|
|
1410
|
+
"type": "decimal",
|
|
1411
|
+
"unit": "Ah",
|
|
1412
|
+
"minimum": 0,
|
|
1413
|
+
"categories": [
|
|
1414
|
+
"stationary",
|
|
1415
|
+
"lmt"
|
|
1416
|
+
],
|
|
1417
|
+
"needsBms": true,
|
|
1418
|
+
"dynamic": true,
|
|
1419
|
+
"source": "event",
|
|
1420
|
+
"clause": "6.7.2.3",
|
|
1421
|
+
"specName": "Remaining capacity",
|
|
1422
|
+
"legalRef": "Annex VII Part A(1)"
|
|
1423
|
+
},
|
|
1424
|
+
{
|
|
1425
|
+
"key": "capacityFade",
|
|
1426
|
+
"label": "Capacity fade",
|
|
1427
|
+
"obligation": "must",
|
|
1428
|
+
"access": "legitimate",
|
|
1429
|
+
"level": "model",
|
|
1430
|
+
"type": "percent",
|
|
1431
|
+
"unit": "%",
|
|
1432
|
+
"minimum": 0,
|
|
1433
|
+
"maximum": 100,
|
|
1434
|
+
"source": "form",
|
|
1435
|
+
"clause": "6.7.2.4",
|
|
1436
|
+
"specName": "Capacity fade",
|
|
1437
|
+
"legalRef": "Annex IV Part A(1)",
|
|
1438
|
+
"supersedes": "capacityFade",
|
|
1439
|
+
"note": "Model level and static in the spec: the declared fade characteristic, not this unit’s measured loss."
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
"key": "certifiedEnergyKwh",
|
|
1443
|
+
"label": "Usable energy",
|
|
1444
|
+
"obligation": "should",
|
|
1445
|
+
"access": "legitimate",
|
|
1446
|
+
"level": "model",
|
|
1447
|
+
"type": "decimal",
|
|
1448
|
+
"unit": "kWh",
|
|
1449
|
+
"minimum": 0,
|
|
1450
|
+
"categories": [
|
|
1451
|
+
"ev"
|
|
1452
|
+
],
|
|
1453
|
+
"source": "form",
|
|
1454
|
+
"clause": "6.7.2.5",
|
|
1455
|
+
"specName": "Certified usable battery energy",
|
|
1456
|
+
"legalRef": "added by the consortium, based on UN GTR No 22"
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
"key": "remainingEnergyKwh",
|
|
1460
|
+
"label": "Remaining usable energy",
|
|
1461
|
+
"obligation": "should",
|
|
1462
|
+
"access": "legitimate",
|
|
1463
|
+
"level": "item",
|
|
1464
|
+
"type": "decimal",
|
|
1465
|
+
"unit": "kWh",
|
|
1466
|
+
"minimum": 0,
|
|
1467
|
+
"categories": [
|
|
1468
|
+
"ev"
|
|
1469
|
+
],
|
|
1470
|
+
"dynamic": true,
|
|
1471
|
+
"source": "event",
|
|
1472
|
+
"clause": "6.7.2.6",
|
|
1473
|
+
"specName": "Remaining usable battery energy",
|
|
1474
|
+
"legalRef": "added by the consortium, based on UN GTR No 22"
|
|
1475
|
+
},
|
|
1476
|
+
{
|
|
1477
|
+
"key": "soce",
|
|
1478
|
+
"label": "State of certified energy",
|
|
1479
|
+
"obligation": "must",
|
|
1480
|
+
"access": "legitimate",
|
|
1481
|
+
"level": "item",
|
|
1482
|
+
"type": "percent",
|
|
1483
|
+
"unit": "%",
|
|
1484
|
+
"minimum": 0,
|
|
1485
|
+
"maximum": 100,
|
|
1486
|
+
"categories": [
|
|
1487
|
+
"ev"
|
|
1488
|
+
],
|
|
1489
|
+
"needsBms": true,
|
|
1490
|
+
"dynamic": true,
|
|
1491
|
+
"source": "event",
|
|
1492
|
+
"clause": "6.7.2.7",
|
|
1493
|
+
"specName": "State of certified energy (SOCE)",
|
|
1494
|
+
"legalRef": "UN GTR No 22"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
"key": "stateOfCharge",
|
|
1498
|
+
"label": "State of charge",
|
|
1499
|
+
"obligation": "must",
|
|
1500
|
+
"access": "legitimate",
|
|
1501
|
+
"level": "item",
|
|
1502
|
+
"type": "percent",
|
|
1503
|
+
"unit": "%",
|
|
1504
|
+
"minimum": 0,
|
|
1505
|
+
"maximum": 100,
|
|
1506
|
+
"dynamic": true,
|
|
1507
|
+
"source": "event",
|
|
1508
|
+
"clause": "6.7.2.8",
|
|
1509
|
+
"specName": "State of charge (SoC)",
|
|
1510
|
+
"legalRef": "Annex XIII 4(d)"
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
"key": "voltageMin",
|
|
1514
|
+
"label": "Minimum voltage",
|
|
1515
|
+
"obligation": "must",
|
|
1516
|
+
"access": "public",
|
|
1517
|
+
"level": "model",
|
|
1518
|
+
"type": "decimal",
|
|
1519
|
+
"unit": "V",
|
|
1520
|
+
"minimum": 0,
|
|
1521
|
+
"source": "form",
|
|
1522
|
+
"clause": "6.7.2.9",
|
|
1523
|
+
"specName": "Minimum voltage",
|
|
1524
|
+
"legalRef": "Annex XIII (1h)"
|
|
1525
|
+
},
|
|
1526
|
+
{
|
|
1527
|
+
"key": "voltageMax",
|
|
1528
|
+
"label": "Maximum voltage",
|
|
1529
|
+
"obligation": "must",
|
|
1530
|
+
"access": "public",
|
|
1531
|
+
"level": "model",
|
|
1532
|
+
"type": "decimal",
|
|
1533
|
+
"unit": "V",
|
|
1534
|
+
"minimum": 0,
|
|
1535
|
+
"source": "form",
|
|
1536
|
+
"clause": "6.7.2.10",
|
|
1537
|
+
"specName": "Maximum voltage",
|
|
1538
|
+
"legalRef": "Annex XIII (1h)"
|
|
1539
|
+
},
|
|
1540
|
+
{
|
|
1541
|
+
"key": "voltageNominal",
|
|
1542
|
+
"label": "Nominal voltage",
|
|
1543
|
+
"obligation": "must",
|
|
1544
|
+
"access": "public",
|
|
1545
|
+
"level": "model",
|
|
1546
|
+
"type": "decimal",
|
|
1547
|
+
"unit": "V",
|
|
1548
|
+
"minimum": 0,
|
|
1549
|
+
"source": "form",
|
|
1550
|
+
"clause": "6.7.2.11",
|
|
1551
|
+
"specName": "Nominal voltage",
|
|
1552
|
+
"legalRef": "Annex XIII (1h)"
|
|
1553
|
+
},
|
|
1554
|
+
{
|
|
1555
|
+
"key": "powerOriginal",
|
|
1556
|
+
"label": "Original power",
|
|
1557
|
+
"obligation": "must",
|
|
1558
|
+
"access": "public",
|
|
1559
|
+
"level": "model",
|
|
1560
|
+
"type": "integer",
|
|
1561
|
+
"unit": "W",
|
|
1562
|
+
"minimum": 0,
|
|
1563
|
+
"step": 1,
|
|
1564
|
+
"source": "form",
|
|
1565
|
+
"clause": "6.7.3.2",
|
|
1566
|
+
"specName": "Original power capability",
|
|
1567
|
+
"legalRef": "Annex XIII (1i)"
|
|
1568
|
+
},
|
|
1569
|
+
{
|
|
1570
|
+
"key": "powerRemaining",
|
|
1571
|
+
"label": "Remaining power",
|
|
1572
|
+
"obligation": "must",
|
|
1573
|
+
"access": "legitimate",
|
|
1574
|
+
"level": "item",
|
|
1575
|
+
"type": "integer",
|
|
1576
|
+
"unit": "W",
|
|
1577
|
+
"minimum": 0,
|
|
1578
|
+
"step": 1,
|
|
1579
|
+
"categories": [
|
|
1580
|
+
"stationary",
|
|
1581
|
+
"lmt"
|
|
1582
|
+
],
|
|
1583
|
+
"dynamic": true,
|
|
1584
|
+
"source": "event",
|
|
1585
|
+
"clause": "6.7.3.3",
|
|
1586
|
+
"specName": "Remaining power capability",
|
|
1587
|
+
"legalRef": "Annex VII Part A(2); Annex IV"
|
|
1588
|
+
},
|
|
1589
|
+
{
|
|
1590
|
+
"key": "powerFade",
|
|
1591
|
+
"label": "Power fade",
|
|
1592
|
+
"obligation": "must",
|
|
1593
|
+
"access": "legitimate",
|
|
1594
|
+
"level": "model",
|
|
1595
|
+
"type": "percent",
|
|
1596
|
+
"unit": "%",
|
|
1597
|
+
"minimum": 0,
|
|
1598
|
+
"maximum": 100,
|
|
1599
|
+
"source": "form",
|
|
1600
|
+
"clause": "6.7.3.4",
|
|
1601
|
+
"specName": "Power fade",
|
|
1602
|
+
"legalRef": "Annex IV Part A(2)"
|
|
1603
|
+
},
|
|
1604
|
+
{
|
|
1605
|
+
"key": "powerMax",
|
|
1606
|
+
"label": "Maximum permitted power",
|
|
1607
|
+
"obligation": "must",
|
|
1608
|
+
"access": "public",
|
|
1609
|
+
"level": "model",
|
|
1610
|
+
"type": "integer",
|
|
1611
|
+
"unit": "W",
|
|
1612
|
+
"minimum": 0,
|
|
1613
|
+
"step": 1,
|
|
1614
|
+
"source": "form",
|
|
1615
|
+
"clause": "6.7.3.5",
|
|
1616
|
+
"specName": "Maximum permitted battery power",
|
|
1617
|
+
"legalRef": "Annex XIII (1i)"
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"key": "powerToEnergy",
|
|
1621
|
+
"label": "Power to energy ratio",
|
|
1622
|
+
"obligation": "should",
|
|
1623
|
+
"access": "legitimate",
|
|
1624
|
+
"level": "model",
|
|
1625
|
+
"type": "decimal",
|
|
1626
|
+
"unit": "W/Wh",
|
|
1627
|
+
"minimum": 0,
|
|
1628
|
+
"source": "form",
|
|
1629
|
+
"clause": "6.7.3.6",
|
|
1630
|
+
"specName": "Ratio between nominal battery power and battery energy",
|
|
1631
|
+
"legalRef": "Annex IV Part B(2)"
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
"key": "roundTripInitial",
|
|
1635
|
+
"label": "Round trip efficiency, initial",
|
|
1636
|
+
"obligation": "must",
|
|
1637
|
+
"access": "public",
|
|
1638
|
+
"level": "model",
|
|
1639
|
+
"type": "percent",
|
|
1640
|
+
"unit": "%",
|
|
1641
|
+
"minimum": 0,
|
|
1642
|
+
"maximum": 100,
|
|
1643
|
+
"source": "form",
|
|
1644
|
+
"clause": "6.7.4.2",
|
|
1645
|
+
"specName": "Initial round trip energy efficiency",
|
|
1646
|
+
"legalRef": "Annex XIII (1n)"
|
|
1647
|
+
},
|
|
1648
|
+
{
|
|
1649
|
+
"key": "roundTripAtHalfLife",
|
|
1650
|
+
"label": "Round trip efficiency at half life",
|
|
1651
|
+
"obligation": "must",
|
|
1652
|
+
"access": "public",
|
|
1653
|
+
"level": "model",
|
|
1654
|
+
"type": "percent",
|
|
1655
|
+
"unit": "%",
|
|
1656
|
+
"minimum": 0,
|
|
1657
|
+
"maximum": 100,
|
|
1658
|
+
"source": "form",
|
|
1659
|
+
"clause": "6.7.4.3",
|
|
1660
|
+
"specName": "Round trip energy efficiency at 50% of cycle-life",
|
|
1661
|
+
"legalRef": "Annex XIII (1n)"
|
|
1662
|
+
},
|
|
1663
|
+
{
|
|
1664
|
+
"key": "roundTripRemaining",
|
|
1665
|
+
"label": "Round trip efficiency, remaining",
|
|
1666
|
+
"obligation": "must",
|
|
1667
|
+
"access": "legitimate",
|
|
1668
|
+
"level": "item",
|
|
1669
|
+
"type": "percent",
|
|
1670
|
+
"unit": "%",
|
|
1671
|
+
"minimum": 0,
|
|
1672
|
+
"maximum": 100,
|
|
1673
|
+
"categories": [
|
|
1674
|
+
"stationary"
|
|
1675
|
+
],
|
|
1676
|
+
"dynamic": true,
|
|
1677
|
+
"source": "event",
|
|
1678
|
+
"clause": "6.7.4.4",
|
|
1679
|
+
"specName": "Remaining round trip energy efficiency",
|
|
1680
|
+
"legalRef": "Annex VII Part A(3)"
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
"key": "roundTripFade",
|
|
1684
|
+
"label": "Round trip efficiency fade",
|
|
1685
|
+
"obligation": "must",
|
|
1686
|
+
"access": "legitimate",
|
|
1687
|
+
"level": "model",
|
|
1688
|
+
"type": "percent",
|
|
1689
|
+
"unit": "%",
|
|
1690
|
+
"minimum": 0,
|
|
1691
|
+
"maximum": 100,
|
|
1692
|
+
"source": "form",
|
|
1693
|
+
"clause": "6.7.4.5",
|
|
1694
|
+
"specName": "Energy round trip efficiency fade",
|
|
1695
|
+
"legalRef": "Annex IV Part A(4)"
|
|
1696
|
+
},
|
|
1697
|
+
{
|
|
1698
|
+
"key": "selfDischargeInitial",
|
|
1699
|
+
"label": "Self-discharge, initial",
|
|
1700
|
+
"obligation": "should",
|
|
1701
|
+
"access": "legitimate",
|
|
1702
|
+
"level": "model",
|
|
1703
|
+
"type": "decimal",
|
|
1704
|
+
"unit": "%/month",
|
|
1705
|
+
"minimum": 0,
|
|
1706
|
+
"categories": [
|
|
1707
|
+
"stationary"
|
|
1708
|
+
],
|
|
1709
|
+
"source": "form",
|
|
1710
|
+
"clause": "6.7.4.6",
|
|
1711
|
+
"specName": "Initial self-discharge rate",
|
|
1712
|
+
"legalRef": "Annex VII Part A(4)"
|
|
1713
|
+
},
|
|
1714
|
+
{
|
|
1715
|
+
"key": "selfDischargeCurrent",
|
|
1716
|
+
"label": "Self-discharge, current",
|
|
1717
|
+
"obligation": "should",
|
|
1718
|
+
"access": "legitimate",
|
|
1719
|
+
"level": "item",
|
|
1720
|
+
"type": "decimal",
|
|
1721
|
+
"unit": "%/month",
|
|
1722
|
+
"minimum": 0,
|
|
1723
|
+
"categories": [
|
|
1724
|
+
"stationary"
|
|
1725
|
+
],
|
|
1726
|
+
"dynamic": true,
|
|
1727
|
+
"source": "event",
|
|
1728
|
+
"clause": "6.7.4.7",
|
|
1729
|
+
"specName": "Current self-discharge rate",
|
|
1730
|
+
"legalRef": "Annex VII Part A(4)"
|
|
1731
|
+
},
|
|
1732
|
+
{
|
|
1733
|
+
"key": "selfDischargeEvolution",
|
|
1734
|
+
"label": "Self-discharge over time",
|
|
1735
|
+
"obligation": "must",
|
|
1736
|
+
"access": "legitimate",
|
|
1737
|
+
"level": "item",
|
|
1738
|
+
"type": "percent",
|
|
1739
|
+
"unit": "%",
|
|
1740
|
+
"minimum": 0,
|
|
1741
|
+
"maximum": 100,
|
|
1742
|
+
"categories": [
|
|
1743
|
+
"stationary"
|
|
1744
|
+
],
|
|
1745
|
+
"dynamic": true,
|
|
1746
|
+
"source": "event",
|
|
1747
|
+
"clause": "6.7.4.8",
|
|
1748
|
+
"specName": "Evolution of self-discharge rates",
|
|
1749
|
+
"legalRef": "Annex VII Part A(4)"
|
|
1750
|
+
},
|
|
1751
|
+
{
|
|
1752
|
+
"key": "resistancePack",
|
|
1753
|
+
"label": "Internal resistance, pack",
|
|
1754
|
+
"obligation": "must",
|
|
1755
|
+
"access": "public",
|
|
1756
|
+
"level": "model",
|
|
1757
|
+
"type": "decimal",
|
|
1758
|
+
"unit": "Ω",
|
|
1759
|
+
"minimum": 0,
|
|
1760
|
+
"source": "form",
|
|
1761
|
+
"clause": "6.7.5.2",
|
|
1762
|
+
"specName": "Initial internal resistance of battery pack",
|
|
1763
|
+
"legalRef": "Annex XIII (1o)",
|
|
1764
|
+
"note": "Decimal, not an integer: an internal resistance is tens of milliohms, so whole ohms would round every honest value to nought. The unit stays as the spec declares it and the type stops discarding the quantity."
|
|
1765
|
+
},
|
|
1766
|
+
{
|
|
1767
|
+
"key": "resistanceCell",
|
|
1768
|
+
"label": "Internal resistance, cell",
|
|
1769
|
+
"obligation": "must",
|
|
1770
|
+
"access": "public",
|
|
1771
|
+
"level": "model",
|
|
1772
|
+
"type": "decimal",
|
|
1773
|
+
"unit": "Ω",
|
|
1774
|
+
"minimum": 0,
|
|
1775
|
+
"source": "form",
|
|
1776
|
+
"clause": "6.7.5.2",
|
|
1777
|
+
"specName": "Initial internal resistance of battery cell",
|
|
1778
|
+
"legalRef": "Annex XIII (1o)",
|
|
1779
|
+
"note": "Decimal, not an integer: an internal resistance is tens of milliohms, so whole ohms would round every honest value to nought. The unit stays as the spec declares it and the type stops discarding the quantity."
|
|
1780
|
+
},
|
|
1781
|
+
{
|
|
1782
|
+
"key": "resistanceModule",
|
|
1783
|
+
"label": "Internal resistance, module",
|
|
1784
|
+
"obligation": "should",
|
|
1785
|
+
"access": "public",
|
|
1786
|
+
"level": "model",
|
|
1787
|
+
"type": "decimal",
|
|
1788
|
+
"unit": "Ω",
|
|
1789
|
+
"minimum": 0,
|
|
1790
|
+
"source": "form",
|
|
1791
|
+
"clause": "6.7.5.2",
|
|
1792
|
+
"specName": "Initial internal resistance of battery module",
|
|
1793
|
+
"legalRef": "Annex XIII (1o)",
|
|
1794
|
+
"note": "Decimal, not an integer: an internal resistance is tens of milliohms, so whole ohms would round every honest value to nought. The unit stays as the spec declares it and the type stops discarding the quantity."
|
|
1795
|
+
},
|
|
1796
|
+
{
|
|
1797
|
+
"key": "resistanceIncreasePack",
|
|
1798
|
+
"label": "Resistance increase, pack",
|
|
1799
|
+
"obligation": "must",
|
|
1800
|
+
"access": "legitimate",
|
|
1801
|
+
"level": "model",
|
|
1802
|
+
"type": "percent",
|
|
1803
|
+
"unit": "%",
|
|
1804
|
+
"minimum": 0,
|
|
1805
|
+
"maximum": 100,
|
|
1806
|
+
"source": "form",
|
|
1807
|
+
"clause": "6.7.5.3",
|
|
1808
|
+
"specName": "Internal resistance increase of battery pack",
|
|
1809
|
+
"legalRef": "Annex IV Part A(3)"
|
|
1810
|
+
},
|
|
1811
|
+
{
|
|
1812
|
+
"key": "resistanceIncreaseCell",
|
|
1813
|
+
"label": "Resistance increase, cell",
|
|
1814
|
+
"obligation": "should",
|
|
1815
|
+
"access": "legitimate",
|
|
1816
|
+
"level": "model",
|
|
1817
|
+
"type": "percent",
|
|
1818
|
+
"unit": "%",
|
|
1819
|
+
"minimum": 0,
|
|
1820
|
+
"maximum": 100,
|
|
1821
|
+
"source": "form",
|
|
1822
|
+
"clause": "6.7.5.3",
|
|
1823
|
+
"specName": "Internal resistance increase of battery cell",
|
|
1824
|
+
"legalRef": "Annex IV Part A(3)"
|
|
1825
|
+
},
|
|
1826
|
+
{
|
|
1827
|
+
"key": "resistanceIncreaseModule",
|
|
1828
|
+
"label": "Resistance increase, module",
|
|
1829
|
+
"obligation": "should",
|
|
1830
|
+
"access": "legitimate",
|
|
1831
|
+
"level": "model",
|
|
1832
|
+
"type": "percent",
|
|
1833
|
+
"unit": "%",
|
|
1834
|
+
"minimum": 0,
|
|
1835
|
+
"maximum": 100,
|
|
1836
|
+
"source": "form",
|
|
1837
|
+
"clause": "6.7.5.3",
|
|
1838
|
+
"specName": "Internal resistance increase of battery module",
|
|
1839
|
+
"legalRef": "Annex IV Part A(3)"
|
|
1840
|
+
},
|
|
1841
|
+
{
|
|
1842
|
+
"key": "expectedYears",
|
|
1843
|
+
"label": "Expected life in years",
|
|
1844
|
+
"obligation": "must",
|
|
1845
|
+
"access": "legitimate",
|
|
1846
|
+
"level": "model",
|
|
1847
|
+
"type": "decimal",
|
|
1848
|
+
"unit": "years",
|
|
1849
|
+
"minimum": 0,
|
|
1850
|
+
"source": "form",
|
|
1851
|
+
"clause": "6.7.6.2",
|
|
1852
|
+
"specName": "Expected lifetime in calendar years",
|
|
1853
|
+
"legalRef": "Annex IV Part A(5)",
|
|
1854
|
+
"note": "Restricted, while the cycle count below is public."
|
|
1855
|
+
},
|
|
1856
|
+
{
|
|
1857
|
+
"key": "expectedCycles",
|
|
1858
|
+
"label": "Expected life in cycles",
|
|
1859
|
+
"obligation": "must",
|
|
1860
|
+
"access": "public",
|
|
1861
|
+
"level": "model",
|
|
1862
|
+
"type": "integer",
|
|
1863
|
+
"minimum": 0,
|
|
1864
|
+
"step": 1,
|
|
1865
|
+
"source": "form",
|
|
1866
|
+
"clause": "6.7.6.3",
|
|
1867
|
+
"specName": "Expected lifetime: number of charge-discharge cycles",
|
|
1868
|
+
"legalRef": "Annex XIII (1j)",
|
|
1869
|
+
"supersedes": "expectedLife"
|
|
1870
|
+
},
|
|
1871
|
+
{
|
|
1872
|
+
"key": "cyclesUsed",
|
|
1873
|
+
"label": "Cycles so far",
|
|
1874
|
+
"obligation": "must",
|
|
1875
|
+
"access": "legitimate",
|
|
1876
|
+
"level": "item",
|
|
1877
|
+
"type": "integer",
|
|
1878
|
+
"minimum": 0,
|
|
1879
|
+
"step": 1,
|
|
1880
|
+
"dynamic": true,
|
|
1881
|
+
"source": "event",
|
|
1882
|
+
"clause": "6.7.6.4",
|
|
1883
|
+
"specName": "Number of full charging and discharging cycles",
|
|
1884
|
+
"legalRef": "Annex XIII (4d)",
|
|
1885
|
+
"supersedes": "chargeCycles"
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
"key": "cycleLifeTest",
|
|
1889
|
+
"label": "Cycle life test used",
|
|
1890
|
+
"obligation": "must",
|
|
1891
|
+
"access": "public",
|
|
1892
|
+
"level": "model",
|
|
1893
|
+
"type": "enum",
|
|
1894
|
+
"options": [
|
|
1895
|
+
{
|
|
1896
|
+
"value": "IEC-61960-3",
|
|
1897
|
+
"label": "IEC 61960-3"
|
|
1898
|
+
},
|
|
1899
|
+
{
|
|
1900
|
+
"value": "IEC-62660-1",
|
|
1901
|
+
"label": "IEC 62660-1"
|
|
1902
|
+
},
|
|
1903
|
+
{
|
|
1904
|
+
"value": "IEC-62620",
|
|
1905
|
+
"label": "IEC 62620"
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
"value": "IEC-63330",
|
|
1909
|
+
"label": "IEC 63330"
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
"value": "EN-50604-1",
|
|
1913
|
+
"label": "EN 50604-1"
|
|
1914
|
+
},
|
|
1915
|
+
{
|
|
1916
|
+
"value": "UN-GTR-22",
|
|
1917
|
+
"label": "UN GTR No. 22"
|
|
1918
|
+
},
|
|
1919
|
+
{
|
|
1920
|
+
"value": "MANUFACTURER",
|
|
1921
|
+
"label": "The maker's own protocol"
|
|
1922
|
+
}
|
|
1923
|
+
],
|
|
1924
|
+
"closed": false,
|
|
1925
|
+
"source": "form",
|
|
1926
|
+
"clause": "6.7.6.5",
|
|
1927
|
+
"specName": "Cycle-life reference test",
|
|
1928
|
+
"legalRef": "Annex XIII (1j)",
|
|
1929
|
+
"note": "Without the test, the cycle figure is not comparable between brands. Open: the applicable standard differs by category and JTC 24 and IEC are still issuing them."
|
|
1930
|
+
},
|
|
1931
|
+
{
|
|
1932
|
+
"key": "cRate",
|
|
1933
|
+
"label": "C-rate of that test",
|
|
1934
|
+
"obligation": "must",
|
|
1935
|
+
"access": "public",
|
|
1936
|
+
"level": "model",
|
|
1937
|
+
"type": "decimal",
|
|
1938
|
+
"unit": "A/Ah",
|
|
1939
|
+
"minimum": 0,
|
|
1940
|
+
"source": "form",
|
|
1941
|
+
"clause": "6.7.6.6",
|
|
1942
|
+
"specName": "C-rate of relevant cycle-life test",
|
|
1943
|
+
"legalRef": "Annex XIII (1p)"
|
|
1944
|
+
},
|
|
1945
|
+
{
|
|
1946
|
+
"key": "energyThroughput",
|
|
1947
|
+
"label": "Energy through the battery",
|
|
1948
|
+
"obligation": "must",
|
|
1949
|
+
"access": "legitimate",
|
|
1950
|
+
"level": "item",
|
|
1951
|
+
"type": "decimal",
|
|
1952
|
+
"unit": "kWh",
|
|
1953
|
+
"minimum": 0,
|
|
1954
|
+
"categories": [
|
|
1955
|
+
"stationary",
|
|
1956
|
+
"lmt"
|
|
1957
|
+
],
|
|
1958
|
+
"dynamic": true,
|
|
1959
|
+
"source": "event",
|
|
1960
|
+
"clause": "6.7.6.7",
|
|
1961
|
+
"specName": "Energy throughput",
|
|
1962
|
+
"legalRef": "Annex VII Part B(2)"
|
|
1963
|
+
},
|
|
1964
|
+
{
|
|
1965
|
+
"key": "capacityThroughput",
|
|
1966
|
+
"label": "Capacity through the battery",
|
|
1967
|
+
"obligation": "must",
|
|
1968
|
+
"access": "legitimate",
|
|
1969
|
+
"level": "item",
|
|
1970
|
+
"type": "decimal",
|
|
1971
|
+
"unit": "Ah",
|
|
1972
|
+
"minimum": 0,
|
|
1973
|
+
"categories": [
|
|
1974
|
+
"stationary",
|
|
1975
|
+
"lmt"
|
|
1976
|
+
],
|
|
1977
|
+
"dynamic": true,
|
|
1978
|
+
"source": "event",
|
|
1979
|
+
"clause": "6.7.6.8",
|
|
1980
|
+
"specName": "Capacity throughput",
|
|
1981
|
+
"legalRef": "Annex VII Part B(3)"
|
|
1982
|
+
},
|
|
1983
|
+
{
|
|
1984
|
+
"key": "exhaustionThreshold",
|
|
1985
|
+
"label": "Exhaustion threshold",
|
|
1986
|
+
"obligation": "must",
|
|
1987
|
+
"access": "public",
|
|
1988
|
+
"level": "model",
|
|
1989
|
+
"type": "percent",
|
|
1990
|
+
"unit": "%",
|
|
1991
|
+
"minimum": 0,
|
|
1992
|
+
"maximum": 100,
|
|
1993
|
+
"categories": [
|
|
1994
|
+
"ev"
|
|
1995
|
+
],
|
|
1996
|
+
"source": "form",
|
|
1997
|
+
"clause": "6.7.6.9",
|
|
1998
|
+
"specName": "Capacity threshold for exhaustion",
|
|
1999
|
+
"legalRef": "Annex XIII (1k)"
|
|
2000
|
+
},
|
|
2001
|
+
{
|
|
2002
|
+
"key": "temperatureRecord",
|
|
2003
|
+
"label": "Temperature record",
|
|
2004
|
+
"obligation": "must",
|
|
2005
|
+
"access": "legitimate",
|
|
2006
|
+
"level": "item",
|
|
2007
|
+
"type": "decimal",
|
|
2008
|
+
"unit": "°C",
|
|
2009
|
+
"minimum": -60,
|
|
2010
|
+
"maximum": 150,
|
|
2011
|
+
"dynamic": true,
|
|
2012
|
+
"source": "event",
|
|
2013
|
+
"clause": "6.7.7.2",
|
|
2014
|
+
"specName": "Temperature information",
|
|
2015
|
+
"legalRef": "Annex XIII (4d)"
|
|
2016
|
+
},
|
|
2017
|
+
{
|
|
2018
|
+
"key": "idleTempLower",
|
|
2019
|
+
"label": "Idle temperature, lowest",
|
|
2020
|
+
"obligation": "must",
|
|
2021
|
+
"access": "public",
|
|
2022
|
+
"level": "model",
|
|
2023
|
+
"type": "integer",
|
|
2024
|
+
"unit": "°C",
|
|
2025
|
+
"minimum": -60,
|
|
2026
|
+
"maximum": 150,
|
|
2027
|
+
"step": 1,
|
|
2028
|
+
"source": "form",
|
|
2029
|
+
"clause": "6.7.7.3",
|
|
2030
|
+
"specName": "Temperature range idle state, lower boundary",
|
|
2031
|
+
"legalRef": "Annex XIII (1l)"
|
|
2032
|
+
},
|
|
2033
|
+
{
|
|
2034
|
+
"key": "idleTempUpper",
|
|
2035
|
+
"label": "Idle temperature, highest",
|
|
2036
|
+
"obligation": "must",
|
|
2037
|
+
"access": "public",
|
|
2038
|
+
"level": "model",
|
|
2039
|
+
"type": "integer",
|
|
2040
|
+
"unit": "°C",
|
|
2041
|
+
"minimum": -60,
|
|
2042
|
+
"maximum": 150,
|
|
2043
|
+
"step": 1,
|
|
2044
|
+
"source": "form",
|
|
2045
|
+
"clause": "6.7.7.4",
|
|
2046
|
+
"specName": "Temperature range idle state, upper boundary",
|
|
2047
|
+
"legalRef": "Annex XIII (1l)"
|
|
2048
|
+
},
|
|
2049
|
+
{
|
|
2050
|
+
"key": "timeAboveRange",
|
|
2051
|
+
"label": "Time above range",
|
|
2052
|
+
"obligation": "must",
|
|
2053
|
+
"access": "legitimate",
|
|
2054
|
+
"level": "item",
|
|
2055
|
+
"type": "decimal",
|
|
2056
|
+
"unit": "min",
|
|
2057
|
+
"minimum": 0,
|
|
2058
|
+
"categories": [
|
|
2059
|
+
"stationary",
|
|
2060
|
+
"lmt"
|
|
2061
|
+
],
|
|
2062
|
+
"dynamic": true,
|
|
2063
|
+
"source": "event",
|
|
2064
|
+
"clause": "6.7.7.5",
|
|
2065
|
+
"specName": "Time spent in extreme temperatures above boundary",
|
|
2066
|
+
"legalRef": "Annex VII Part B(4)"
|
|
2067
|
+
},
|
|
2068
|
+
{
|
|
2069
|
+
"key": "timeBelowRange",
|
|
2070
|
+
"label": "Time below range",
|
|
2071
|
+
"obligation": "must",
|
|
2072
|
+
"access": "legitimate",
|
|
2073
|
+
"level": "item",
|
|
2074
|
+
"type": "decimal",
|
|
2075
|
+
"unit": "min",
|
|
2076
|
+
"minimum": 0,
|
|
2077
|
+
"categories": [
|
|
2078
|
+
"stationary",
|
|
2079
|
+
"lmt"
|
|
2080
|
+
],
|
|
2081
|
+
"dynamic": true,
|
|
2082
|
+
"source": "event",
|
|
2083
|
+
"clause": "6.7.7.6",
|
|
2084
|
+
"specName": "Time spent in extreme temperatures below boundary",
|
|
2085
|
+
"legalRef": "Annex VII Part B(4)"
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
"key": "chargingAboveRange",
|
|
2089
|
+
"label": "Charging above range",
|
|
2090
|
+
"obligation": "must",
|
|
2091
|
+
"access": "legitimate",
|
|
2092
|
+
"level": "item",
|
|
2093
|
+
"type": "decimal",
|
|
2094
|
+
"unit": "min",
|
|
2095
|
+
"minimum": 0,
|
|
2096
|
+
"categories": [
|
|
2097
|
+
"stationary",
|
|
2098
|
+
"lmt"
|
|
2099
|
+
],
|
|
2100
|
+
"dynamic": true,
|
|
2101
|
+
"source": "event",
|
|
2102
|
+
"clause": "6.7.7.7",
|
|
2103
|
+
"specName": "Time spent charging during extreme temperatures above boundary",
|
|
2104
|
+
"legalRef": "Annex VII Part B(4)"
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
"key": "chargingBelowRange",
|
|
2108
|
+
"label": "Charging below range",
|
|
2109
|
+
"obligation": "must",
|
|
2110
|
+
"access": "legitimate",
|
|
2111
|
+
"level": "item",
|
|
2112
|
+
"type": "decimal",
|
|
2113
|
+
"unit": "min",
|
|
2114
|
+
"minimum": 0,
|
|
2115
|
+
"categories": [
|
|
2116
|
+
"stationary",
|
|
2117
|
+
"lmt"
|
|
2118
|
+
],
|
|
2119
|
+
"dynamic": true,
|
|
2120
|
+
"source": "event",
|
|
2121
|
+
"clause": "6.7.7.8",
|
|
2122
|
+
"specName": "Time spent charging during extreme temperatures below boundary",
|
|
2123
|
+
"legalRef": "Annex VII Part B(4)"
|
|
2124
|
+
},
|
|
2125
|
+
{
|
|
2126
|
+
"key": "deepDischargeEvents",
|
|
2127
|
+
"label": "Deep discharges",
|
|
2128
|
+
"obligation": "must",
|
|
2129
|
+
"access": "legitimate",
|
|
2130
|
+
"level": "item",
|
|
2131
|
+
"type": "integer",
|
|
2132
|
+
"minimum": 0,
|
|
2133
|
+
"step": 1,
|
|
2134
|
+
"categories": [
|
|
2135
|
+
"lmt"
|
|
2136
|
+
],
|
|
2137
|
+
"dynamic": true,
|
|
2138
|
+
"source": "event",
|
|
2139
|
+
"clause": "6.7.8.2",
|
|
2140
|
+
"specName": "Number of deep discharge events",
|
|
2141
|
+
"legalRef": "Annex VII"
|
|
2142
|
+
},
|
|
2143
|
+
{
|
|
2144
|
+
"key": "overchargeEvents",
|
|
2145
|
+
"label": "Overcharges",
|
|
2146
|
+
"obligation": "should",
|
|
2147
|
+
"access": "legitimate",
|
|
2148
|
+
"level": "item",
|
|
2149
|
+
"type": "integer",
|
|
2150
|
+
"minimum": 0,
|
|
2151
|
+
"step": 1,
|
|
2152
|
+
"dynamic": true,
|
|
2153
|
+
"source": "event",
|
|
2154
|
+
"clause": "6.7.8.3",
|
|
2155
|
+
"specName": "Number of overcharge events",
|
|
2156
|
+
"legalRef": "added by the consortium"
|
|
2157
|
+
},
|
|
2158
|
+
{
|
|
2159
|
+
"key": "accidents",
|
|
2160
|
+
"label": "Accidents",
|
|
2161
|
+
"obligation": "must",
|
|
2162
|
+
"access": "legitimate",
|
|
2163
|
+
"level": "item",
|
|
2164
|
+
"type": "document",
|
|
2165
|
+
"dynamic": true,
|
|
2166
|
+
"source": "event",
|
|
2167
|
+
"clause": "6.7.8.4",
|
|
2168
|
+
"specName": "Information on accidents",
|
|
2169
|
+
"legalRef": "Annex XIII (4d)"
|
|
2170
|
+
},
|
|
2171
|
+
{
|
|
2172
|
+
"key": "safety",
|
|
2173
|
+
"label": "Safety",
|
|
2174
|
+
"obligation": "should",
|
|
2175
|
+
"access": "public",
|
|
2176
|
+
"level": "model",
|
|
2177
|
+
"type": "text",
|
|
2178
|
+
"maxLength": 500,
|
|
2179
|
+
"prose": true,
|
|
2180
|
+
"source": "form",
|
|
2181
|
+
"clause": "app",
|
|
2182
|
+
"specName": "not in the spec: plain-language safety line",
|
|
2183
|
+
"legalRef": "app addition; the spec puts safety measures at 6.6.1.5, restricted",
|
|
2184
|
+
"supersedes": "safety",
|
|
2185
|
+
"note": "Prose by nature: a plain-language line a consumer reads on the passport. The spec's own safety measures at 6.6.1.5 sit in the restricted tier, so this is the public summary of them, not a substitute."
|
|
2186
|
+
},
|
|
2187
|
+
{
|
|
2188
|
+
"key": "stateOfHealth",
|
|
2189
|
+
"label": "State of health",
|
|
2190
|
+
"obligation": "should",
|
|
2191
|
+
"access": "legitimate",
|
|
2192
|
+
"level": "item",
|
|
2193
|
+
"type": "percent",
|
|
2194
|
+
"unit": "%",
|
|
2195
|
+
"minimum": 0,
|
|
2196
|
+
"maximum": 100,
|
|
2197
|
+
"dynamic": true,
|
|
2198
|
+
"source": "event",
|
|
2199
|
+
"clause": "app",
|
|
2200
|
+
"specName": "not in the spec: state of health as a single figure",
|
|
2201
|
+
"legalRef": "app addition; the spec decomposes SoH into Annex VII Part A parameters",
|
|
2202
|
+
"supersedes": "stateOfHealth",
|
|
2203
|
+
"note": "Annex VII has no single SoH figure: it lists remaining capacity, remaining power, remaining round trip efficiency, self-discharge evolution and resistance. Our one number is a summary, and should be presented as one."
|
|
2204
|
+
},
|
|
2205
|
+
{
|
|
2206
|
+
"key": "measured",
|
|
2207
|
+
"label": "Measured by",
|
|
2208
|
+
"obligation": "should",
|
|
2209
|
+
"access": "legitimate",
|
|
2210
|
+
"level": "item",
|
|
2211
|
+
"type": "enum",
|
|
2212
|
+
"options": [
|
|
2213
|
+
{
|
|
2214
|
+
"value": "manufacturer",
|
|
2215
|
+
"label": "The maker"
|
|
2216
|
+
},
|
|
2217
|
+
{
|
|
2218
|
+
"value": "authorised-service",
|
|
2219
|
+
"label": "An authorised service partner"
|
|
2220
|
+
},
|
|
2221
|
+
{
|
|
2222
|
+
"value": "independent-lab",
|
|
2223
|
+
"label": "An independent laboratory"
|
|
2224
|
+
},
|
|
2225
|
+
{
|
|
2226
|
+
"value": "operator",
|
|
2227
|
+
"label": "The operator or fleet"
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
"value": "repurposer",
|
|
2231
|
+
"label": "A repurposer"
|
|
2232
|
+
},
|
|
2233
|
+
{
|
|
2234
|
+
"value": "recycler",
|
|
2235
|
+
"label": "A recycler"
|
|
2236
|
+
}
|
|
2237
|
+
],
|
|
2238
|
+
"closed": true,
|
|
2239
|
+
"dynamic": true,
|
|
2240
|
+
"source": "event",
|
|
2241
|
+
"clause": "app",
|
|
2242
|
+
"specName": "not in the spec: who measured, and when",
|
|
2243
|
+
"legalRef": "app addition",
|
|
2244
|
+
"supersedes": "measured",
|
|
2245
|
+
"note": "Closed, and closable because the attribute is ours rather than the spec's: no consumer outside the app depends on this vocabulary, so fixing it costs no interop. Who measured decides how much a reading is worth."
|
|
2246
|
+
}
|
|
2247
|
+
]
|
|
2248
|
+
}
|