pub struct RevocationShape<const TARGET_LABEL_BYTES: usize, const ENDPOINT_BYTES: usize, const TIME_PAIR_BYTES: usize, const SIG_LABEL_BYTES: usize, const COMMIT_LABEL_BYTES: usize, const REVOKED_LABEL_BYTES: usize>;Expand description
A publication-graph revocation declaration shape — the
structural type identity an application uses to revoke a
previously-published RouteShape.
A revocation carries the same five-component surface as the route
it revokes, plus one additional κ-label position: the κ-label of
the route being revoked. The revocation’s own (valid-from, valid-until) UorTime pair determines from when the revocation
is in effect; the revocation’s signature κ-label authenticates
the revocation per the publishing node’s identity discipline.
A revocation supersedes the route it references when, under the
application’s Calibration, the revocation’s valid-from
UorTime is >= the targeted route’s valid-from per the
partial-order of UorTime. Two parties evaluating the same
(route, revocation) pair under the same Calibration reach the
same supersession decision — substrate-independent per the
UorTime discipline.
The first five const-generic parameters mirror RouteShape’s
per-component widths; REVOKED_LABEL_BYTES is the κ-label width
of the route being revoked (which may differ from
TARGET_LABEL_BYTES if the revoking publisher uses a different
σ-axis than the original publisher).
SITE_COUNT is the sum of the six widths. As with RouteShape,
the Rust type system distinguishes a RevocationShape from any
RouteShape even when their SITE_COUNT values are numerically
equal.
§See also
RouteShapefor the route declaration this revokes.crate::std_typesfor the family contract and IRI namespace.crate::vocabulary::UorTimefor the temporal-ordering primitive.- Wiki: 05 Building Block View § Whitebox
prism - Wiki: 09 Architecture Decisions § ADR-031
- AGENTS.md § 11
§Constraints
- TC-01 — admission is compile-time.
- TC-04 — bilateral compile-time enforcement.
- ADR-013 — closure under
uor-foundation. - ADR-017 — content-addressed identity via the IRI.
- ADR-031 — composes with
prism-cryptoLayer-3 axes.
§Behavior
use prism::pipeline::ConstrainedTypeShape;
use prism::std_types::{RevocationShape, RouteShape};
// Given a route shape and a same-axis revocation shape over it:
type ROUTE = RouteShape<71, 32, 32, 71, 71>;
type REV = RevocationShape<71, 32, 32, 71, 71, 71>;
// When the revocation's SITE_COUNT is queried,
// Then it equals the route's SITE_COUNT plus the revoked-label width.
assert_eq!(
<REV as ConstrainedTypeShape>::SITE_COUNT,
<ROUTE as ConstrainedTypeShape>::SITE_COUNT + 71,
);
// And the revocation shares the closure-under-foundation class IRI.
assert_eq!(
<REV as ConstrainedTypeShape>::IRI,
"https://uor.foundation/type/ConstrainedType",
);
// And carries no embedded constraints.
assert!(<REV as ConstrainedTypeShape>::CONSTRAINTS.is_empty());Trait Implementations§
Source§impl<const TARGET_LABEL_BYTES: usize, const ENDPOINT_BYTES: usize, const TIME_PAIR_BYTES: usize, const SIG_LABEL_BYTES: usize, const COMMIT_LABEL_BYTES: usize, const REVOKED_LABEL_BYTES: usize> ConstrainedTypeShape for RevocationShape<TARGET_LABEL_BYTES, ENDPOINT_BYTES, TIME_PAIR_BYTES, SIG_LABEL_BYTES, COMMIT_LABEL_BYTES, REVOKED_LABEL_BYTES>
impl<const TARGET_LABEL_BYTES: usize, const ENDPOINT_BYTES: usize, const TIME_PAIR_BYTES: usize, const SIG_LABEL_BYTES: usize, const COMMIT_LABEL_BYTES: usize, const REVOKED_LABEL_BYTES: usize> ConstrainedTypeShape for RevocationShape<TARGET_LABEL_BYTES, ENDPOINT_BYTES, TIME_PAIR_BYTES, SIG_LABEL_BYTES, COMMIT_LABEL_BYTES, REVOKED_LABEL_BYTES>
Source§const IRI: &'static str = "https://uor.foundation/type/ConstrainedType"
const IRI: &'static str = "https://uor.foundation/type/ConstrainedType"
type:ConstrainedType instance this shape represents.Source§const SITE_COUNT: usize
const SITE_COUNT: usize
Source§const CONSTRAINTS: &'static [ConstraintRef]
const CONSTRAINTS: &'static [ConstraintRef]
Source§const CYCLE_SIZE: u64
const CYCLE_SIZE: u64
prism_model! macro to lower first_admit
(closure-body grammar G16) to the correct descent measure.
Conventions: Read moreSource§const SITE_BUDGET: usize = Self::SITE_COUNT
const SITE_BUDGET: usize = Self::SITE_COUNT
siteBudget: count of data sites only,
excluding bookkeeping introduced by composition (coproduct tag
sites, etc.). Equals SITE_COUNT for leaf shapes and for
shapes whose composition introduces no bookkeeping (products,
cartesian products). Strictly less than SITE_COUNT for coproduct
shapes and any shape whose SITE_COUNT includes inherited
bookkeeping. Introduced by the Product/Coproduct Completion
Amendment §4a; defaults to SITE_COUNT so pre-amendment
shape impls remain valid without edits.