pub struct HealthSummary {Show 13 fields
pub stale_entities: Vec<StaleEntity>,
pub missing_fields: Vec<HealthReport>,
pub orphan_count: usize,
pub stub_count: usize,
pub warnings: Vec<WarningHint>,
pub quarantined: Vec<QuarantinedMemReport>,
pub boot_diagnosis: Option<Value>,
pub leaf_entities_by_type: BTreeMap<String, usize>,
pub dangling_links: Option<Vec<DanglingLink>>,
pub findings: Option<Vec<IntegrityFinding>>,
pub tag_distribution: Option<Vec<TagDistribution>>,
pub tag_distribution_folded: Option<Vec<FoldedTag>>,
pub untagged_entities: Option<UntaggedStats>,
}Expand description
Aggregated health report for the whole graph.
Fields§
§stale_entities: Vec<StaleEntity>§missing_fields: Vec<HealthReport>§orphan_count: usize§stub_count: usize§warnings: Vec<WarningHint>Typed non-fatal issues visible to every caller of Engine::health().
Populated in two layers: Engine.load_warnings contributes drift
warnings surfaced during mem load / reload / attach
(SuspiciousNestedPrefix, future load-time checks); the MCP
handler additionally appends request-scoped warnings (unknown
include keys, clamped limit) on top of whatever the engine
merged. Empty on the happy path.
quarantined: Vec<QuarantinedMemReport>Quarantine roster: mems that failed their mem-level boot step
and serve nothing until repaired + reloaded. Always present in
Engine::health() output when non-empty — a boot-honesty fact,
never behind an include gate. Empty (and omitted from the wire)
on a healthy workspace, keeping default output byte-unchanged.
boot_diagnosis: Option<Value>Workspace-level boot diagnosis from a diagnostic-shell engine
({code, message}): why the real workspace could not boot at
all. Absent on every ordinarily booted engine.
leaf_entities_by_type: BTreeMap<String, usize>Real-entity count per leaf-declared type (<schema_ref>:<type>
keys) — the population the orphan axis exempts because those
types are terminal by construction (agent-trust plan 06).
Visible, never vanished. Empty (and omitted from the wire) for
schemas that declare nothing, keeping default output
byte-unchanged.
dangling_links: Option<Vec<DanglingLink>>Inline wiki-links in entity section bodies that resolve to stub
targets (no on-disk markdown file). Populated only when the caller
opts in via include=["dangling_links"]; None otherwise, so
absence-of-key means “not requested” and presence-of-empty-array
means “requested, zero findings”. Scan is handler-driven (same
pattern as warnings above), so non-MCP callers of
Engine::health() always see None unless they invoke
health::collect_dangling_links directly.
findings: Option<Vec<IntegrityFinding>>Integrity findings ({ id, axis, code, detail }) over the
conformance axis — and, under include=["integrity"], the
consistency axis too. Populated only when the caller opts in
via include=["conformance"] / include=["integrity"];
None otherwise (same handler-driven pattern as
dangling_links: absence means “not requested”, an empty
array means “requested, fully integral”).
tag_distribution: Option<Vec<TagDistribution>>Tag distribution (count per distinct tag, case-sensitive) over non-stub
entities. Populated only when the caller opts in via include=["tags"].
Case-variant drift is surfaced via the sibling field [tag_distribution_folded].
tag_distribution_folded: Option<Vec<FoldedTag>>Case-drift audit sidecar: entries where two or more casings of the same
canonical tag (lowercase) both appear in authored tags. Only entries with
variants.len() > 1 are returned — the default read of tag_distribution
stays untouched. Populated alongside tag_distribution.
untagged_entities: Option<UntaggedStats>Count of non-stub entities whose tags metadata is missing, empty,
or resolves to zero effective tags after splitting on , and trimming.
Populated alongside tag_distribution when include=["tags"].
Trait Implementations§
Source§impl Clone for HealthSummary
impl Clone for HealthSummary
Source§fn clone(&self) -> HealthSummary
fn clone(&self) -> HealthSummary
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 HealthSummary
impl Debug for HealthSummary
Auto Trait Implementations§
impl Freeze for HealthSummary
impl RefUnwindSafe for HealthSummary
impl Send for HealthSummary
impl Sync for HealthSummary
impl Unpin for HealthSummary
impl UnsafeUnpin for HealthSummary
impl UnwindSafe for HealthSummary
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
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> 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