-
-
Notifications
You must be signed in to change notification settings - Fork 8
Memory Inhibition
Biological Analog: Retrieval-Induced Forgetting (Anderson et al., 1994) — the brain actively suppresses competing memories during recall. When you try to remember where you parked today, your brain inhibits memories of yesterday's parking spot. This is an active process, not passive decay.
Suppression is different from forgetting:
| Operation | API | Effect | Reversible? |
|---|---|---|---|
| Forget | memory.forget(id) |
Tombstones the record — permanently excluded from all scans | No |
| Suppress | memory.suppress(id, reason) |
Adds to suppression set — excluded from recall results | Yes |
Tombstoning modifies the off-heap flags byte (bit 0 = 1). Suppression maintains a separate in-memory set — the underlying memory is untouched and can be un-suppressed later.
flowchart TD
subgraph "Suppress (Reversible)"
S1["memory.suppress(id, reason)"] --> S2["Add to suppression set<br/><i>in-memory, auditable</i>"]
S2 --> S3["Recall pipeline filters<br/>suppressed IDs after scoring"]
S3 --> S4["memory.unsuppress(id)<br/><i>restores to recall</i>"]
end
subgraph "Forget (Permanent)"
F1["memory.forget(id)"] --> F2["Set tombstone flag<br/><i>off-heap bit flip</i>"]
F2 --> F3["Scorer Phase 1 skips<br/>in ~1 CPU cycle"]
F3 --> F4["Cannot be undone"]
end
style S4 fill:#2ecc71,color:white
style F4 fill:#e74c3c,color:white
Performance difference: Tombstoned memories are skipped in Phase 1 of the scorer (~1 cycle). Suppressed memories go through the full 6-phase scoring pipeline and are only filtered afterward. For bulk removal, forget() is more efficient.
Suppression is checked after the 6-phase scorer completes but before habituation:
flowchart TD
SCORER["6-Phase Scorer<br/><i>produces scored candidates</i>"] --> SUPPRESS["Step 4: Suppression Filter<br/><b>Remove suppressed IDs</b>"]
SUPPRESS --> HAB["Step 5a: Habituation<br/><i>attenuate repeated results</i>"]
HAB --> GRAPH["Steps 5c–5e: Graph Augmentation"]
GRAPH --> SORT["Final Sort → Top-K"]
style SUPPRESS fill:#e74c3c,color:white
style SORT fill:#00b894,color:white
User: "Please forget what I said about project X"
→ memory.suppress("project-x-conversation-1", "User requested redaction")
→ memory.suppress("project-x-conversation-2", "User requested redaction")
Agent switching to backend work:
→ memory.suppress("frontend-task-context", "Switching to backend work")
Later, switching back:
→ memory.unsuppress("frontend-task-context")
Data source under validation:
→ memory.suppress(staleIds, "Source under validation — suppressed until confirmed")
Suppress certain memories to test agent performance without them:
→ experimentGroup.forEach(id → memory.suppress(id, "A/B test: control group"))
- :material-speedometer: [[Performance|Memory--Performance]] — benchmark results and optimization techniques
- :material-sleep: [[Habituation — Anti-Filter Bubble|Memory--Habituation]] — automatic score attenuation
- :material-brain: [[Architecture|Memory--Architecture]] — where suppression fits in the pipeline
- Home
- Getting Started
-
Cognitive Memory
- Overview
- Getting Started
- Use Cases & Configuration
- API Reference
- Architecture
- The 6-Phase Scoring Pipeline
- Retrieval Stack
- Cognitive Profiles
- Salience & Importance
-
Biological Systems
- Overview
- Cortex — Tier Stores
- Hippocampus — Sleep Consolidation
- Synapse — Tags & Scoring
- Dopamine — Surprise Detection
- Amygdala — Emotional Valence
- 4-Layer Cognitive Graph
- Habituation — Anti-Filter Bubble
- Inhibition — Suppression
- Interference — Deduplication
- Prospective — Future Intents
- Metamemory — Self-Reflection
- Sync — Persistence & Replication
- Performance & Internals
- Cognitive Evaluation
- Synapse & Cortex
- Architecture
- Community