Release 0.5.0
First breaking release in the 0.5.x line.
Fixes
- Fix #35 — logs using plain key rotation (no pre-rotation) now resolve. Previous behaviour silently truncated the log to the genesis entry when encountering a non-pre-committed entry.
Breaking changes
- Loud truncation —
DIDWebVHState::validatenow returnsResult<ValidationReport, _>instead ofResult<(), _>.#[must_use]+ atruncated: Option<TruncationReason>field force callers to acknowledge partial validation, and a newPostDeactivationvariant surfaces tampered[genesis, deactivate, attacker-appended]logs that previously went silent.assert_complete()is the one-call strict-mode helper. - Spec-strict witness proofs by default:
eddsa-jcs-2022+proofPurpose: assertionMethodper didwebvh 1.0.WitnessVerifyOptions::check_proof_shapeis the public entry point for shape checks. - Slim top-level re-exports —
Signer,KeyType,Secret,async_traitmoved out of the crate root intodidwebvh_rs::prelude::*. One-release#[deprecated]shim covers theaffinidi_secrets_resolverre-export. - MSRV bumped to 1.94.0 (required by upstream affinidi-* 0.5.x / 0.6.x).
Features
- `experimental-pqc` feature — real, not a stub. ML-DSA-{44,65,87} + SLH-DSA-SHA2-128s work end-to-end for DID create/resolve/rotate. Runtime `WitnessVerifyOptions::extra_allowed_suites` for opting into PQC witness proofs without recompiling.
Dependency hygiene
- Dropped `affinidi-tdk` runtime dep (cli feature). Replaced the one-method wrapper with `did_key::generate_did_key`; removes messaging-SDK + meeting-place transitive graph from cli users.
- ssi 0.15 → 0.16 — unsticks `cargo update` (0.15 pulled yanked `core2 0.4.0` transitively via `libipld 0.14`).
Quality
- Clippy pedantic on with a curated allowlist; `-D warnings` in CI.
- 443 tests (unit + integration + PQC) passing; `cargo audit` clean on default build.
See CHANGELOG.md for full migration notes.
Known issues
- `didwebvh-ts` entryHash upstream bug (non-genesis entries use `"{SCID}"` placeholder instead of previous `versionId` per spec). Cross-impl interop test is `#[ignore]`-d.
- Optional `ssi` feature pulls 7 known-advisory transitive crates (all outside our direct control); default build is advisory-free.
Full Changelog: v0.4.2...v0.5.0