pub struct MemoryMetadata {Show 32 fields
pub id: MemoryId,
pub galaxy: Galaxy,
pub content_hash: String,
pub tags: Vec<String>,
pub importance: f32,
pub created_at: DateTime<Utc>,
pub accessed_at: DateTime<Utc>,
pub access_count: u64,
pub coords: HolographicCoords,
pub coord5d: Coordinate5D,
pub memory_type: MemoryType,
pub neuro_score: f32,
pub novelty_score: f32,
pub emotional_valence: f32,
pub emotional_weight: f32,
pub is_protected: bool,
pub is_private: bool,
pub model_exclude: bool,
pub source: String,
pub source_trust: f32,
pub half_life_days: f32,
pub recall_count: u64,
pub version: u64,
pub agent_id: String,
pub title: Option<String>,
pub topic: Option<String>,
pub tier: Tier,
pub class: Option<MemoryClass>,
pub dup_count: u64,
pub validity: ValidityState,
pub corroborated_by: Vec<Uuid>,
pub revision_count: u32,
}Expand description
Metadata for a memory entry.
Fields§
§id: MemoryIdMemory UUID
galaxy: GalaxyWhich galaxy this memory lives in
content_hash: StringContent hash for deduplication
Tags for categorization
importance: f32Importance score (0.0 to 1.0)
created_at: DateTime<Utc>Creation timestamp
accessed_at: DateTime<Utc>Last accessed timestamp
access_count: u64Access count
coords: HolographicCoordsHolographic coordinates
coord5d: Coordinate5D5D holographic coordinate for spatial indexing
memory_type: MemoryTypeMemory classification
neuro_score: f32Dynamic neural strength (0.0-1.0) — decays over time, boosts on recall
novelty_score: f32Novelty score (0.0-1.0) — decays as info becomes familiar
emotional_valence: f32Emotional valence (-1.0 = negative, 1.0 = positive)
emotional_weight: f32Emotional weight / resonance (0.0-1.0)
is_protected: boolHard protection from forgetting
is_private: boolExclude from MCP tool responses
model_exclude: boolExclude from AI model context windows
source: StringProvenance: “user”, “tool”, “inferred”, “web”
source_trust: f32Trust score for source (0.0-1.0, defends against memory poisoning)
half_life_days: f32Per-memory configurable decay half-life in days
recall_count: u64Recall count (independent from access_count)
version: u64Version for multi-agent cache coherence
agent_id: StringLast writer identity
title: Option<String>Human-readable title (envelope v2, S4). None = untitled; absent in old records deserializes as None, never as a fabricated value.
topic: Option<String>Topic label for subject-scoped retrieval (envelope v2, S4)
tier: TierLifecycle tier (V8 S5) — stamped at creation, dream-cycle-only
transitions. Pre-S5 rows default to Tier::Episodic.
class: Option<MemoryClass>Typology class (V8 S5, crate::typology) — stamped at creation
when confidently recognized. None = unstamped (pre-S5 row, or
content the detector does not confidently recognize); never
fabricated as a claim about the content.
dup_count: u64Duplicate-write counter (V8 S5 dedup gate) — bumped instead of re-inserting identical content; importance decays with it.
validity: ValidityStateLifecycle validity (V8 Slice B, D1+D2) — reuses
wm_core::episodic::ValidityState; the dream cycle is the only
transition path (see validity_sweep). Pre-Slice-B rows default to
Active, so the recall surface is byte-identical until the
WM_VALIDITY_ENFORCE knob turns on.
corroborated_by: Vec<Uuid>Corroborating session ids (bridging consensus counter, 2nd PR after
Slice B) — distinct sessions whose agents independently stand behind
this memory, recorded via memory.corroborate. Empty = uncorroborated
(the pre-counter default for every row). Sessions nest agents and
machines (maintainer ruling 2026-09-04: sessions are the working unit for
now); each entry is client-asserted like user_id — attribution,
never authentication.
revision_count: u32Content-revision counter (V8 S11c) — how many times this memory’s
content has changed through memory.update. The per-entry chain
itself lives in the store’s revisions DBI (memory.revisions).
Trait Implementations§
Source§impl Clone for MemoryMetadata
impl Clone for MemoryMetadata
Source§impl Debug for MemoryMetadata
impl Debug for MemoryMetadata
Source§impl<'de> Deserialize<'de> for MemoryMetadata
impl<'de> Deserialize<'de> for MemoryMetadata
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>,
Auto Trait Implementations§
impl Freeze for MemoryMetadata
impl RefUnwindSafe for MemoryMetadata
impl Send for MemoryMetadata
impl Sync for MemoryMetadata
impl Unpin for MemoryMetadata
impl UnsafeUnpin for MemoryMetadata
impl UnwindSafe for MemoryMetadata
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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