update() delegates fact changes to revise()¶
Status: accepted (2026-07-06), implemented
MemoryStore.update() rewrites fact/content/embedding in place, keeping
memory_id, revision, and valid_from — which silently violates the
append-only supersession invariant the lineage system (and the paper) is built
on, and it can rewrite superseded historical rows. Decision: a content change via
update() must delegate to revise() (new revision, old head superseded).
In-place mutation stays allowed only for importance/metadata-only edits,
which cannot corrupt lineage — and those must refuse to touch superseded rows.
We chose delegation over deleting update() outright to keep the public API
stable; the previous_versions JSON-metadata versioning becomes dead once this
lands.