We have a lazy mental model of what makes a memory stale, and it is costing us. The model is age. Old memories are suspect, recent ones are fresh, so you decay the old stuff and trust the new. Recency weighting, time based decay, a half life on every note. It is clean, it is cheap, and it is wrong often enough to matter.
Take the case that broke it for me. You write a memory today about how some module works. Tomorrow you refactor that module. The memory is one day old, as fresh as it gets, and it is already poison, because it describes a thing that no longer exists. Every recency score in the world says trust this, it is new. Reality says throw it out, it is about a deleted thing. Age had nothing useful to say.
Now run it backwards. You have a memory about how your auth flow works, written a year ago. Auth has not changed since. By age that memory is ancient and you would weight it down, maybe drop it. But it is perfectly current, because the thing it is about is still standing exactly as described. A year old and completely live.
So age is not the question. The question is whether the thing a memory is about is still here, still on the path you are actually on. That is lineage, not time. A memory is fresh or stale based on the health of whatever it is attached to, and the clock is at best a weak proxy for that.
The cleanest version of this is the abandoned branch. You learn something while chasing an approach you later drop. The instant you abandon that approach, every lesson tied to it goes stale, not gradually, not on a decay curve, but all at once, because the thing they were about stopped being part of where you are going. Those memories could be five minutes old. They are still stale, because staleness is about lineage and the lineage just died. Age cannot see that event at all. The clock keeps treating those five minute old notes as the freshest things in the store, right up until the agent acts on one and walks into a wall that no longer needed to exist.
Which is the part worth dwelling on, because a stale memory is not neutral. It is worse than having no memory at all. A blank spot makes the agent cautious. A confident, wrong memory makes it bold in exactly the wrong direction. The lesson "do X to handle module Y" was true once, it gets retrieved with full confidence, the agent does X, and Y was refactored last week so X now breaks something. The agent did not merely fail to help itself. It actively misled itself using something that used to be correct. And that is the cruel part. The most dangerous memories are not the ones that were always junk. They are the ones that were genuinely true, earned trust, and then quietly stopped applying while still sounding authoritative.
So why does everyone reach for age anyway. Because age is free. Every memory comes with a timestamp whether you asked for one or not, and decaying by time takes one line of code. Lineage is expensive. To track it you have to know what each memory is actually about, and whether that thing still exists and still sits on the live path, which is a dependency graph between your memories and the moving parts of the system they describe. Almost nobody maintains that graph. So we use the cheap proxy and silently eat the cost every time the proxy and the truth disagree, which is precisely when a recent memory has gone stale or an old one is still gold.
There is a thread back to something I keep circling. If you only stored the moral, "always do X," you cannot even tell what X was attached to, so you have no hope of noticing the thing went away. If you kept the event, what happened and what it was about, you at least have a shot at spotting that the subject got deleted or abandoned. And the single cleanest signal that a memory has gone stale is that acting on it stopped working, which is the outcome signal almost nothing records. Staleness detection and outcome capture keep turning out to be the same missing instrument seen from different sides.
I do not have a cheap way to track lineage, and I am not going to pretend otherwise. Time is the lazy proxy and I reach for it too, because the real thing is hard. But I have stopped believing that recency is a good measure of trust, and I have started believing that the question is not how old a memory is but whether the world it described is still there. So I am curious how others handle it. Do you decay by time and accept the misses, or have you found a way to tie a memory to the thing it is about and retire it when that thing changes? That second one feels right and expensive, which is usually where the interesting problems live.
Top comments (0)