Most memory projects stop at storage, and this sentence is why yours is more interesting: "Persistent memory is only useful if you can tell when it's no longer true." A suggestion that builds on your branch-provenance tracking: stamp every memory with the commit SHA it was born at. Staleness checking then becomes a bounded question, "did anything in the diff range between birth SHA and HEAD touch the symbols this memory cites," which tree-sitter answers precisely, instead of an open-ended scan of the current tree. It also gives merges a clean semantic: a branch-scoped memory promoted at merge keeps its provenance, and a memory whose birth commit never reached main can be aged out automatically. The local-plus-inspectable stance matters as much as the mechanism; a memory layer you cannot audit becomes a second CLAUDE.md you cannot read. I keep a comparison of the current persistent-memory approaches for Claude Code at skillselion.com/guides/claude-code-persistent-mem… (disclosure: I run Skillselion), and OmniMemory's git-awareness is a genuine differentiator in that field.