Skip to main content

Crate uor_addr

Crate uor_addr 

Source
Expand description

uor-addr — UOR-ADDR, the typed reference vocabulary for typed content-addressing across recursively-grammared formats.

UOR-ADDR sits at the standard-library layer per ADR-031: every format-specific addressing realization shares the common architectural surface — the AddressInput trait, the single AddrBounds capacity profile, the single AddressLabel output shape, and the single format-independent AddressResolverTuple ψ-tower — while supplying its own concrete prism_model! + verb! plus a canonical-form input handle (ADR-060: the handle’s as_binding_value produces the canonical bytes as a source- polymorphic prism::operation::TermValue carrier, so the ψ-tower is shared verbatim and there is no fixed input buffer or size cap).

§Authoritative sources

Every realization shipped in this crate cites the authoritative standard for the canonical form it implements. The complete index lives in STANDARDS.md; each module’s docstring carries the same citation inline.

  • JSON realization — RFC 8259 (syntax), RFC 8785 (canonical form), UAX #15 (NFC), FIPS 180-4 (SHA-256).
  • S-expression realization — Rivest 1997 canonical S-expressions (Sexp.txt), RFC 2693 §3 (SPKI canonical form citation), FIPS 180-4 (SHA-256).
  • Storage cost-model variant — ADR-048 typed-commitment surface, ADR-047 U6 bandwidth-additivity, QS-06 storage-tier admission exemplar.

§Module layout

  • common — the shared architectural surface (trait, V&V framing).
  • hash — the pluggable σ-axis family (AddrHash): sha256 (default), blake3, sha3-256, keccak256, sha512 — every realization’s address_<algorithm> entry points.
  • label — the per-axis AddressLabel* output shapes (https://uor.foundation/addr/AddressLabel/<algorithm>) and the width-generic KappaLabel κ-label carrier.
  • Format-specific realizationsjson (JCS-RFC8785 + NFC), sexp (Rivest 1997), xml (W3C XML-C14N 1.1 subset), asn1 (X.690 DER), ring (UOR-Framework Amendment 43 §2), codemodule (CCMAS), cbor (RFC 8949 §4.2).
  • Schema-pinned descendantsschema::photo, schema::document, schema::codemodule_signed.
  • Cost-model-bearing variantsvariant::storage (AndCommitment<…, LexicographicLessEqThreshold>), variant::signed (SingletonCommitment<UltrametricCloseTo<2>>).
  • Categorical compositioncomposition (ADR-061): the five operations on the Atlas image inside E₈ — g2 (commutative binary product), f4 (± involution quotient), e6 (degree-partition filtration), e7 (S₄-orbit augmentation), e8 (direct embedding) — each on all five σ-axes, composing operand κ-labels into a new one.

§What’s shipped

The full UOR-ADDR architectural surface — common trait + a pluggable σ-axis family (sha256 / blake3 / sha3-256 / keccak256 / sha512) + seven format-specific realizations + three schema-pinned descendants + two cost-model-bearing variants. See ARCHITECTURE.md for the architectural commitments each realization upholds and STANDARDS.md for the authoritative-source citations.

§Validation & verification against the wiki specification

Each architectural commitment names the wiki ADR or concept it satisfies. The wiki at https://github.com/UOR-Foundation/UOR-Framework/wiki is the normative source.

Wiki commitmentCrate realisation
ADR-007 / ADR-010 pluggable Hasher (substrate ships none)hash::AddrHash — sha256 / blake3 / sha3-256 / keccak256 (prism::crypto)
ADR-031 Prism standard library (uor-prism façade)prism::pipeline / vocabulary / seal / crypto
ADR-018 / ADR-037 HostBounds capacity profilethe single shared AddrBounds (every realization binds it)
ADR-020 PrismModel<H, B, A, R, C> declarationjson::AddressModel (and one per realization)
ADR-023 typed-iso input shapejson::JsonValue (and one per format)
ADR-024 implementation closure (verb!-emitted bodies)json::address_inference (one per realization)
ADR-027 sealed Output shape (output_shape!-emitted)AddressLabel + per-axis AddressLabel{Blake3,Sha3_256,Keccak256}
ADR-035 canonical k-invariants branch ψ_1 → ψ_7 → ψ_8 → ψ_9every realization’s address_inference body
ADR-035 verb-body ψ-residuals disciplineverb_arena_contains_no_sigma_residuals test per realization
ADR-036 ResolverTuple (eight resolver categories)the single shared AddressResolverTuple (format-independent)
ADR-046 canonicalization at carrier productioneach input handle’s as_binding_value (host boundary, not ψ_9)
ADR-048 TypedCommitment (5th model parameter)EmptyCommitment default; variant::storage non-default
ADR-057 bounded recursive structural typingthe recursive parsers’ native-stack depth guards (MAX_*_DEPTH)
ADR-060 source-polymorphic value carrier (no fixed buffer)input handles yield Inline/Borrowed/Stream prism::operation::TermValue
TC-02 mechanism sealingAddressWitness owns the replayable Trace<256> + fingerprint
TC-05 replay round-trip (anamorphism)AddressWitness::verify via prism::replay::certify_from_trace
Algebraic closure (ADR-024 / ADR-026)SITE_COUNT disjoint Site constraints; χ(N(C)) = SITE_COUNT (71 sha256/blake3, 73 sha3-256, 74 keccak256, 135 sha512)

§Quick reference

  • json::address — the JSON entry point: canonicalizes raw JSON bytes (JCS-RFC8785 + NFC) and folds the borrowed canonical form through the model’s forward() method.
  • sexp::address — the S-expression entry point.
  • AddressInput — the common trait every realization implements.
  • AddressLabel — the default (sha256) ψ-pipeline output shape (71 sites — the wire-format sha256:<64hex> width); the other axes bind AddressLabel{Blake3,Sha3_256,Keccak256}.

Re-exports§

pub use bounds::AddrBounds;
pub use bounds::AddrBounds64;
pub use bounds::ADDR_INLINE_BYTES;
pub use bounds::ADDR_INLINE_BYTES_64;
pub use common::AddressInput;
pub use hash::AddrHash;
pub use hash::MAX_DIGEST_BYTES;
pub use hash::MAX_LABEL_BYTES;
pub use label::AddressLabel;
pub use label::AddressLabelBlake3;
pub use label::AddressLabelKeccak256;
pub use label::AddressLabelSha256;
pub use label::AddressLabelSha3_256;
pub use label::AddressLabelSha512;
pub use label::KappaLabel;
pub use label::LabelDecodeError;
pub use label::ADDRESS_LABEL_BYTES;
pub use outcome::AddressOutcome;
pub use outcome::AddressWitness;
pub use outcome::VerifyError;
pub use resolvers::AddressResolverTuple;

Modules§

asn1
uor_addr::asn1 — the ASN.1 realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations” § uor-addr-asn1).
bounds
AddrBounds — the single HostBounds capacity profile shared by every UOR-ADDR realization (ADR-037), and the foundation-derived inline-carrier width ADDR_INLINE_BYTES (ADR-060).
canonical
Canonical-form byte primitives — no_std, no_alloc, slice-in / slice-out.
cbor
uor_addr::cbor — the CBOR realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations”).
codemodule
uor_addr::codemodule — the code-module AST realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations” § uor-addr-codemodule).
common
UOR-ADDR’s common architectural surface — the declarations every format-specific addressing realization shares.
composition
uor_addr::composition — the five categorical operations on the Atlas image inside E₈ (wiki ADR-061).
gguf
uor_addr::gguf — the GGUF v3 realization of UOR-ADDR.
hash
crate::hash — the pluggable σ-axis hash family (wiki ADR-007 / ADR-010: the substrate ships no hasher; the application selects one).
json
uor_addr::json — the JSON realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations” § uor-addr-json).
label
AddressLabel* — UOR-ADDR’s common output shape family (ARCHITECTURE.md “Common output shape”), one specialization per admissible σ-axis (crate::hash).
onnx
uor_addr::onnx — the ONNX realization of UOR-ADDR.
outcome
Pipeline-output carrier — the shape every realization’s address() entry point returns.
resolvers
AddressResolverTuple — the single eight-resolver tower shared by every UOR-ADDR realization (ADR-036).
ring
uor_addr::ring — the ring-element realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations” § uor-addr-ring).
schema
uor_addr::schema — UOR-ADDR’s schema-pinned descendants (ARCHITECTURE.md “Schema-pinned descendants”).
sexp
uor_addr::sexp — the S-expression realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations” § uor-addr-sexp).
variant
uor_addr::variant — UOR-ADDR’s cost-model-bearing variants (ARCHITECTURE.md “Cost-model-bearing variants”).
xml
uor_addr::xml — the XML realization of UOR-ADDR (ARCHITECTURE.md “Format-specific realizations” § uor-addr-xml).

Structs§

Blake3Hasher
The admissible σ-axes (re-exports of prism’s hashers). Every realization binds Sha256Hasher by default and admits the others via its address_<algorithm> entry points. Sha512Hasher is a Hasher<64> (bound with AddrBounds64); the rest are Hasher<32>. BLAKE3 hasher. 32-byte digest (the standard BLAKE3 output width; XOF mode is not exposed at the axis level).
EmptyCommitment
Wiki ADR-048: the no-commitment baseline. bandwidth_bits = 0, accept_prob = 1, evaluate = true, predicate_count = 0. Direct correspondence to type:Conjunction’s empty case. The foundation-default for PrismModel’s 5th substrate parameter.
Keccak256Hasher
The admissible σ-axes (re-exports of prism’s hashers). Every realization binds Sha256Hasher by default and admits the others via its address_<algorithm> entry points. Sha512Hasher is a Hasher<64> (bound with AddrBounds64); the rest are Hasher<32>. Keccak-256 hasher. 32-byte digest. The pre-FIPS-202 sponge (the variant adopted by Ethereum); distinguished from SHA3-256 by the 0x01 vs 0x06 domain-separation byte.
Sha3_256Hasher
The admissible σ-axes (re-exports of prism’s hashers). Every realization binds Sha256Hasher by default and admits the others via its address_<algorithm> entry points. Sha512Hasher is a Hasher<64> (bound with AddrBounds64); the rest are Hasher<32>. FIPS-202 SHA3-256 hasher. 32-byte digest.
Sha256Hasher
The admissible σ-axes (re-exports of prism’s hashers). Every realization binds Sha256Hasher by default and admits the others via its address_<algorithm> entry points. Sha512Hasher is a Hasher<64> (bound with AddrBounds64); the rest are Hasher<32>. FIPS-180-4 SHA-256 hasher. 32-byte digest.
Sha512Hasher
The admissible σ-axes (re-exports of prism’s hashers). Every realization binds Sha256Hasher by default and admits the others via its address_<algorithm> entry points. Sha512Hasher is a Hasher<64> (bound with AddrBounds64); the rest are Hasher<32>. FIPS-180-4 SHA-512 hasher. 64-byte digest.