Replace unverified third-party semantic IDs and gate provenance in CI - #73
Closed
LKSNDRTMLKV wants to merge 2 commits into
Closed
Replace unverified third-party semantic IDs and gate provenance in CI#73LKSNDRTMLKV wants to merge 2 commits into
LKSNDRTMLKV wants to merge 2 commits into
Conversation
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 19 |
| Duplication | 0 |
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.
This was referenced Jul 30, 2026
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Six of the seven third-party semanticIds this crate emitted were wrong, and
dpp-digital-linkdeclarespub 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/Nameplatehttps://admin-shell.io/idta/CarbonFootprint/CarbonFootprint/0/9https://admin-shell.io/ZVEI/TechnicalData/Submodel/1/2https://admin-shell.io/idta/cds/dppMetadata/1None 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..../IDTA/02006/2/0(Nameplate).../IDTA/02004/1/2/Manufacturer(Handover Doc)/Manufacturerwas our own suffix.../IDTA/02023/0/9(Carbon Footprint).../IDTA/02011/1/0("Physical Properties")urn:eclass:0173-1#01-AKJ975#001(repairability)urn:eclass:is not an ECLASS-published scheme, and CSI01is Classification Class where02is Property — a class identifier used as a property semanticIdurn:idta:aas:submodel:digital-product-passport:1.0https://admin-shell.io/idta/cds/dppMetadata/1(IDTA-02099-1, EN 18223:2026)urn:samm:io.catenax.battery.battery_pass:6.0.0#BatteryPassWhat 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->dueDiligenceUrlin the battery mapper, and the test that was asserting the misspelling.The gate
semantic-ids-allowlist.jsonplus tests inall_sectors_aas.rs. Every emitted semanticId must beurn:odal-node:*or carry a provenance record naming who verified it and when; an entry missingverifiedOn/verifiedByis 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_submodelpath — a gate that only walkedsectors/is exactly how the coinedurn:idta:identifier survived there unnoticed.Mutation-checked: reintroducing
https://admin-shell.io/IDTA/02023/0/9fails 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_UNITandREPAIRABILITY_SCOREare 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 checkgreen.