update-memory-snapshot
Purpose
Consolidates daily reports and agent outputs into long-term memory structures:
- •Episodic Memory - Short-term working memory with 30-day TTL
- •Decision Traces - Audit trail of successful patterns
- •Lane Profiles - Consolidated playbooks per vertical
What It Does
- •Reads agent outputs from
events_dailyandartifacts_dailyfor the date - •Extracts facts, decisions, and patterns from CMA/PAR/SEOS outputs
- •Transforms into structured memory records
- •Writes to episodic_memory, decision_traces, lane_profiles
- •Prunes expired memories (TTL-based cleanup)
- •Updates lane profiles with new patterns
- •Logs consolidation metrics to memory_consolidation_log
Memory Contract
Reads
- •
daily_event(ops lane) - Agent execution events - •
artifact_daily(ops lane) - Agent outputs - •
daily_analysis(ops lane) - Executive report analysis
Writes
- •
episodic_memory(ops lane) - 30-day TTL working memory - •
decision_trace(ops lane) - Permanent decision audit trail - •
lane_profile(ops lane) - Permanent playbook updates - •
memory_consolidation_log(ops lane) - Job tracking (365-day TTL)
Provenance
All writes include:
- •
run_id- Consolidation job ID - •
trace_id- Langfuse trace ID - •
source_ref- Date identifier (e.g., "consolidation_2025-12-21") - •
actor- "update_memory_snapshot" - •
intent- "memory_consolidation"
Schedule
Cron: 0 2 * * * (02:00 PT daily)
Triggered after: executive-daily-report (02:05 PT)
Implementation
Script: app/services/mcp/jobs/memory/memory_consolidator.py
Memory Types Processed
| Type | TTL Days | Description |
|---|---|---|
| preference | 90 | User/agent preferences |
| constraint | 60 | Operational constraints |
| goal | 30 | Active goals and objectives |
| decision | 90 | Strategic decisions |
| blocker | 14 | Active blockers (short-lived) |
| fact | 30 | Contextual facts |
| context | 7 | Session context |
Outputs
Episodic Memory
json
{
"memory_id": "uuid",
"session_id": "uuid",
"lane": "ops",
"fact_type": "decision",
"fact_key": "deploy_strategy",
"fact_value": "Use canary rollout for memory system",
"confidence": 0.9,
"ttl_days": 90,
"expires_at": "2026-03-21 02:00:00",
"source_agent": "update_memory_snapshot",
"source_ref": "consolidation_2025-12-21"
}
Decision Trace
json
{
"trace_id": "uuid",
"lane": "ops",
"agent_id": "update_memory_snapshot",
"decision_type": "consolidate",
"context_summary": "Daily report showed 12 actionable items",
"decision": "Extract top 5 as episodic memories",
"outcome": "Created 5 memories, 2 profiles updated",
"outcome_score": 0.95,
"exemplar": 1
}
Dependencies
- •ClickHouse (events_daily, artifacts_daily, orion_daily_analyses)
- •Memory tables (episodic_memory, decision_traces, lane_profiles)
Observability
- •ClickHouse events:
memory_consolidation_logtable - •Metrics: created, updated, decayed, profiles_updated, duration_ms
Error Handling
- •Missing source data → Warning, continue with available data
- •ClickHouse unavailable → Fail fast, alert
- •Invalid memory format → Log error, skip that record
- •TTL calculation error → Use default (30 days)