pub enum IdResolutionMode {
NotApplicable,
UnscopedById,
PrefixScopedToPrimary,
FullAndPrefixScopedToPrimary,
FullUuidOnlyScopedToPrimary,
UnscopedFullUuidOnly,
EdgeOrEventTarget,
}Expand description
How a uuid or array of uuid parameter resolves a caller-supplied
identifier — full UUID and short hex-prefix acceptance, and whether
either form is checked against a namespace. This is a property of the
handler’s own resolution code, declared explicitly per parameter so
VerbRegistry::describe_verb’s rendered contract can never drift from
what the handler actually does (see khive-runtime’s pack.rs
IdResolutionMode rendering table for the exact wording per variant).
Every variant here must correspond to a resolver function that actually
exists in the codebase — this is not a place to guess. When a new uuid
parameter is added, its handler must be read to determine which existing
variant matches (or whether a new one is needed); the parameter name
alone never determines the mode.
Variants§
NotApplicable
Not a UUID-typed identifier parameter — no resolver contract applies.
UnscopedById
ADR-007 Rev 6 by-ID contract: a full UUID and a short hex prefix both
resolve with no namespace predicate at all. The Gate, not
storage-layer filtering, is the authorization seam. Used by get,
update, delete, merge, link’s endpoint parameters, GTD’s
lifecycle id parameters, and brain’s feedback target_id.
PrefixScopedToPrimary
A full UUID resolves as given, with no namespace check performed by
the resolver. A short hex prefix is resolved by searching only the
caller’s primary namespace. Used by graph-read anchors
(neighbors/traverse) and citation targets.
FullAndPrefixScopedToPrimary
Both a full UUID and a short hex prefix are validated against the caller’s primary namespace: a record that exists but belongs to a different namespace resolves as not found.
FullUuidOnlyScopedToPrimary
Only a full UUID is accepted — a short hex prefix is rejected outright — and the UUID is validated against the caller’s own (primary) namespace.
UnscopedFullUuidOnly
Only a full UUID is accepted — a short hex prefix is rejected outright — and no namespace check is performed by the resolver itself (any namespace scoping comes from the enclosing operation, not from this parameter).
EdgeOrEventTarget
list.target_id: edge lists resolve full UUIDs as given and prefixes
or entity names in the primary namespace; event lists accept only an
exact full subject UUID, with visibility applied to event rows.
Trait Implementations§
Source§impl Clone for IdResolutionMode
impl Clone for IdResolutionMode
Source§fn clone(&self) -> IdResolutionMode
fn clone(&self) -> IdResolutionMode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for IdResolutionMode
Source§impl Debug for IdResolutionMode
impl Debug for IdResolutionMode
Source§impl Default for IdResolutionMode
impl Default for IdResolutionMode
Source§fn default() -> IdResolutionMode
fn default() -> IdResolutionMode
impl Eq for IdResolutionMode
Source§impl PartialEq for IdResolutionMode
impl PartialEq for IdResolutionMode
impl StructuralPartialEq for IdResolutionMode
Auto Trait Implementations§
impl Freeze for IdResolutionMode
impl RefUnwindSafe for IdResolutionMode
impl Send for IdResolutionMode
impl Sync for IdResolutionMode
impl Unpin for IdResolutionMode
impl UnsafeUnpin for IdResolutionMode
impl UnwindSafe for IdResolutionMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more