uor-addr 0.2.0

UOR-ADDR — the typed reference vocabulary for content-addressing across recursively-grammared formats. Standard-library Layer-3 Prism realization of the UOR Foundation; ships the common architectural surface plus the JSON realization under JCS-RFC8785 + NFC + SHA-256.
Documentation

uor-addr

UOR-ADDR — the typed reference vocabulary for typed content-addressing across recursively-grammared formats. A UOR Foundation standard-library Layer-3 realization grounded against the wiki specification at https://github.com/UOR-Foundation/UOR-Framework/wiki.

A single Rust crate shipping UOR-ADDR's common architectural surface plus multiple concrete realizations of that surface, each a PrismModel<HostTypes, HostBounds, Hasher, ResolverTuple, TypedCommitment> that derives a 71-byte sha256:<64hex> content address from a typed format-specific value.

use uor_addr::json::address as json_address;
let outcome = json_address(br#"{"foo": "bar"}"#).unwrap();
// outcome.address == "sha256:7a38bf81…ee24b"

use uor_addr::sexp::address as sexp_address;
let outcome = sexp_address(b"(a b c)").unwrap();
// outcome.address == "sha256:cdd489dd…f50e"

Realizations

Every realization implements the common [uor_addr::common::AddressInput] trait and emits the canonical 71-byte κ-label.

  • Format-specific: [json] (RFC 8785 JCS + RFC 8259 + UAX #15 NFC), [sexp] (Rivest 1997), [xml] (W3C XML-C14N 1.1 subset), [asn1] (ITU-T X.690 DER), [ring] (UOR-Framework Amendment 43 §2), [codemodule] (CCMAS canonical AST).
  • Schema-pinned descendants that import existing standards per UOR's schema-import discipline: [schema::photo] → schema.org/Photograph, [schema::document] → schema.org/Article, [schema::codemodule_signed] → in-toto Statement v1.
  • Cost-model-bearing variants per ADR-048: [variant::storage] binds AndCommitment<EmptyCommitment, SingletonCommitment<LexicographicLessEqThreshold>>; [variant::signed] binds SingletonCommitment<UltrametricCloseTo<2>>.

Full per-realization authoritative-source index in STANDARDS.md.

Architectural commitments

The complete architectural specification is in ARCHITECTURE.md; the numbered conformance contract is in CONFORMANCE.md; the V&V acceptance gate (just vv) is documented in VERIFICATION.md.

Key commitments every realization upholds:

  • ADR-035 canonical k-invariants branch — the address_inference verb body composes ψ_1 + ψ_7 + ψ_8 + ψ_9; ψ_2..ψ_6 are off-path with identity-emitting resolver bodies.
  • ADR-046 canonicalization at carrier production — the format's canonicalization happens at the host boundary in the input handle's as_binding_value (which yields the ADR-060 TermValue carrier), so the shared ψ-tower is format-independent and ψ_9 only folds the carrier.
  • ADR-047 σ-projection Hardening Principle — every realization binds prism::crypto::Sha256Hasher as the canonical hash axis.
  • ADR-048 typed-commitment surface — default C = EmptyCommitment; cost-model variants bind non-default C selections.
  • ADR-057 bounded recursive structural typing — enforced by the recursive parsers' native-stack depth guards (MAX_*_DEPTH); inputs are otherwise unbounded (no width / count caps).
  • ADR-060 source-polymorphic value carrier — each input handle yields Inline / Borrowed / Stream TermValue bytes; there is no fixed input buffer or size ceiling.

Build + V&V

cargo build           # rustc >= 1.83
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
just vv               # full V&V gate
just examples         # 16 runnable comprehensive demos

no_std-compatible (default-features = false); only alloc required. #![forbid(unsafe_code)] — zero unsafe blocks.

License

Apache-2.0, matching uor-foundation.