pub struct BackendChanges {
pub since: String,
pub head: String,
pub changes: Vec<ChangeEnvelope>,
pub notes: Vec<CommitNote>,
pub memstead_ref: Option<String>,
}Expand description
Backend-neutral “what changed” report. The engine wrapper
(crate::Engine::changes_since, landing in a follow-up session)
adds rename-similarity clamping warnings, optional agent-notes
piggyback (git-branch only), and the operator-facing
mem: String field on top.
head echoes the resolved cursor of the current state — agents
remember it as the next polling cursor so the next call passes it
straight back as since without a memstead_health round-trip.
Fields§
§since: StringThe cursor the caller passed in, echoed verbatim.
head: StringThe cursor of the current state — opaque to the caller, but stable across consecutive polls when nothing has changed.
changes: Vec<ChangeEnvelope>Per-entity events. Empty when nothing changed (or when the backend has no native diff and inherits the trait’s default impl — folder + archive today).
notes: Vec<CommitNote>Per-commit agent-notes parsed from commit trailers. Empty for
backends without commit history (folder, archive). Populated
by the git-branch backend on every changes_since call — the
walk lives inside the backend so the engine has a single source
of truth for both the rename map (note-driven) and the
per-commit feed, and the MCP include_notes parameter becomes a
renderer-side filter rather than a separate engine-side trigger.
memstead_ref: Option<String>Workspace-level __MEMSTEAD ref tip (unified schemas + per-mem
configs). None for backends without commit history; None
also on git-branch backends where the __MEMSTEAD ref does not
(yet) exist — pre-migration workspaces are legitimate.
Implementations§
Source§impl BackendChanges
impl BackendChanges
Sourcepub fn empty_at(since: &str) -> BackendChanges
pub fn empty_at(since: &str) -> BackendChanges
Empty report at since — the default a backend without a
native diff returns. head echoes since so the caller’s
cursor stays stable across polls.
Trait Implementations§
Source§impl Clone for BackendChanges
impl Clone for BackendChanges
Source§fn clone(&self) -> BackendChanges
fn clone(&self) -> BackendChanges
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 BackendChanges
impl Debug for BackendChanges
impl Eq for BackendChanges
Source§impl PartialEq for BackendChanges
impl PartialEq for BackendChanges
Source§impl Serialize for BackendChanges
impl Serialize for BackendChanges
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for BackendChanges
Auto Trait Implementations§
impl Freeze for BackendChanges
impl RefUnwindSafe for BackendChanges
impl Send for BackendChanges
impl Sync for BackendChanges
impl Unpin for BackendChanges
impl UnsafeUnpin for BackendChanges
impl UnwindSafe for BackendChanges
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
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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