Skip to content

Replace unverified third-party semantic IDs and gate provenance in CI - #73

Closed
LKSNDRTMLKV wants to merge 2 commits into
mainfrom
fix/semantic-id-provenance
Closed

Replace unverified third-party semantic IDs and gate provenance in CI#73
LKSNDRTMLKV wants to merge 2 commits into
mainfrom
fix/semantic-id-provenance

Conversation

@LKSNDRTMLKV

Copy link
Copy Markdown
Member

Six of the seven third-party semanticIds this crate emitted were wrong, and dpp-digital-link declares pub mod aas — so they shipped in the 0.12.0 publish. Zero users, so this is a fix-forward, changelog-noted correction rather than a yank.

What was wrong

The URI scheme was wrong, not just the versions. Real IDTA semanticIds are name-based:

  • https://admin-shell.io/idta/nameplate/3/0/Nameplate
  • https://admin-shell.io/idta/CarbonFootprint/CarbonFootprint/0/9
  • https://admin-shell.io/ZVEI/TechnicalData/Submodel/1/2
  • https://admin-shell.io/idta/cds/dppMetadata/1

None uses the admin-shell.io/IDTA/<specification-document-number>/<v>/<v> form all four of ours used — those were specification document numbers transcribed into URIs, which no consumer would resolve.

Identifier Verdict
.../IDTA/02006/2/0 (Nameplate) wrong form; also superseded by v3.0.1
.../IDTA/02004/1/2/Manufacturer (Handover Doc) wrong form; /Manufacturer was our own suffix
.../IDTA/02023/0/9 (Carbon Footprint) wrong form; superseded by v1.0.1
.../IDTA/02011/1/0 ("Physical Properties") wrong form, and IDTA 02011 is Generic Frame for Technical Data — the doc comment named a different template
urn:eclass:0173-1#01-AKJ975#001 (repairability) urn:eclass: is not an ECLASS-published scheme, and CSI 01 is Classification Class where 02 is Property — a class identifier used as a property semanticId
urn:idta:aas:submodel:digital-product-passport:1.0 coined; IDTA's is https://admin-shell.io/idta/cds/dppMetadata/1 (IDTA-02099-1, EN 18223:2026)
urn:samm:io.catenax.battery.battery_pass:6.0.0#BatteryPass correct and current — kept

What this does

Replaces the six with honestly-namespaced urn:odal-node: identifiers rather than swapping in the real values. Swapping one unverified identifier for another repeats the mistake; adopting the correct IDTA identifiers is a separate change that needs the specification PDFs read first. An own-coined concept truthfully says "this is ours" — a wrong IRDI falsely says "this is IDTA's", to a machine.

Also splits Submodel from Property semanticIds. Four of the six were used in both roles — the same URI identified a Submodel and a Property inside it. Since these are being minted fresh, minting one that knowingly conflates two AAS concepts would be the same defect class.

Fixes dueDigiligenceUrl -> dueDiligenceUrl in the battery mapper, and the test that was asserting the misspelling.

The gate

semantic-ids-allowlist.json plus tests in all_sectors_aas.rs. Every emitted semanticId must be urn:odal-node:* or carry a provenance record naming who verified it and when; an entry missing verifiedOn/verifiedBy is dropped rather than honoured.

The walker serialises to JSON and walks that, so it reaches every nesting depth and includes the generic map_dpp_to_aas_submodel path — a gate that only walked sectors/ is exactly how the coined urn:idta: identifier survived there unnoticed.

Mutation-checked: reintroducing https://admin-shell.io/IDTA/02023/0/9 fails the gate with the identifier, JSON path and sector named.

Breaking

Emitted semanticIds change for all six submodels and four newly-distinct properties. Constants change value; DIGITAL_PRODUCT_PASSPORT, PRODUCT_NAME, MANUFACTURER_NAME, CO2E_PER_UNIT and REPAIRABILITY_SCORE are new. Belongs in 0.13.0.

Needs a human before merge

The Catena-X allowlist entry has verifiedBy: "assisted web verification, pending founder sign-off". It was checked against the Eclipse Tractus-X repository with the source recorded, but the allowlist is meant to record what a person read. Replace that field with a name, or re-verify.

just check green.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 19 complexity · 0 duplication

Metric Results
Complexity 19
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@LKSNDRTMLKV

Copy link
Copy Markdown
Member Author

Superseded by #76, which carries the whole 0.13.0 body — this branch is an ancestor of it and every commit is included unchanged in content. Closing to leave one reviewable PR for the release.

@LKSNDRTMLKV
LKSNDRTMLKV deleted the fix/semantic-id-provenance branch July 30, 2026 17:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant