0.13.0 — crate boundaries, the open sector lane, and verified semantic IDs - #76
Merged
Conversation
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| Security | 4 high |
🟢 Metrics 290 complexity · 39 duplication
Metric Results Complexity 290 Duplication 39
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
force-pushed
the
feat/open-sector-lane
branch
from
July 30, 2026 14:47
a3005e6 to
6f97d0a
Compare
LKSNDRTMLKV
force-pushed
the
fix/withdraw-catena-x-identifier
branch
from
July 30, 2026 14:47
9f9515b to
dda50e5
Compare
LKSNDRTMLKV
force-pushed
the
fix/withdraw-catena-x-identifier
branch
from
July 30, 2026 17:30
b366577 to
0f8f32b
Compare
This was referenced Jul 30, 2026
LKSNDRTMLKV
force-pushed
the
fix/withdraw-catena-x-identifier
branch
from
July 30, 2026 18:34
2748a3c to
488f10e
Compare
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.
The whole 0.13.0 body. Supersedes #73, #74 and #75, whose branches are ancestors of this one — all fifteen commits are here unchanged in content.
Implements the 0.13.0 scope of
ADR-010(sealed, fourth amendment). Every commit is a pure move, a pure fix, or a self-contained feature.Crate layout after this
dpp-digital-linkkeeps its published name — what remains is exactly what the name says, so no crates.io name is abandoned and no shim is needed.dpp-aasanddpp-vcare new names, claimed permanently at publish.The four substantive changes
1. The sector axis is open on the wire.
SectorandSectorDatawere plain derives, so a passport whose sector was not one of twelve variants failed to deserialize, andOthermatched only the literal tag"other"— discarding the real key. Meanwhile the catalog, schema registry, disclosure map and plugin manifests were all string-keyed data. The wire was the one closed part.Both types now carry the tag (
Other(String),Other { sector, data }) with hand-written serde that falls through instead of failing. An unknown sector round-trips byte-identically — the test compares serialised bytes, notValues, because a signature is computed over bytes.Adding a product group is now a catalog manifest plus a schema file. This was scheduled for 0.14.0 and brought forward: it is the only item clamped to first issuance, and one breaking release beats two.
2. Crate boundaries. AAS and the trust layer move out.
LocalIdentityServicehad to move todpp-vctoo — it depends on bothjws/keystoreanddid_builder/passport_credential, so leaving it would have closed a dependency cycle. The disclosure contract moves todpp-domain, which is what leavesdpp-cryptodependency-free.3. Semantic IDs. Seven third-party identifiers were emitted; six were malformed — four IDTA URNs using a document-number form IDTA does not use, an ECLASS IRDI with the Property/Classification code space inverted, and one coined
urn:idta:identifier. The seventh (Catena-X) is real, current and CC-BY-4.0, but its correspondence to our battery submodel was never established, so it was withdrawn too: a malformed identifier fails closed, a well-formed one naming the wrong concept fails open.dpp-aasnow emits no third-party semanticIds. The interop claim is the narrow, true one — AAS-shaped output carrying our own semantics. All seven are recorded insrc/semantic_ids/allowlist.jsonundertracked, with the correct value where known, under a test-enforced key set.4. README examples are compiled.
cargo nextestdoes not run doctests, so no README example in this workspace had ever been compiled. Wiringtest-docintojust checkimmediately surfacedPassport::new(does not exist), three wrong field names, a trait impl missing five methods, and two directory trees being compiled as Rust.Gate
just checkgreen: fmt, clippy-D warnings, workspace tests, doctests, all ten plugin suites,cargo doc -D warnings,cargo audit.Key behaviours are pinned rather than asserted in prose — round-trip byte identity, typed-lane preservation, untagged-payload refusal, the untyped variant refusing to alias a typed sector, semanticId provenance, and the allowlist key set. The provenance gate and the doctest harness were both mutation-checked.
Reviewer notes
main. An earlier history rewrite (removing a keystore an example had written into the tree) left the branch sharing no recent ancestry withmain; it would have shown 43 commits and duplicated a month of history. Rebased to 15.Engine repin prepared in odal-node/dpp-engine#66; it needs a follow-up commit for the sector-lane fallout (
Sectoris no longerCopy) and is blocked until this publishes.