Temporal Decay
Memories fade naturally. The decay engine ensures old, unreinforced claims lose confidence while important facts persist.
Decay Formula
Confidence decays exponentially based on time since last access:
C(t) = C₀ · e−λt
Where:
- C₀ = confidence at last access
- λ = decay rate (derived from half-life: λ = ln(2) / halfLife)
- t = time elapsed since last access (in hours)
Decay Classes
Each memory is assigned a decay class that determines how fast it fades:
| Class | Half-Life | Use Case | Examples |
|---|---|---|---|
PERMANENT | ∞ | Never decays | Name, birthdate |
STABLE | 720h (30d) | Long-term facts | Job, address, relationships |
MODERATE | 168h (7d) | Recent context | Current project, mood |
EPHEMERAL | 24h (1d) | Transient info | Meeting time, today's plan |
VOLATILE | 6h | Extremely short | Current location, real-time context |
Access Refresh
Every time a memory is recalled (via epistemic_recall or auto-injection), its lastAccessed timestamp is updated. This resets the decay clock, mimicking human memory reinforcement.
Key insight: Frequently recalled memories naturally stay fresh. Forgotten memories gracefully fade.
Tier Demotion
When decay reduces confidence below a tier threshold, the memory is automatically demoted:
- FACT (0.90) → decays to 0.85 → demoted to WORKING
- WORKING (0.50) → decays to 0.45 → demoted to CANDIDATE (no longer auto-injected)
- CANDIDATE (0.30) → decays to 0.25 → demoted to QUARANTINE
Decay Engine
The engine runs on a configurable interval (default: every 6 hours). On each tick:
- Scan all non-PERMANENT memories
- Apply decay formula based on each memory's class
- Update confidence values
- Demote memories that crossed tier thresholds
- Log all changes to the audit trail
- Generate health alerts for memories approaching expiry
Custom Half-Lives
Override default half-lives in your configuration:
{
"decayClasses": {
"STABLE": { "halfLife": 1440 },
"MODERATE": { "halfLife": 336 },
"EPHEMERAL": { "halfLife": 48 }
}
}See the Decay Classes Guide for detailed configuration.