vauban-claim 0.1.0

Vauban Claim Algebra — reference implementation of draft-vauban-claim-algebra-00 (post-quantum claim sextuplet + 5 composition operators, canonical CBOR/JSON codec).
Documentation
//! # Vauban Claim Algebra — reference implementation
//!
//! Implements `draft-vauban-claim-algebra-00` (IETF Internet-Draft).
//! See `specs/draft-vauban-claim-algebra-00.md` for the full specification
//! and `specs/cddl/claim.cddl` for the normative grammar.
//!
//! ## Claim sextuplet
//!
//! Every Vauban Claim is the irreducible 6-tuple
//! `(Subject, Predicate, Evidence, TemporalFrame, RevelationMask, Anchor)`.
//!
//! ## Six non-negotiable properties
//!
//! 1. **Auditable** — full chain of custody, queryable post-hoc.
//! 2. **Verifiable** — independently verifiable without product access.
//! 3. **Composable** — five operators (∧, →, ⊕, ▷, ¬) form a closed algebra.
//! 4. **Privacy-preserving** — selective disclosure with Poseidon commitments.
//! 5. **Post-quantum** — STARKs only; SNARKs explicitly excluded.
//! 6. **Sovereignty-preserving** — exit plan documented per dependency.
//!
//! ## Scope (v0.1.0)
//!
//! Encoding/decoding (CBOR canonical RFC 8949 §4.2.1, JSON), structural
//! invariants, the five composition operators with their algebraic and
//! validity rules, and ≥85 conformance test vectors. Cryptographic
//! verification of `Evidence` payloads (STARK / BBS+ / SD-JWT-VC / mdoc
//! / TEE) and on-chain `Anchor` resolution are deferred to subsequent
//! crates per the architecture: this crate is the *grammar* and *algebra*,
//! not the prover or the verifier core.

#![cfg_attr(not(feature = "std"), no_std)]
#![deny(unsafe_code)]
#![warn(missing_docs)]

extern crate alloc;

pub mod builder;
pub mod claim;
pub mod codec;
pub mod composition;
pub mod error;
pub mod primitives;
pub mod transcript;
pub mod validator;
#[cfg(feature = "poseidon")]
pub mod poseidon;
#[cfg(feature = "transcript-v2")]
pub mod transcript_v2;

pub use crate::builder::ClaimBuilder;
pub use crate::claim::{Claim, ClaimRef, ClaimRefAlg};
pub use crate::composition::{
    ClaimComposition, CompositionRecord, OperatorBody, OperatorTag,
};
pub use crate::error::{CompositionError, EncodingError, TranscriptError};
pub use crate::validator::{validate, ValidationReport, Violation};
#[cfg(feature = "transcript-v2")]
pub use crate::transcript_v2::TranscriptVersion;
#[cfg(feature = "transcript-v2")]
pub use crate::claim::TranscriptResult;
pub use crate::primitives::{
    anchor::{Anchor, AnchorEntry, AnchorType},
    evidence::{Evidence, EvidenceEnvelope, EvidenceScheme, StarkProofEnvelope},
    predicate::{EncodedMembership, EncodedRange, Predicate, PredicateType},
    revelation_mask::{CommittedField, HashAlgTag, RevelationMask},
    subject::{Subject, SubjectId, SubjectType},
    temporal::TemporalFrame,
};