Recall today is reactive: it answers a question, or it fires once at session start. But the moment where memory is worth the most is not when someone asks — it is when an agent has just produced a plan and is about to spend twenty minutes on it.
Memory as a guard, not a lookup table. Nothing in this category does prospective checking.
Shape
The agent proposes six steps. deja reads them and speaks only if it has something:
step 3 — "switch the pool to transaction mode"
contradicts a decision from Jul 12 (claude 8a41c02): transaction mode
cannot hold prepared statements; pgx was pinned instead
step 5 — attempted in 2 earlier sessions, abandoned both times (#527)
Silence on the other four steps. Same discipline as the prompt hook: a guard that comments on everything is a guard nobody reads.
Why this is ours
It needs the decision itself and the rejected alternative, not a summary of the topic — the same asset #526 is built on. And it needs to run in-line, in front of an agent, with no API call: an LLM-based checker adds seconds and a key to every plan, which is exactly the cost that keeps memory out of the loop today.
Where it plugs in
An MCP tool the agent is instructed to call before executing a multi-step plan, plus a deja check - that reads a plan on stdin so it works in a hook or a CI step.
The hard part is not the matching
It is the interruption budget. A false contradiction is expensive twice over: it wastes the run and it teaches the agent to ignore the guard. This has to be tuned for precision at the cost of recall — nine missed contradictions and zero false ones is the right trade, and the opposite ships a tool people disable in a week.
The second hard part: a plan step is a sentence of intent, and our matching is lexical. "switch the pool to transaction mode" and the session that decided against it may share almost no words. This is where the relevance tier gets a real test, and it may simply not be strong enough.
Kill condition
Take real plans from history — the transcripts are full of them — and measure how often a step that a past decision contradicted is actually caught, and how often we cry wolf. If precision is not overwhelming, do not ship it.
Recall today is reactive: it answers a question, or it fires once at session start. But the moment where memory is worth the most is not when someone asks — it is when an agent has just produced a plan and is about to spend twenty minutes on it.
Memory as a guard, not a lookup table. Nothing in this category does prospective checking.
Shape
The agent proposes six steps. deja reads them and speaks only if it has something:
Silence on the other four steps. Same discipline as the prompt hook: a guard that comments on everything is a guard nobody reads.
Why this is ours
It needs the decision itself and the rejected alternative, not a summary of the topic — the same asset #526 is built on. And it needs to run in-line, in front of an agent, with no API call: an LLM-based checker adds seconds and a key to every plan, which is exactly the cost that keeps memory out of the loop today.
Where it plugs in
An MCP tool the agent is instructed to call before executing a multi-step plan, plus a
deja check -that reads a plan on stdin so it works in a hook or a CI step.The hard part is not the matching
It is the interruption budget. A false contradiction is expensive twice over: it wastes the run and it teaches the agent to ignore the guard. This has to be tuned for precision at the cost of recall — nine missed contradictions and zero false ones is the right trade, and the opposite ships a tool people disable in a week.
The second hard part: a plan step is a sentence of intent, and our matching is lexical. "switch the pool to transaction mode" and the session that decided against it may share almost no words. This is where the relevance tier gets a real test, and it may simply not be strong enough.
Kill condition
Take real plans from history — the transcripts are full of them — and measure how often a step that a past decision contradicted is actually caught, and how often we cry wolf. If precision is not overwhelming, do not ship it.