UPG001 - Lossy upgrade transformation¶
Description¶
The v0.6 → v0.7 compat shim
(dppvalidator.compat.upgrade_0_6_to_0_7.upgrade) encountered a
field that has no v0.7.0 equivalent and dropped it. The
transformation is structurally complete but lossy — the source
information is no longer represented in the upgraded payload.
Category¶
Compat shim (Phase 4 of docs/plans/UNTP_0.7.0_MIGRATION.md).
Severity¶
warning (or info for sentinel placeholders that were already
non-data, e.g. "undefined" in Material.symbol).
Common causes¶
| Source field | Why it's dropped |
|---|---|
Product.registeredId |
The field's home moved from Product to Party in v0.7. Re-attach to Product.relatedParty[*].party.registeredId on the appropriate party. |
Material.symbol containing a non-base64 string |
v0.7's Image type expects a real base64 payload + mediaType. Sentinel placeholders are dropped. |
| Whole conformityClaim / scorecard fold-down | The fold from v0.6's typed claim/scorecard hierarchy into a single Claim shape is best-effort; review for fidelity. |
How to fix¶
The shim emits a JSONPath-style path on the warning so you know
exactly what was dropped:
[UPG001] (warning) credentialSubject.registeredId: v0.6 Product.registeredId
has no v0.7 equivalent on Product — the field has moved to Party. The value
was dropped; if required, re-attach it to
Product.relatedParty[*].party.registeredId manually.
When the loss is acceptable (e.g. you don't need that registeredId
in the upgraded payload), pass --accept-warnings to
dppvalidator migrate to write the upgraded file anyway. A
sidecar <output>.warnings.json always records the full warning
list so you can audit later.
See also¶
- Migration guide: 0.6 → 0.7 — full field rename / shape-change table and the documented limitations.
- Error Overview