diff --git a/poc-memory/src/store/ops.rs b/poc-memory/src/store/ops.rs index 06477da..6c6ea94 100644 --- a/poc-memory/src/store/ops.rs +++ b/poc-memory/src/store/ops.rs @@ -76,11 +76,17 @@ impl Store { let _lock = StoreLock::acquire()?; self.refresh_nodes()?; + let prov = Provenance::from_env() + .map(|p| p.label().to_string()) + .unwrap_or_else(|| "manual".to_string()); + let node = self.nodes.get(key) .ok_or_else(|| format!("No node '{}'", key))?; let mut deleted = node.clone(); deleted.deleted = true; deleted.version += 1; + deleted.provenance = prov; + deleted.timestamp = now_epoch(); self.append_nodes_unlocked(std::slice::from_ref(&deleted))?; self.nodes.remove(key); Ok(()) @@ -109,15 +115,23 @@ impl Store { .ok_or_else(|| format!("No node '{}'", old_key))? .clone(); + let prov = Provenance::from_env() + .map(|p| p.label().to_string()) + .unwrap_or_else(|| "manual".to_string()); + // New version under the new key let mut renamed = node.clone(); renamed.key = new_key.to_string(); renamed.version += 1; + renamed.provenance = prov.clone(); + renamed.timestamp = now_epoch(); // Deletion record for the old key (same UUID, independent version counter) let mut tombstone = node.clone(); tombstone.deleted = true; tombstone.version += 1; + tombstone.provenance = prov; + tombstone.timestamp = now_epoch(); // Collect affected relations and update their debug key strings let updated_rels: Vec<_> = self.relations.iter()