{"as_of": "2026-04-30", "next_review": "2026-07-30", "status_counts": {"shipped": 35, "partial": 7, "planned": 2, "not_addressed": 0, "out_of_scope": 10}, "rows": [{"regulation": "ESPR", "article": "9(1)", "status": "out_of_scope", "requirement": "Products only on EU market with a DPP per the applicable delegated act; data accurate, complete, up to date.", "note": "Manufacturer obligation. Our platform enables passport CRUD, revision tracking, and a completeness scorer; we don't enforce 'complete' because the regulation defers that to sectoral delegated acts.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(2)(a-c)", "status": "partial", "requirement": "Delegated acts specify per-sector data, data carriers, and label layout.", "note": "Sector schemas track each sector's stabilised draft + final regulation. Battery is fully tracked; textile and electronics delegated acts are not yet final — schemas re-tag when each publishes.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(2)(d)", "status": "shipped", "requirement": "DPP at model, batch, or item level per the delegated act.", "note": "passport_type column carries model | batch | item. Battery item-level passports (Annex XIII §4) are item-level by definition.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(2)(e)", "status": "out_of_scope", "requirement": "DPP accessible to customers before contract — including distance selling.", "note": "Manufacturer placement obligation. We provide a public URL; the manufacturer is on the hook for embedding it at point of sale.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(2)(f-g)", "status": "shipped", "requirement": "Which actors have which read + write access rights to which data.", "note": "Role-tagged credentials shipped Phase 16. Manufacturer / auditor / recycler / repairer / notified-body roles each see audience-tagged fields. Recycler-write surface is a future-phase follow-up.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(2)(h)", "status": "shipped", "requirement": "Detailed arrangements for introducing and updating data.", "note": "Per-sector form + revisions journal + JSON / PDF / CSV export. Bulk CSV upload available at Professional+ tier.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(2)(i)", "status": "shipped", "requirement": "DPP available for the expected product lifetime.", "note": "DELETE on a passport returns 403; is_active flips to False on end-of-life but the row persists. Article 10(4) explicit.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "9(3)", "status": "partial", "requirement": "Easy access for value chain; verifiability for authorities; traceability.", "note": "Public URL + audit chain endpoint with hash-linked diffs. Cross-platform supply-chain inheritance is a separate Phase 2 layer (eureg.net).", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(1)(a)", "status": "shipped", "requirement": "Data carrier connected to a persistent unique product identifier.", "note": "passports.short_code is the persistent identifier; GS1 Digital Link is the parallel identifier when GTIN + serial are set (Professional+).", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(1)(b)", "status": "out_of_scope", "requirement": "Carrier physically present on product / packaging / accompanying docs.", "note": "Manufacturer obligation. We generate the QR; affixation is the manufacturer's responsibility.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(1)(c)", "status": "partial", "requirement": "Carrier + identifier comply with ISO/IEC 15459 family.", "note": "GS1 Digital Link encoding (Professional+) satisfies ISO/IEC 15459-6 (GTIN). Trial / Starter use our internal short_code, which is unique but not formally a 15459 identifier.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(1)(d)", "status": "shipped", "requirement": "Open standards, interoperable, machine-readable, structured, no vendor lock-in.", "note": "JSON-LD with public @context (Schema.org + dpp: namespace). CORS open. Per-passport export bundle (Phase 19) plus account-wide ZIP for self-hosting.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(1)(e)", "status": "shipped", "requirement": "Personal data only with explicit consent (GDPR Article 6 alignment).", "note": "Position A: scan analytics use Article 6(1)(f) legitimate interest with minimal data (ip_country header, device class — no raw IP, no raw UA, no tracking cookie). Privacy policy documents the basis + Article 21 right to object.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(1)(f-g)", "status": "shipped", "requirement": "Data refers to model/batch/item; access regulated per delegated act.", "note": "passport_type column + role-tagged credential model (Phase 16). Field-level audience tagging is sector-by-sector; battery Annex XIII is fully implemented.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(2)", "status": "shipped", "requirement": "Other Union law's required data may be included.", "note": "documents + material_declarations + hazardous_substances + certifications JSONB columns give the manufacturer slots for cross-regulation overlay (REACH SVHC, RoHS DoC, WEEE markings).", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(3)", "status": "shipped", "requirement": "Provide carrier / URL to dealers + marketplaces, free of charge, within 5 working days.", "note": "QR PNG + URL is free, downloadable from the dashboard, shareable. We don't impose any wait period.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "10(4)", "status": "shipped", "requirement": "Manufacturer must make a back-up copy available through a DPP service provider.", "note": "We are the DPP service provider. Phase 19 ships a per-passport + account-wide export bundle plus a portable resolver template, so the manufacturer holds a complete self-hostable copy. Annex III(l) backup-provider field is captured on every passport.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(a)", "status": "partial", "requirement": "Full interoperability with other DPPs (technical, semantic, organisational).", "note": "JSON-LD over HTTPS, IETF/W3C standards. Semantic vocab will align with the Commission's CIRPASS-2 work when the shared vocabulary publishes.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(b)", "status": "partial", "requirement": "Free, easy access for 13 enumerated audiences (consumers, manufacturers, customs, recyclers, civil society, …) per access rights.", "note": "5 audience roles shipped (manufacturer / auditor / recycler / repairer / notified body). Civil society and trade unions inherit the consumer (public-tier) view in v1.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(c)", "status": "shipped", "requirement": "DPP stored by the economic operator placing on market or by a DPP service provider.", "note": "We are the storage layer — PostgreSQL + MinIO on EU hardware in Denmark.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(d)", "status": "shipped", "requirement": "New DPP for an existing product must link to the original DPP(s).", "note": "Phase 15.2 shipped previous_passport_ids JSONB column + JSON-LD previousPassports linking + viewer chain rendering. Hash-relevant — predecessor changes flip the integrity hash.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(e)", "status": "shipped", "requirement": "DPP remains available after insolvency / liquidation / cessation of activity.", "note": "Phase 19 ships a complete on-demand export bundle (JSON-LD + PDF + QR + revisions) plus a portable resolver template. Manufacturer holds a self-hostable copy independent of our continued operation. Public continuity statement at /continuity.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(f)", "status": "shipped", "requirement": "Rights to introduce / modify / update restricted by access rights.", "note": "Role-tagged write paths (Phase 16 plumbing). Today only manufacturer accounts write; recycler-write surface for refurbishment passports is a future phase.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(g)", "status": "shipped", "requirement": "Data authentication, reliability, integrity ensured.", "note": "passport_hash (SHA-256 over canonical JSON-LD) on every save. Revision chain with hash_before / hash_after / structured diff. Chain validator at /p/{code}/audit.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11(h)", "status": "shipped", "requirement": "High level of security, privacy, anti-fraud.", "note": "Phase 20 ships a documented internal security review against an OWASP ASVS L2 + API Top-10 checklist; quarterly cadence. See /security for the public claims and docs/security-review-{YYYY-MM-DD}.md for each dated pass.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11 last subpara", "status": "shipped", "requirement": "DPP service providers must not sell / reuse / process data beyond storage.", "note": "Terms of service constrain this. We don't monetise customer data. Documented in /privacy and /terms.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "11 implementing acts", "status": "out_of_scope", "requirement": "Commission may set out procedures for issuing / verifying digital credentials of access-rights holders.", "note": "Implementing act not yet adopted. When it lands, our credential model aligns to whatever EU-wide scheme emerges (eIDAS-DPP probable).", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "12(1)", "status": "shipped", "requirement": "Operator + facility identifiers comply with ISO/IEC 15459 family or equivalent.", "note": "Phase 15.3 shipped format validators for GLN (mod-10 check), EORI (country prefix + alphanumeric), DUNS (9-digit). Unknown formats pass through (the regulation explicitly permits equivalent schemes).", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "12(2-3)", "status": "shipped", "requirement": "If a unique operator / facility ID isn't yet available, the DPP creator must request one on behalf of the actor.", "note": "Phase 15.4 shipped pending-issuance state on facility_id and other_operator_identifiers. Manufacturer attests to having sought confirmation per Article 12(2)/(3) before submitting; status flips to pendingIssuance in JSON-LD until the ID is issued.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "12(4-6)", "status": "out_of_scope", "requirement": "Lifecycle management rules for unique identifiers — pending delegated acts.", "note": "Commission delegated acts not yet adopted.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "13(1)", "status": "out_of_scope", "requirement": "Commission sets up a registry by 19 July 2026 storing identifiers + commodity codes.", "note": "Not our infrastructure. Commission build.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "13(4-5)", "status": "planned", "requirement": "Manufacturer uploads identifiers; registry returns a unique registration ID per upload.", "note": "Phase 7 shipped the abstraction (eu_registry.py + ARQ task + RegistryPointer table). Stub mode until the Commission publishes the LinkSet API and our provider credentials — three env vars away.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "13(6)", "status": "out_of_scope", "requirement": "Commission, competent national authorities, and customs have access to the registry.", "note": "Their access into the registry, not ours.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "14", "status": "out_of_scope", "requirement": "Commission sets up a publicly accessible web portal allowing search across DPPs.", "note": "Commission build. We serve our JSON-LD in a shape the portal can ingest; once the registry indexes our domain, portal access works automatically.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "15(1)", "status": "planned", "requirement": "Importer provides customs the unique registration identifier from Article 13(5).", "note": "Once the registry is live, our RegistryPointer.registry_id is the value the manufacturer hands customs. Surfacing this prominently in the dashboard is a small UI follow-up.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "15(2-3)", "status": "out_of_scope", "requirement": "Customs verifies registration ID + commodity code before release; registry interconnects with EU CSW-CERTEX.", "note": "Customs flow + Commission build. Out of our surface.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "15(4)", "status": "shipped", "requirement": "Commission and customs may retrieve and use DPP / registry data.", "note": "JSON-LD endpoint with CORS open serves this contract.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "ESPR", "article": "Annex III", "status": "shipped", "requirement": "Annex III data elements (a)–(l) — manufacturer / authorised rep / importer / operators / facilities / DPP service provider / docs / TARIC / GTIN.", "note": "Every Annex III element has a column or JSONB slot. Sectoral delegated acts pick the subset they require; we capture the full set so the manufacturer can populate whatever applies.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2024/1781/oj"}, {"regulation": "Battery", "article": "77(1)", "status": "shipped", "requirement": "LMT, industrial >2 kWh, EV batteries on market from 18 February 2027.", "note": "Battery sector schema tracks all four categories (portable / SLI / industrial / LMT / EV). Required-field set differs per category.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(2)", "status": "shipped", "requirement": "Public information per Annex XIII §1; restricted §2 + §3 per audience.", "note": "All §1/§2/§3/§4 fields present. Phase 16 splits the restricted-tier gate into auditor / recycler / repairer / notified_body roles; before that, all restricted fields collapsed into one bucket.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(3)", "status": "partial", "requirement": "Accessible through QR; QR + identifier comply with ISO/IEC 15459-1..6.", "note": "QR + GS1 Digital Link encoding (Professional+). Trial / Starter use our internal short_code (unique but not formally a 15459 identifier).", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(4)", "status": "shipped", "requirement": "Manufacturer ensures information is accurate, complete, up to date.", "note": "Manufacturer responsibility. We provide CRUD + completeness scorer + revision history. A 'delegated authoring' (additional users on a manufacturer account writing on their behalf) is a future-phase follow-up.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(5)", "status": "shipped", "requirement": "Open standards, interoperable, no vendor lock-in, machine-readable, structured, searchable.", "note": "Same as ESPR 10(1)(d) — JSON-LD with open @context, CORS open, exportable in PDF / JSON / CSV / ZIP.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(6)", "status": "shipped", "requirement": "Access regulated per Article 78.", "note": "Role-tagged credential model (Phase 16). Article 78 requirements mirror ESPR Article 11.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(7) refurb", "status": "shipped", "requirement": "Refurbished / remanufactured battery: new passport linked to original passport(s).", "note": "Phase 15.2 shipped previous_passport_ids JSONB column + viewer chain rendering. Recycler scanning a refurbished battery's QR can walk back to the original.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(7) waste", "status": "partial", "requirement": "When a battery becomes waste, responsibility transfers to producer / EPR org / waste operator.", "note": "Article 77(8) viewer-side: passport returns 410 Gone when battery_status='waste'. Article 77(7) ownership-transfer flow ('transfer ownership of this passport to operator X') is a future phase.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(8)", "status": "shipped", "requirement": "Battery passport ceases to exist after recycling.", "note": "battery_status='waste' → viewer 410 Gone. Row stays in DB for Article 10(4) lifetime audit.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "77(9)", "status": "out_of_scope", "requirement": "Commission adopts implementing act by 18 August 2026 specifying who is 'person with legitimate interest'.", "note": "Implementing act not yet adopted. Our credential model anticipates the role enumeration; specific download / share / republish rules will be encoded once the act lands.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "78", "status": "shipped", "requirement": "Article 78 mirrors ESPR Article 11 with battery-specific phrasing.", "note": "Same posture: integrity (g) and storage (c) shipped. Linking, continuity, security review all closed by Phases 15.2 / 19 / 20.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "Annex XIII §1", "status": "shipped", "requirement": "§1 — Public fields (everyone).", "note": "All 19 §1 fields present and tagged public access. Consumer view.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "Annex XIII §2", "status": "shipped", "requirement": "§2 — Legitimate interest + Commission (composition, dismantling, safety measures).", "note": "Phase 16: auditor + recycler + repairer roles see §2 fields; consumer / anonymous does not.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "Annex XIII §3", "status": "shipped", "requirement": "§3 — Notified bodies + market surveillance (test reports).", "note": "Phase 16: notified_body role sees §3 fields exclusively. Recycler / repairer cannot.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "Annex XIII §4", "status": "shipped", "requirement": "§4 — Item-level passport, legitimate interest (state of health, charging cycles, etc.).", "note": "Phase 16: auditor + recycler + repairer roles see §4 fields on item-level passports.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}, {"regulation": "Battery", "article": "Annex VI(C)", "status": "shipped", "requirement": "Annex VI Part C — QR physical requirements (high contrast, smartphone-readable, permanent affixation).", "note": "Default colour pair validated for contrast. pyzbar round-trip self-test confirms smartphone readability. Permanent affixation is the manufacturer's responsibility.", "eur_lex_url": "https://eur-lex.europa.eu/eli/reg/2023/1542/oj"}]}