{"slug":"triage/09-MEMORY_CONSOLIDATION","title":"09 — Memory Consolidation","section":"triage","sectionLabel":"Triage","status":"canon","type":"document","path":"triage/09-MEMORY_CONSOLIDATION.mdx","bytes":2890,"description":"How approved material consolidates into organizational memory scopes with provenance.","updated":"2026-08-24","source":"integratewise/Integratewise-docs-wiki","content":"\n\n## Overview\n\nThe Memory Consolidator is a scheduled Cloudflare Worker that aggregates approved triage items into consolidated memories. It bridges the gap between individual triage candidates and durable organizational knowledge.\n\n**File:** `services/knowledge/src/memory-consolidator.ts`\n\n## Schedules\n\n| Schedule | Trigger | What It Does |\n|---|---|---|\n| **Hourly** | Cron (every hour) | Topic clustering of recent sessions |\n| **Daily** | Cron (midnight UTC) | Deep user/account consolidation + health signals |\n| **Weekly** | Cron (Sunday midnight UTC) | Cross-account pattern extraction + best practices |\n\n## Hourly Consolidation\n\n1. Fetch approved triage items from last hour\n2. Group by category/topic\n3. Generate topic summary using Think service (Workers AI fallback)\n4. Write `consolidated_memories` with type `topic`\n\n**Minimum threshold:** 2+ sessions per topic.\n\n## Daily Consolidation\n\n1. Fetch approved triage items from last 24 hours\n2. **User-level:** Group by user, generate user summaries\n3. **Account-level:** Group by account, generate account summaries\n4. Send health signals for at-risk accounts\n5. Cleanup memories beyond retention period\n\n**Minimum threshold:** 2+ sessions per user/account.\n\n## Weekly Consolidation\n\n1. Fetch consolidated memories from past week (topic + user + account types)\n2. Extract cross-cutting patterns using Think service\n3. Identify best practices\n4. Write pattern-type consolidated memory\n5. Update knowledge base with extracted patterns\n\n**Minimum threshold:** 5+ consolidated memories.\n\n## Data Flow\n\n```\nApproved Triage Items\n        |\n        v\nfetchApprovedTriageItems() — Knowledge Service API\n        |\n        v\nGroup by topic/user/account\n        |\n        v\nGenerate Summary (Think service / Workers AI)\n        |\n        v\nstoreConsolidatedMemory() — D1 direct write\n        |\n        v\nconsolidated_memories table\n```\n\n## Lock Mechanism\n\nThe Consolidator uses a Durable Object lock to prevent duplicate processing:\n\n- `acquire-lock` with TTL (3600 seconds)\n- Release after processing completes\n- If lock not acquired, skip this cycle\n\n## Fallback Behavior\n\nIf the Think service is unavailable, the Consolidator uses a fallback summary:\n\n```typescript\nfunction createFallbackSummary(sessions: SessionMemory[]): SummaryResult {\n  return {\n    summary: `Consolidated ${sessions.length} sessions`,\n    insights: allInsights.slice(0, 5),\n    themes: allEntities.slice(0, 5),\n    actions: [],\n    risk_level: avgSentiment < -0.3 ? \"elevated\" : \"normal\",\n  };\n}\n```\n\n## Retention\n\nOld consolidated memories are cleaned up based on `MEMORY_RETENTION_DAYS` configuration. Default cleanup runs during daily consolidation.\n"}