Operation · Forget

Attenuate what stops earning its place.

Forget is a background operation MemState runs under policy — not an API the agent calls after each turn. It attenuates or archives content that has stopped being reinforced by observations or context queries, without deleting it; archived material stays on disk and is reachable by explicit lookup.

Forget applies Pt to Dt without deleting vertices: low-salience topics are archived and their salience is damped further, matching the lowest rung of the forgetting ladder. The research names three thresholds (θsummary, θremove, θarchive); today’s closest wired constant is forget_salience_threshold — see threshold ladder mapping.

Non-destructive by design

Forget never deletes data. Archived topics are excluded from default scans and default retrieval, but their fields, history, and links remain intact and addressable.

The forgetting ladder

Forgetting is a progression, not a single toggle. Content moves down the ladder as its importance decays.

Summarize compress older history planned Detach drop from active working set planned Archive exclude from default scans shipped

Archive is in production today. Summarize and detach are on the roadmap.

StageEffectStatus
SummarizeOlder history is compressed; the topic remains fully active.Planned
DetachLow-value fields or connectors leave the active working set; still reachable explicitly.Planned
ArchiveThe topic is marked archived and excluded from default retrieval; everything stays on disk.Shipped

How it's triggered

  • Forget is not called directly by clients. There is no public HTTP route for it.
  • The reasoner calls it in response to specific events.
EventWhen forget runs
ingest_completeRuns when topic count is at or above the soft limit.
query_completeRuns when topic count is at or above the soft limit.
cronRuns on a schedule when topic count is at or above the soft limit.
memory_pressureRuns unconditionally; pressure signal bypasses the count gate.

What archive does today

  1. Scan active topics. Load non-archived topics via the embedding scan list.
  2. Compare salience. For each topic, check its salience against the archive threshold.
  3. Archive and attenuate. If salience is below the threshold, set archived=true and halve the salience value.
  4. Record the action. Append an archived:<topic_id> marker to the reasoner result.

Knobs

PolicyDefaultRole
topic_count_soft_limit500Gate for running forget on ingest/query/cron events.
forget_salience_threshold0.05Salience cut-off below which a topic gets archived.
max_topics_for_forget_scan10,000Scan bound used by the forget flow.

Operational implications

  • Archived topics are excluded from default active retrieval. They remain reachable with explicit lookups.
  • Forget decisions today look at salience only — not recency or semantic redundancy.
  • Because retrieval bumps salience on every touched topic, active use protects a topic from being archived.

Code map

  • memstate.reasoner.engine.Reasoner.run
  • memstate.core.executor.Executor.run_forget_low_salience
  • memstate.store.graph_store.update_topic_meta

Back to Ingest