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:

ClassHalf-LifeUse CaseExamples
PERMANENTNever decaysName, birthdate
STABLE720h (30d)Long-term factsJob, address, relationships
MODERATE168h (7d)Recent contextCurrent project, mood
EPHEMERAL24h (1d)Transient infoMeeting time, today's plan
VOLATILE6hExtremely shortCurrent 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:

  1. Scan all non-PERMANENT memories
  2. Apply decay formula based on each memory's class
  3. Update confidence values
  4. Demote memories that crossed tier thresholds
  5. Log all changes to the audit trail
  6. 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.