Expand description
Unified engine.
One Engine type, three storage backends: the engine sits
above MemBackend and routes reads / writes to the backend
named by each mount’s mem. The MCP filesystem-mem server
(memstead_mcp::filesystem_server::FilesystemMcpServer), every CLI
lean subcommand, and the macOS UniFFI consumer all reach the
engine through Engine::from_workspace_root (lean: folder +
archive backends) or memstead_git_branch::engine_from_workspace_root
(full: adds git-branch).
§Routing
Each mount holds one mem. Lookup is by mem name: the first
mount whose mem field equals the requested name wins. One mount
per mem is enforced — duplicates are a configuration bug, not a
feature, and the constructor rejects them.
Re-exports§
pub use archive::FromArchiveBytesError;pub use error::BootError;pub use error::EngineError;pub use error::INLINE_LIST_CAP;pub use error::MissingWikiLink;pub use error::ReferrerInfo;pub use error::SchemaSourceDiagnostic;pub use error::format_inline_list_overflow;pub use events::DEFAULT_BROADCAST_CAPACITY;pub use events::EventCallback;pub use events::MemChangedEvent;pub use events::SubscriptionHandle;pub use file_watcher::FileWatcherError;pub use file_watcher::MemRepoWatcher;pub use file_watcher::watch_mem_repo;pub use history::EntityHistoryReport;pub use history::EntityTouch;pub use history::HISTORY_PAGE_DEFAULT;pub use history::HISTORY_PAGE_MAX;pub use history::StoryStart;pub use mutation::delete::DeleteReferrers;pub use mutation::PATCH_OLD_NOT_FOUND_CONTENT_CAP;pub use mutation::RELATIONSHIP_CYCLE_PATH_CAP;pub use outcomes::CreateEntityArgs;pub use outcomes::CreateEntityOutcome;pub use outcomes::DeleteEntityArgs;pub use outcomes::DeleteEntityOutcome;pub use outcomes::RelateAction;pub use outcomes::RelateEntityArgs;pub use outcomes::RelateEntityOutcome;pub use outcomes::RenameEntityArgs;pub use outcomes::RenameEntityOutcome;pub use outcomes::SetSchemaOutcome;pub use outcomes::SetSchemaResult;pub use outcomes::UpdateEntityArgs;pub use outcomes::UpdateEntityOutcome;pub use review::ReviewMarkStatus;pub use review::SetReviewMarkOutcome;pub use boot::SchemaResolver;pub use boot::load_workspace_schemas;pub use boot::resolve_builtin_schema_pin_pub;pub use lifecycle::SchemaStaging;
Modules§
- apply_
commit - Apply a
CommitEnvelopeto the in-memory store. - archive
- Byte-based snapshot API: hydrate an engine from sealed
.memarchive bytes, and export a mem’s current state back to archive bytes. - boot
- Engine construction —
from_mounts*andfrom_workspace_root. - check_
ops - The check operation and derived check state (agent-trust plan 14).
- drift
- Drift detection and per-mem change synthesis.
- due
- The due-brief (first-author-path plan 08): a schema declares its
deadline axis (
memstead_schema::DueAxis), the engine renders “what is due next” as one deterministic markdown brief. - error
- Engine error envelopes.
- events
- Mem-change events: runtime-agnostic callback-based subscribe API.
- export_
html export --format html(first-author-path plan 11): one self-contained HTML file per mem — the read surface for non-operators. A file you hand to a person: no server, no account, no installed anything.- file_
watcher - Cross-process file-watcher convenience for the change-event surface.
- history
- Per-entity history — the narrative query behind an inspector’s “how did this entity get this way”.
- lifecycle
- Engine lifecycle — settings/workspace-root setters, runtime mem add/remove, reload, and export.
- mutation
- Engine mutation entrypoints — split per mutation kind.
- outcomes
- Argument/outcome shapes for the mutation entrypoints
(
Engine::create_entity,update_entity,delete_entity,relate_entity,rename_entity). The MCP wire envelopes and CLI command output formatters branch on these shapes; their field layouts are part of the engine’s public surface. - query
- Engine read paths — accessors and queries.
- review
- Review marks — one per-mem pointer to the last human-approved state (the operator’s review model: diffs accumulate against it, approving moves it, ignoring it entirely is first-class).
Structs§
- Engine
- Unified engine. Holds a list of mounted backends and routes mem-named operations to the right one.
- GitBranch
Ops - Bundle of git-branch-specific op dispatchers. Installed on the
engine at full boot. Each field is one ops-method that previously
lived on the
MemBackendtrait; moving them off the trait keeps the bytes-level primitive surface clean. - Quarantined
Mem - One quarantined mem: the mem-level boot failure that took it out of
service, and the retained mount record
reloaduses to re-attempt the attach after a repair. The reason code/message are plan-01 typed material — the message’s final clause names the repair command, so the roster entry is actionable as-is.
Type Aliases§
- Backend
Factory - Backend factory function pointer. Both flavours’ existing
instantiate_*_backendfunctions match this signature, so the type alias is what bridges the dependency direction (memstead-base can’t depend on memstead-git-branch) without an extra trait. Stateless,Send + Sync + Copy. - GitBranch
Branch Reset Fn Engine::branch_resetdispatch for git-branch mounts. Returns the outcome on success; surfacesBackendError::Othercarrying an in-band marker (UNKNOWN_REF:<raw>orPUSHED_COMMITS_PROTECTED:<sha,sha,...>) the engine layer un-marshals into typedEngineErrors.- GitBranch
Changes Since Fn Engine::changes_sincedispatch for git-branch mounts.- GitBranch
Diff Fn Engine::diffdispatch for git-branch mounts. Walks the two refs inside the workspace’s mem-repo gitdir, produces a per-entitycrate::ops::Diff. Refs are arbitrarygix::rev_parse_singleinputs — branch names, commit SHAs, tag names. Resolves each independently so cross-branch (cross-mem) diffs work uniformly.- GitBranch
Export Fn Engine::export_memdispatch for git-branch mounts.- GitBranch
Export ToBytes Fn Engine::export_mem_to_bytesdispatch for git-branch mounts.- GitBranch
Fetch Fn Engine::fetchdispatch for git-branch mounts.- GitBranch
Prune Residue Fn - Residue-prune dispatch for git-branch mounts.
The
create_memorchestrator calls this whenRecoveryAction::ForceOverwriteis selected against pre-existing storage residue. Dropsrefs/heads/<branch_full_path>and the__MEMSTEAD:mems/<branch_full_path>/config.jsonblob in one ref-edit transaction (the same call theMemBackend::delete_artifactsimpl wraps for delete-files flows). Surfaces as a function pointer somemstead-enginecan drive a prune against an unmounted gitdir without depending onmemstead-git-branch. - GitBranch
Pull Fn Engine::pulldispatch for git-branch mounts.- GitBranch
Push Fn Engine::pushdispatch for git-branch mounts.- GitBranch
Read RefSchemas Fn - Re-read every schema sealed on the workspace’s
__MEMSTEAD:schemas/ref (empty when the ref or subtree is absent). Read-only;Engine::full_refreshis the consumer — the warm-server path that makes an out-of-bandmemstead schema installresolvable without a process restart. - GitBranch
Read Schema File Fn - Read one file from a sealed schema package on the workspace’s
__MEMSTEAD:schemas/<name>@<version>/ref.Ok(None)when the ref, package, or file is absent — absence is a normal state (the install-provenance stamp only exists for path-sourced installs). Read-only; the authoring-drift health axis is the consumer. - GitBranch
Read Tree Fn - Read every
.mdblob atref_nameingitdir, returning(relative_path, utf8_content)pairs. Skips.memstead/engine-internal entries and non-blob nodes. Used by the pre-merge schema-validation passEngine::pullandEngine::pushrun before they advance the branch pointer / push to the remote. - GitBranch
Remote AddFn Engine::remote_adddispatch — configures a named remote on the mem-repo gitdir (upsert: add, or set-url when it already exists).- GitBranch
Rename MemStorage Fn rename_memdispatch for the git-branch backend: move the mem’s content branchrefs/heads/<old>torefs/heads/<new>at the same tip (history preserved) and relocate the__MEMSTEAD:mems/<old>/config blob tomems/<new>/, all in one ref-edit transaction. Refuses (no mutation) when the source branch is missing or the target branch already exists.- GitBranch
Write Schema Fn Engine::install_schemadispatch for the git-branch backend: write a schema package ((relative-path, bytes)pairs) onto the workspace’s unified__MEMSTEAD:schemas/<name>@<version>/ref and return the resulting commit sha. Mirrorsmemstead_git_branch::storage_memstead::write_schema_to_memstead_ref.- Mutation
Clock - Clock the engine reads when stamping mutation timestamps.
Arc’d closure rather than a trait so a test can pin a constant with one line:engine.set_mutation_clock(Arc::new(|| some_time)).