You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: coldness-driven consolidation ("local dreaming") wired into autocohere (#350)
mimir_consolidate was similarity-driven over the RECENT window, never
retired its sources, and only ran when an agent thought to call it —
so it compressed the memories least in need of compression, doubled
storage for everything it touched, and wasn't actually background.
- cold_first param: scan longest-idle entities first (last_accessed
ASC, id tie-break) — compress what decay is about to claim, before
it is lost one entity at a time.
- archive_sources param: retire merged sources once the observation
exists; archive_reason names the observation (traceable, reversible)
and their FTS rows are cleaned. Verified or importance-floored
sources are NEVER archived — the same exemption promise decay makes.
- autocohere step 4: bounded cold_first+archive_sources pass per
category (5 observations max each), skipping 'observation' (no
meta-observations / runaway recursion) and 'memories' (adapter files
must never be similarity-merged). Reports observations_created +
consolidate_sources_archived.
- Defaults unchanged: a plain mimir_consolidate call behaves exactly
as before. docs/retention.md gains a consolidation section.
Tests: consolidate_archive_sources_retires_merged_but_exempts_verified_and_scored,
consolidate_cold_first_targets_longest_idle_window.
Suite: 182 passed / 0 failed.
Co-authored-by: tcconnally <hermes@perseus.observer>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
"description": "Merge overlapping/duplicative entities in the same category into durable, evidence-tracked 'observations' — the mirror image of mimir_conflicts, which flags dissimilar (contradictory) pairs. Groups entities whose pairwise trigram similarity meets similarity_threshold, then creates one new entity per group (category='observation') whose body carries a summary (the highest-certainty source's content), the full list of source entity ids as evidence, and a proof_count. Source entities are NOT deleted or archived — they remain independently accessible, and the new observation links back to each of them (relationship='evidence_for') for full audit. Read-only preview with dry_run=true.",
2005
+
"description": "Merge overlapping/duplicative entities in the same category into durable, evidence-tracked 'observations' — the mirror image of mimir_conflicts, which flags dissimilar (contradictory) pairs. Groups entities whose pairwise trigram similarity meets similarity_threshold, then creates one new entity per group (category='observation') whose body carries a summary (the highest-certainty source's content), the full list of source entity ids as evidence, and a proof_count. The observation links back to each source (relationship='evidence_for') for full audit. By default sources stay live; set archive_sources=true to retire merged sources ('local dreaming' — verified or importance-floored sources are never archived), and cold_first=true to target the memories decay is about to claim. mimir_autocohere runs a bounded cold_first+archive_sources pass automatically. Read-only preview with dry_run=true.",
"description": "Preview which observations would be created without writing anything"
2032
+
},
2033
+
"cold_first": {
2034
+
"type": "boolean",
2035
+
"default": false,
2036
+
"description": "Scan the COLDEST entities first (longest since last access) instead of the most recent — compress memories that are fading anyway, before decay archives them individually"
2037
+
},
2038
+
"archive_sources": {
2039
+
"type": "boolean",
2040
+
"default": false,
2041
+
"description": "Archive merged source entities after the observation is created (archive_reason names the observation; reversible). Verified or importance-floored sources are never archived."
0 commit comments