Files
hermes-recovery/references/memory-consolidation-proposal.md

4.0 KiB

Hermes Memory Consolidation — Architecture Proposal

Author: Sho'Nuff Date: July 9, 2026 Status: DRAFT — awaiting Network Services Team input


1. Current Problem

MEMORY.md is a flat list of freeform text entries separated by §. The consolidation system (hermes-consolidate.py) prunes stale entries using:

  • A static PROTECT regex listing keywords that prevent deletion
  • Stale-word detection (complete, done, resolved, etc.)
  • A size safety valve that drops oldest-entered entries when over 7,000 chars

Failure observed on first run: 3 critical entries were pruned because they didn't match the PROTECT regex. The S3 backup preserved them, but without that safety net they would have been permanently lost.

Root Cause

The system has no way to judge importance. It treats all unprotected entries equally and has no semantic understanding of what's durable vs ephemeral.


2. Proposed Solutions

Add explicit priority metadata to each entry:

[P1] Core: netcup KVM, 8C/15G/512GB, Debian 13...
[P1] Germaine's #1 rule...
[P2] Apex on wphost02...
[P3] Shark game updates complete...

Pruner logic:

  1. Keep all [P1] entries (never pruned)
  2. Keep [P2] entries unless over 80% of limit
  3. Prune [P3] entries first (completed tasks, transient state)
  4. Never prune below [P1] + [P2] combined size

Pros: Simple, explicit, user can tag importance when writing Cons: Requires tagging discipline at entry creation time

Option B: Dual-Store Architecture

Split memory into two files:

memories/MEMORY.md      — Durable facts (never auto-pruned)
memories/WORKING.md     — Transient state (auto-pruned aggressively)

Durable store (MEMORY.md): identity, rules, credentials, infrastructure, user preferences, team definitions. Only manually edited. No auto-prune.

Working store (WORKING.md): task status, queue items, completed work, session notes, temporary context. Auto-pruned every 10 min.

Pros: No risk of losing durable facts. Working store can be more aggressive. Cons: Two files to manage. Boundary between them requires judgement.

Option C: Template-Based Structuring

Each entry follows a defined schema:

type: infrastructure | rule | preference | task | personal | team
priority: p1 | p2 | p3
expires: 2026-08-01 | never
content: ...

Pruner:

  • expires: never and priority: p1 → never pruned
  • priority: p3 or past expiry → always pruned
  • Others → size-based pruning

Pros: Surgical precision. No false positives. Cons: Highest initial investment. More complex parsing. Schema changes require migration.


3. Comparison

Criteria Current Option A (Tags) Option B (Dual) Option C (Schema)
Setup effort Done 🟡 1 hour 🟡 1 hour 🔴 3+ hours
Risk of data loss 🔴 HIGH 🟡 Low Minimal Minimal
Maintenance burden 🟡 Medium 🟡 Low Low 🔴 Medium
User discipline needed 🔴 None (but risky) 🟡 Some 🟡 Some 🔴 High
Machine-readable No 🟡 Partial 🟡 Partial Yes
Migration complexity 🟡 Low 🟡 Low 🔴 Medium

4. Recommendation

Option A (Priority Tagging) + apply to dual-store concept:

  • Keep one MEMORY.md for now
  • Add [P1], [P2], [P3] tags
  • Auto-tag entries where possible (infrastructure = P1, completed tasks = P3)
  • The consolidation system protects P1 + P2, prunes P3 aggressively
  • If the file still grows, split into durable/working stores in v2

5. DR Plan per Server — Note

This proposal covers Hermes memory only. Germaine has also requested a comprehensive Disaster Recovery plan for each server in the ITPP infrastructure. That is a separate deliverable currently being compiled in /root/.hermes/references/server-dr-plans.md.

Network Services Team review requested.