pub struct CalGrainResult {
pub hash: String,
pub grain_type: String,
pub score: f64,
pub fields: Value,
pub score_breakdown: Option<Value>,
pub explanation: Option<String>,
pub relative_time: Option<String>,
pub is_deterministic: bool,
pub contested_by: Option<Vec<String>>,
}Expand description
A single grain in a CAL result set (projected view).
Fields§
§hash: StringContent-address hash of the grain (hex string).
grain_type: StringCanonical grain type name (e.g. "fact", "event").
score: f64Final relevance score (RRF-fused).
fields: ValueAll grain fields as a JSON object.
score_breakdown: Option<Value>Per-component score breakdown. Present when WITH score_breakdown.
explanation: Option<String>Human-readable ranking explanation. Present when WITH explanation.
relative_time: Option<String>Coarse age label (“3 hours ago”). Present when
WITH annotate_relative_time.
is_deterministic: boolTrue when this grain came from a RECALL source with no ABOUT clause —
i.e. no semantic comparison was performed and score is a structural
sentinel, not a relevance signal. Such grains must bypass score-based
filters (WITH min_score) at the post-merge ASSEMBLE level; their
inclusion is governed by the source’s PRIORITY/BUDGET allocation.
contested_by: Option<Vec<String>>The other live heads that contest this grain’s (subject, relation).
Present only when CONTRADICTIONS or WITH contradiction_detection
asked for fork status, and only on a grain that is itself a live tip of
an open fork. Non-empty means: another writer holds a different current
value for this key and neither has been merged. An agent should treat
the value as disputed rather than settled.
Trait Implementations§
Source§impl Clone for CalGrainResult
impl Clone for CalGrainResult
Source§fn clone(&self) -> CalGrainResult
fn clone(&self) -> CalGrainResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CalGrainResult
impl Debug for CalGrainResult
Auto Trait Implementations§
impl Freeze for CalGrainResult
impl RefUnwindSafe for CalGrainResult
impl Send for CalGrainResult
impl Sync for CalGrainResult
impl Unpin for CalGrainResult
impl UnsafeUnpin for CalGrainResult
impl UnwindSafe for CalGrainResult
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> Fruit for T
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