1. π¨ "Archive" means two different things, and the collision hides a gap
POST /api/v1/dpp/{dppId}/archive β "permanently archive a published or suspended passport" after retention expiry β sets a terminal lifecycle status. That is what "archive" means in this codebase.
EN 18221:2026 (Digital product passport β Data storage, archiving and data persistence, one of the six standards cited by Commission Implementing Decision (EU) 2026/1736) uses the word for something else entirely: the retention of historical versions of a passport that is still live.
Anyone mapping our surface to that standard by name would tick the box. The box is not ticked.
2. What clause 4.2 actually asks for
In our own words, not the standard's:
- archiving begins at the first change to the initial passport β not at publish, and not at end of life;
- archived versions are held by both the back-up service provider and the creator (or a main provider acting for it);
- all archived versions persist for the passport's lifetime;
- all changes are archived, save those a product-specific rule exempts β real-time sensor data is the example the standard gives;
- archived attributes carry the same access restrictions as the live ones;
- the version as it stood at a given point in time is retrievable by authenticated, authorised actors.
3. What we have instead
An append-only audit trail β repo_audit, enforced by an ODAL_AUDIT trigger that rejects mutation at the database. Closest in spirit, and genuinely good, but an audit trail records that something changed. It does not reconstitute the passport as it stood at time T, which is the clause's actual requirement.
Continuity snapshots β which fire on publish, and on the status changes that leave the public tier. Publish-triggered, not change-triggered, and they carry the rendered public view rather than the full record. dpp-types/src/snapshot.rs already invokes EN 18221 in its module doc β written against an assumption about the standard, before anyone had read it. The posture it describes is right; it is not the same obligation as clause 4.2.
Verdict: non-conformant on the evidence. Not "probably fine" β the mechanism the clause describes is not present.
4. Clause 4.3 has a requirement we have not designed for
The back-up provider must hold the most recent version and all required historical versions, with the same access restrictions as the original; the passport is available to specifically authorised users from the back-up for its lifetime; and β the one worth reading twice β
general access via the back-up becomes available once the economic operator is no longer active on the market.
That is a concrete, implementable mechanism for the ESPR Art. 11(e) availability-after-insolvency requirement, and it is more specific than anything in the current design. Our continuity tier keeps a passport reachable when the node is down. It does not model a change of audience on operator cessation β access widening, not merely persisting.
This is a design input as much as a conformance finding.
5. β οΈ Clause 4.5 cannot be assessed at all yet
Replication to the back-up provider must cover the passport and all changes, at a frequency sufficient to minimise data loss β the standard names a Recovery Point Objective as the way to express it. It must be possible via a standardised lifecycle API per EN 18222:2026, and must run over a data exchange protocol per EN 18216:2026.
Neither standard is on hand, so clause 4.5 conformance is not assessable, not merely unassessed.
β οΈ And a property of the standard rather than of us: EN 18221's normative references include EN 18239 and EN 18246, both of which are undated because they are still under preparation. Clause 4.2's integrity requirement points at EN 18246. Full conformance with EN 18221 is therefore not presently achievable by anyone. Worth knowing before any outward conformance claim.
6. β
The good news, and it is substantial
EN 18221's Annex ZA maps its clauses to ESPR essential requirements, and for Art. 10(4) it records that the presumption covers only the technical aspects of the back-up β not the existence of the back-up as such.
So the standard itself separates does the mechanism conform from who may lawfully operate it (ESPR Art. 2(32)'s independent-third-party requirement), and supplies only the first.
That means the continuity work can proceed as a technical conformance exercise without first resolving the service-provider question. Those have been treated as one blocked decision; they are two, and the standard is the citable basis for separating them.
What this issue asks for
- Disambiguate the word. Either rename the lifecycle endpoint/status or document the collision prominently where someone comparing us to EN 18221 will see it.
- Decide whether to build version archiving to clause 4.2's shape, and whether the append-only audit trail is the substrate for it.
- Design the cessation-triggered access widening of clause 4.3, or record a deliberate decision not to.
- Acquire EN 18216 and EN 18222 before any clause 4.5 work β they gate it normatively.
Per-surface verdicts and the full clause-by-clause mapping were recorded separately; everything needed to act on this issue is restated above, so no other document is required to work it.
1. π¨ "Archive" means two different things, and the collision hides a gap
POST /api/v1/dpp/{dppId}/archiveβ "permanently archive a published or suspended passport" after retention expiry β sets a terminal lifecycle status. That is what "archive" means in this codebase.EN 18221:2026 (Digital product passport β Data storage, archiving and data persistence, one of the six standards cited by Commission Implementing Decision (EU) 2026/1736) uses the word for something else entirely: the retention of historical versions of a passport that is still live.
Anyone mapping our surface to that standard by name would tick the box. The box is not ticked.
2. What clause 4.2 actually asks for
In our own words, not the standard's:
3. What we have instead
An append-only audit trail β
repo_audit, enforced by anODAL_AUDITtrigger that rejects mutation at the database. Closest in spirit, and genuinely good, but an audit trail records that something changed. It does not reconstitute the passport as it stood at time T, which is the clause's actual requirement.Continuity snapshots β which fire on publish, and on the status changes that leave the public tier. Publish-triggered, not change-triggered, and they carry the rendered public view rather than the full record.
dpp-types/src/snapshot.rsalready invokes EN 18221 in its module doc β written against an assumption about the standard, before anyone had read it. The posture it describes is right; it is not the same obligation as clause 4.2.Verdict: non-conformant on the evidence. Not "probably fine" β the mechanism the clause describes is not present.
4. Clause 4.3 has a requirement we have not designed for
The back-up provider must hold the most recent version and all required historical versions, with the same access restrictions as the original; the passport is available to specifically authorised users from the back-up for its lifetime; and β the one worth reading twice β
general access via the back-up becomes available once the economic operator is no longer active on the market.
That is a concrete, implementable mechanism for the ESPR Art. 11(e) availability-after-insolvency requirement, and it is more specific than anything in the current design. Our continuity tier keeps a passport reachable when the node is down. It does not model a change of audience on operator cessation β access widening, not merely persisting.
This is a design input as much as a conformance finding.
5.β οΈ Clause 4.5 cannot be assessed at all yet
Replication to the back-up provider must cover the passport and all changes, at a frequency sufficient to minimise data loss β the standard names a Recovery Point Objective as the way to express it. It must be possible via a standardised lifecycle API per EN 18222:2026, and must run over a data exchange protocol per EN 18216:2026.
Neither standard is on hand, so clause 4.5 conformance is not assessable, not merely unassessed.
6. β The good news, and it is substantial
EN 18221's Annex ZA maps its clauses to ESPR essential requirements, and for Art. 10(4) it records that the presumption covers only the technical aspects of the back-up β not the existence of the back-up as such.
So the standard itself separates does the mechanism conform from who may lawfully operate it (ESPR Art. 2(32)'s independent-third-party requirement), and supplies only the first.
That means the continuity work can proceed as a technical conformance exercise without first resolving the service-provider question. Those have been treated as one blocked decision; they are two, and the standard is the citable basis for separating them.
What this issue asks for
Per-surface verdicts and the full clause-by-clause mapping were recorded separately; everything needed to act on this issue is restated above, so no other document is required to work it.