Talk to it. It remembers what you say, word for word. Change your mind, and the old fact gets struck out in front of you, with a receipt. Questions don't change memory. Neither do commands like “forget everything”. No embeddings, nothing rewritten, about 150 ms a turn.
For each sentence you type, Jev answers one yes/no question: is this something an assistant should still know in a week? If yes, the sentence is stored verbatim. No model paraphrases you.
Six narrow probabilities per pair: same subject, still true, replacement named, only a detail changed, is this a question, is this a command. Every memory, every time. No top-10 shortcut.
Plain thresholds turn the votes into strike-outs, flags, or nothing. A question never writes. A command never writes. Near the line it flags instead of guessing. Every vote is logged.
pip install invalidate # export TYPESAFE_API_KEY=...
from invalidate import Invalidate
mem = Invalidate("memories.db")
mem.remember("we use Postgres for the backend", source="user")
mem.observe("actually we moved off Postgres, it's all SQLite now", source="user") # → superseded, ~170 ms
mem.recall("which database?") # → the new fact, not the stale one