pub struct TypeDefinition {Show 25 fields
pub name: String,
pub description: String,
pub when_to_use: String,
pub boundaries: Vec<String>,
pub exemplar: Option<Exemplar>,
pub legacy_examples: Option<Value>,
pub system_message: Option<String>,
pub sections: Vec<SectionDef>,
pub metadata_fields: Vec<MetadataFieldDef>,
pub title_weight: f32,
pub text_fields: Vec<String>,
pub hierarchy_relationship: String,
pub edge_weight_overrides: IndexMap<String, f32>,
pub no_self_loop_relationships: Vec<String>,
pub legacy_propagating_relationships: Option<Vec<String>>,
pub leaf: bool,
pub updatable_fields: Vec<String>,
pub health_required_fields: Vec<String>,
pub staleness_threshold_days: u32,
pub write_rules: Vec<String>,
pub required_outgoing: Vec<RequiredOutgoing>,
pub constraints: Vec<ConstraintDef>,
pub due: Option<DueAxis>,
pub edge_weights: IndexMap<String, f32>,
pub declared_metadata_keys: Vec<String>,
}Fields§
§name: String§description: String§when_to_use: String§boundaries: Vec<String>§exemplar: Option<Exemplar>One canonical, ENGINE-VALIDATED exemplar entity for this type
(agent-trust plan 09) — the few-shot material an authoring
agent actually learns from. Validated against this very type
through the real create path (dry_run) at schema
install/seal time: a package whose exemplar does not conform
refuses with a typed error naming the type and the defect —
there is no warn-and-carry mode, so an exemplar can never
drift into teaching the wrong shape. Served at
verbosity: full only (the lite skeleton stays unchanged).
Optional per type; the built-in reference schemas are complete.
legacy_examples: Option<Value>Legacy-key sentinel for the retired examples: list — a field
that promised few-shot teaching but was never validated nor
served by any surface (dead vocabulary). Authoring contexts
refuse it with a typed error naming exemplar; sealed
contexts tolerate and drop it. Never serialized.
system_message: Option<String>§sections: Vec<SectionDef>§metadata_fields: Vec<MetadataFieldDef>§title_weight: f32§text_fields: Vec<String>§hierarchy_relationship: String§edge_weight_overrides: IndexMap<String, f32>§no_self_loop_relationships: Vec<String>Rel-types on which memstead_relate refuses a SELF-LOOP
(from == to) when this type is the source. That refusal is this
field’s ONLY effect — it propagates nothing, implies no
evidence obligation (real impact propagation is the
status_propagation constraint). Renamed from the misleading
propagating_relationships (agent-trust plan 06): the old key
refuses at authoring/install load with a typed error naming
this one; sealed content (built-ins, installed refs) loads
with the old key translated.
legacy_propagating_relationships: Option<Vec<String>>Legacy-key sentinel: captures a propagating_relationships:
value during deserialization so the loader can refuse (strict
authoring contexts) or translate (sealed contexts). Never
serialized; never part of the payload surface.
leaf: boolTerminal-by-construction marker: entities of this type are leaves — they carry no edges BY DESIGN, so health’s orphan axis exempts their edge-less entities and reports them as a separate leaf population instead (visible, never vanished). Leaf means “no edges required”, not “edges forbidden”: a leaf-typed entity WITH edges stays legal, and every other health axis, search, and traversal treats leaf entities exactly like any other. Declarative per-type flag (the sixth declarative form the agent-toolbox constraint vocabulary anticipated), served at both schema verbosity levels.
updatable_fields: Vec<String>§health_required_fields: Vec<String>§staleness_threshold_days: u32§write_rules: Vec<String>§required_outgoing: Vec<RequiredOutgoing>Outgoing-edge invariants the schema asserts for this type.
Each entry names a list of relationship names plus a cardinality
constraint. The engine evaluates these on every memstead_create /
memstead_update (post-application of inline relations: / patches)
and surfaces unsatisfied blocks as a single
MISSING_REQUIRED_OUTGOING warning per entity. Tier-2 (warn,
never block). Empty default — types without required_outgoing
keep current behaviour.
constraints: Vec<ConstraintDef>Declared keep-health constraints (the constraint vocabulary —
see ConstraintDef). Empty default: a schema declaring no
constraints behaves byte-identically to before the vocabulary
existed.
due: Option<DueAxis>The type’s declared due axis (see DueAxis) — absent for
types without deadline semantics; a schema without any due:
declaration behaves byte-identically to before the axis
existed.
edge_weights: IndexMap<String, f32>§declared_metadata_keys: Vec<String>Raw author-declared metadata-field keys, recorded by the loader
BEFORE the base-metadata merge injects the engine fields
(type, created_date, last_modified, tags). The
install-path reserved-key check
(crate::loader::check_reserved_metadata_keys) reads this
list so it can refuse an author-declared reserved key without
false-positives on the injected ones. Skipped during
serialization so the on-disk form round-trips.
Implementations§
Source§impl TypeDefinition
impl TypeDefinition
Sourcepub fn edge_weight(&self, rel: &str) -> f32
pub fn edge_weight(&self, rel: &str) -> f32
Look up an edge weight by relationship name. Falls back to _default
when the relationship is unknown; returns 1.0 only if _default
itself is missing (the loader normally guarantees it exists).
pub fn section(&self, key: &str) -> Option<&SectionDef>
pub fn catch_all_section(&self) -> Option<&SectionDef>
pub fn metadata_field(&self, key: &str) -> Option<&MetadataFieldDef>
Sourcepub fn suggest_metadata_field(&self, key: &str) -> Option<String>
pub fn suggest_metadata_field(&self, key: &str) -> Option<String>
Closest declared metadata-field key for a typo, used by the CRUD layer to build a “did you mean …” hint when rejecting an unknown key.
Sourcepub fn suggest_section(&self, key: &str) -> Option<String>
pub fn suggest_section(&self, key: &str) -> Option<String>
Closest declared section key for a typo. Used by the CRUD layer to
build the UNKNOWN_SECTION envelope’s suggestion field on inbound
create/update writes.
Sourcepub fn required_sections(&self) -> impl Iterator<Item = &SectionDef>
pub fn required_sections(&self) -> impl Iterator<Item = &SectionDef>
Required sections in declaration order.
Sourcepub fn optional_sections(&self) -> impl Iterator<Item = &SectionDef>
pub fn optional_sections(&self) -> impl Iterator<Item = &SectionDef>
Optional sections in declaration order.
Sourcepub fn system_message_str(&self) -> &str
pub fn system_message_str(&self) -> &str
System message as a string — empty if unset.
Trait Implementations§
Source§impl Clone for TypeDefinition
impl Clone for TypeDefinition
Source§fn clone(&self) -> TypeDefinition
fn clone(&self) -> TypeDefinition
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 TypeDefinition
impl Debug for TypeDefinition
Source§impl<'de> Deserialize<'de> for TypeDefinition
impl<'de> Deserialize<'de> for TypeDefinition
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for TypeDefinition
impl JsonSchema for TypeDefinition
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more