@tracepass/dpp-schemas 1.18.4 → 1.18.6

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 CHANGED
@@ -204,9 +204,11 @@ registry:
204
204
  Five things are worth pointing out.
205
205
 
206
206
  **`regulation.effectiveDate` is the date the passport obligation begins — not the date
207
- the regulation applies.** Those are different dates and can sit years apart. PPWR
208
- (EU) 2025/40 has applied since 12 August 2026, but its packaging DPP provisions phase
209
- in from 2027, so `packaging` carries `2027`, not `2026-08-12`.
207
+ the regulation applies.** Those are different dates and can sit years apart, and
208
+ some categories have no passport obligation at all. PPWR (EU) 2025/40 has applied since
209
+ 12 August 2026 but creates no packaging passport: Article 12 is a labelling regime (a
210
+ harmonised material label, with a QR code optional except on reusable packaging), so
211
+ `packaging` carries `dateBasis: "none"`, not `2026-08-12`.
210
212
 
211
213
  Read both dates with their precision marker. `datePrecision` / `mandatoryDatePrecision`
212
214
  are `"day"` or `"year"`; absent means `"day"`:
@@ -215,26 +217,25 @@ are `"day"` or `"year"`; absent means `"day"`:
215
217
  2023/1542 Article 77.
216
218
  - **`"year"`** — only the year is known, because the governing delegated or implementing
217
219
  act is not yet adopted. The day and month are filler. **Do not render these as a
218
- deadline.** Nine of the thirteen categories are currently `"year"`; the other four
219
- carry an exact date.
220
+ deadline.** Six of the thirteen categories are currently `"year"`.
220
221
 
221
222
  **`datePrecision` is not the same question as `dateBasis`, and you usually want the
222
223
  latter.** Precision asks *how exact is this date*; basis asks *does an adopted
223
224
  instrument set it at all*. `dateBasis: "statutory"` means a provision in force fixes
224
225
  the date and it can be cited — exactly three categories: `battery` (2027-02-18,
225
226
  Reg (EU) 2023/1542 Art. 77(1)), `detergents` (2029-09-23) and `toys` (2030-08-01).
226
- The other ten are `"indicative"`: no adopted act sets the date, so it is a planning
227
- target with no legal force.
228
-
229
- The two are independent, and `paints-coatings` is why the distinction matters — it has
230
- `datePrecision: "day"` (2010-01-01 is exact) but `dateBasis: "indicative"`, because the
231
- Decopaint Directive creates no passport duty at all. An exact date for an obligation
232
- that does not exist. Filter on `dateBasis`, not on precision, when you need to know
233
- what is actually mandated.
227
+ Six are `"indicative"`: no adopted act sets the date, so it is a planning target with
228
+ no legal force. Four are `"none"` — `fmcg`, `jewelry`, `packaging` and `paints-coatings`:
229
+ no adopted act creates a passport for them and none is scheduled, so a passport is
230
+ voluntary and both dates carry the sentinel `9999-12-31`, which must never be shown or
231
+ compared. Filter on `dateBasis`, not on precision, when you need to know what is
232
+ actually mandated.
234
233
 
235
234
  ```python
236
235
  r = template["regulation"]
237
- if r.get("datePrecision", "day") == "year":
236
+ if r.get("dateBasis") == "none":
237
+ print("No passport obligation; a passport is voluntary") # sentinel dates: ignore
238
+ elif r.get("datePrecision", "day") == "year":
238
239
  print(f"DPP obligation expected in {r['effectiveDate'][:4]}") # "2027"
239
240
  else:
240
241
  print(f"DPP obligation from {r['effectiveDate']}") # "2027-02-18"
package/index.json CHANGED
@@ -141,11 +141,9 @@
141
141
  "regulation": {
142
142
  "name": "Packaging and Packaging Waste Regulation",
143
143
  "number": "(EU) 2025/40",
144
- "effectiveDate": "2027-01-01",
145
- "datePrecision": "year",
146
- "mandatoryDate": "2030-01-01",
147
- "mandatoryDatePrecision": "year",
148
- "dateBasis": "indicative"
144
+ "effectiveDate": "9999-12-31",
145
+ "mandatoryDate": "9999-12-31",
146
+ "dateBasis": "none"
149
147
  }
150
148
  },
151
149
  {
@@ -175,9 +173,9 @@
175
173
  "regulation": {
176
174
  "name": "EU ESPR - Iron, Steel & Aluminium",
177
175
  "number": "(EU) 2024/1781",
178
- "effectiveDate": "2027-01-01",
176
+ "effectiveDate": "2028-01-01",
179
177
  "datePrecision": "year",
180
- "mandatoryDate": "2028-01-01",
178
+ "mandatoryDate": "2029-01-01",
181
179
  "mandatoryDatePrecision": "year",
182
180
  "dateBasis": "indicative"
183
181
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracepass/dpp-schemas",
3
- "version": "1.18.4",
3
+ "version": "1.18.6",
4
4
  "description": "Machine-readable field specifications for EU Digital Product Passports (ESPR) — 13 product categories, 991 fields, each traced to the article of EU law that mandates it. Pure JSON, no dependencies.",
5
5
  "keywords": [
6
6
  "digital-product-passport",
@@ -4972,12 +4972,12 @@
4972
4972
  "sortOrder": 37,
4973
4973
  "defaultAccessLevel": "public",
4974
4974
  "regulationRef": {
4975
- "article": "CPR Art. 13-15",
4975
+ "article": "CPR Arts. 13, 17-18",
4976
4976
  "annex": null,
4977
4977
  "instrument": "32024R3110",
4978
- "provision": "CPR (EU) 2024/3110 Arts. 13-17 — CE marking, only where a harmonised technical specification or a European Technical Assessment covers the product",
4978
+ "provision": "Arts. 13, 17-18 — CE marking (Arts. 17-18), affixed only to products with a declaration of performance and conformity (Art. 13), and only where a harmonised technical specification or a European Technical Assessment covers the product",
4979
4979
  "kind": "legislation",
4980
- "description": "CE marking under the CPR is CONDITIONAL: it applies only where a harmonised technical specification or a European Technical Assessment covers the product, and a product covered by neither cannot be CE-marked at all. The duty is to affix the mark and draw up the Declaration of Performance behind it, not to publish a status flag."
4980
+ "description": "CE marking under the CPR is CONDITIONAL: it applies only where a harmonised technical specification or a European Technical Assessment covers the product, and a product covered by neither cannot be CE-marked at all. The duty is to affix the mark and draw up the Declaration of Performance behind it, not to publish a status flag. Where the product falls under a harmonised standard cited under Regulation (EU) No 305/2011 and still in force, its declaration of performance and CE marking stay governed by Arts. 4 and 8-9 of that Regulation during the transition (Reg. (EU) 2024/3110 Arts. 94 and 95(3), 95(8))."
4981
4981
  },
4982
4982
  "aiHints": {
4983
4983
  "alternateNames": [
@@ -6496,12 +6496,12 @@
6496
6496
  "sortOrder": 37,
6497
6497
  "defaultAccessLevel": "public",
6498
6498
  "regulationRef": {
6499
- "article": "CPR Art. 13-15",
6499
+ "article": "CPR Arts. 13, 17-18",
6500
6500
  "annex": null,
6501
6501
  "instrument": "32024R3110",
6502
- "provision": "Art. 13-15",
6502
+ "provision": "Arts. 13, 17-18 — CE marking (Arts. 17-18), affixed only to products with a declaration of performance and conformity (Art. 13), and only where a harmonised technical specification or a European Technical Assessment covers the product",
6503
6503
  "kind": "legislation",
6504
- "description": "The CE mark is affixed to the product; the obligation is discharged by that mark and by the Declaration of Performance supporting it, and only where a harmonised technical specification or an ETA covers the product."
6504
+ "description": "The CE mark is affixed to the product; the obligation is discharged by that mark and by the Declaration of Performance supporting it, and only where a harmonised technical specification or an ETA covers the product. Where the product falls under a harmonised standard cited under Regulation (EU) No 305/2011 and still in force, its declaration of performance and CE marking stay governed by Arts. 4 and 8-9 of that Regulation during the transition (Reg. (EU) 2024/3110 Arts. 94 and 95(3), 95(8))."
6505
6505
  },
6506
6506
  "aiHints": {
6507
6507
  "alternateNames": [
@@ -15909,30 +15909,30 @@
15909
15909
  "sv": "Innehåller permanentmagneter"
15910
15910
  },
15911
15911
  "description": {
15912
- "en": "Whether the product contains permanent magnets weighing > 0.2 kg",
15913
- "bg": "Дали продуктът съдържа постоянни магнити с тегло > 0,2 kg",
15914
- "de": "Ob das Produkt Permanentmagnete mit einem Gewicht von mehr als 0,2 kg enthält",
15915
- "cs": "Zda výrobek obsahuje permanentní magnety o hmotnosti > 0,2 kg",
15916
- "da": "Om produktet indeholder permanente magneter, der vejer over 0,2 kg",
15917
- "el": "Εάν το προϊόν περιέχει μόνιμους μαγνήτες βάρους > 0,2 kg",
15918
- "es": "Indica si el producto contiene imanes permanentes de peso > 0,2 kg",
15919
- "et": "Kas toode sisaldab püsimagneteid, mis kaaluvad üle 0,2 kg",
15920
- "fi": "Sisältääkö tuote kestomagneetteja, jotka painavat yli 0,2 kg",
15921
- "fr": "Indique si le produit contient des aimants permanents d'un poids > 0,2 kg",
15922
- "ga": "Cé acu atá nó nach bhfuil maighnéid bhuana a mheánn > 0.2 kg sa táirge",
15923
- "hr": "Sadržava li proizvod trajne magnete mase > 0,2 kg",
15924
- "hu": "Tartalmaz-e a termék 0,2 kg-nál nagyobb tömegű állandó mágneseket",
15925
- "it": "Indica se il prodotto contiene magneti permanenti di peso superiore a 0,2 kg",
15926
- "lt": "Ar produkte yra nuolatinių magnetų, sveriančių > 0,2 kg",
15927
- "lv": "Vai produkts satur pastāvīgos magnētus, kuru svars ir > 0,2 kg",
15928
- "mt": "Jekk il-prodott fihx kalamiti permanenti li jiżnu > 0,2 kg",
15929
- "nl": "Of het product permanente magneten met een gewicht van meer dan 0,2 kg bevat",
15930
- "pl": "Czy produkt zawiera magnesy trwałe o masie > 0,2 kg",
15931
- "pt": "Indica se o produto contém ímanes permanentes com peso > 0,2 kg",
15932
- "ro": "Indică dacă produsul conține magneți permanenți cu o greutate > 0,2 kg",
15933
- "sk": "Či výrobok obsahuje permanentné magnety s hmotnosťou > 0,2 kg",
15934
- "sl": "Ali izdelek vsebuje trajne magnete z maso > 0,2 kg",
15935
- "sv": "Om produkten innehåller permanentmagneter som väger mer än 0,2 kg"
15912
+ "en": "Whether the product contains permanent magnets",
15913
+ "bg": "Дали продуктът съдържа постоянни магнити",
15914
+ "de": "Ob das Produkt Permanentmagnete enthält",
15915
+ "cs": "Zda výrobek obsahuje permanentní magnety",
15916
+ "da": "Om produktet indeholder permanente magneter",
15917
+ "el": "Εάν το προϊόν περιέχει μόνιμους μαγνήτες",
15918
+ "es": "Indica si el producto contiene imanes permanentes",
15919
+ "et": "Kas toode sisaldab püsimagneteid",
15920
+ "fi": "Sisältääkö tuote kestomagneetteja",
15921
+ "fr": "Indique si le produit contient des aimants permanents",
15922
+ "ga": "Cé acu atá nó nach bhfuil maighnéid bhuana sa táirge",
15923
+ "hr": "Sadržava li proizvod trajne magnete",
15924
+ "hu": "Tartalmaz-e a termék állandó mágneseket",
15925
+ "it": "Indica se il prodotto contiene magneti permanenti",
15926
+ "lt": "Ar produkte yra nuolatinių magnetų",
15927
+ "lv": "Vai produkts satur pastāvīgos magnētus",
15928
+ "mt": "Jekk il-prodott fihx kalamiti permanenti",
15929
+ "nl": "Of het product permanente magneten bevat",
15930
+ "pl": "Czy produkt zawiera magnesy trwałe",
15931
+ "pt": "Indica se o produto contém ímanes permanentes",
15932
+ "ro": "Indică dacă produsul conține magneți permanenți",
15933
+ "sk": "Či výrobok obsahuje permanentné magnety",
15934
+ "sl": "Ali izdelek vsebuje trajne magnete",
15935
+ "sv": "Om produkten innehåller permanentmagneter"
15936
15936
  },
15937
15937
  "dataType": "boolean",
15938
15938
  "unit": null,
@@ -31,11 +31,9 @@
31
31
  "regulation": {
32
32
  "name": "Packaging and Packaging Waste Regulation",
33
33
  "number": "(EU) 2025/40",
34
- "effectiveDate": "2027-01-01",
35
- "datePrecision": "year",
36
- "mandatoryDate": "2030-01-01",
37
- "mandatoryDatePrecision": "year",
38
- "dateBasis": "indicative"
34
+ "effectiveDate": "9999-12-31",
35
+ "mandatoryDate": "9999-12-31",
36
+ "dateBasis": "none"
39
37
  },
40
38
  "fields": [
41
39
  {
@@ -31,9 +31,9 @@
31
31
  "regulation": {
32
32
  "name": "EU ESPR - Iron, Steel & Aluminium",
33
33
  "number": "(EU) 2024/1781",
34
- "effectiveDate": "2027-01-01",
34
+ "effectiveDate": "2028-01-01",
35
35
  "datePrecision": "year",
36
- "mandatoryDate": "2028-01-01",
36
+ "mandatoryDate": "2029-01-01",
37
37
  "mandatoryDatePrecision": "year",
38
38
  "dateBasis": "indicative"
39
39
  },