Skip to content

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:

Text Only
[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