Memory Not Saving Fix - Import Path Conflict
Issue
Despite active conversations, no new episode files were being created in atles_memory/episodes/.
Root Cause
Two versions of unified_memory_manager.py existed:
- β
Real version:
atles/unified_memory_manager.py- Full functional memory system - β Stub version:
atles_app/atles/unified_memory_manager.py- Simplified placeholder
The Problem
Python's import system was finding the stub version first due to import path ordering:
# In atles_desktop_pyqt.py:
from atles.unified_memory_manager import UnifiedMemoryManager
# Python searched:
# 1. atles_app/atles/unified_memory_manager.py β FOUND (stub)
# 2. atles/unified_memory_manager.py β
(never reached)
Evidence
User's logs showed:
INFO: Using Unified Episodic & Semantic Memory System
But the stub version logged:
logger.info("Unified Memory Manager initialized (simplified mode)")
And its methods did nothing:
def add_message(self, sender: str, message: str, memory_type: str = "episodic"):
"""Add a message to memory."""
logger.info(f"Adding to memory (simplified mode): {memory_type}")
# β NO ACTUAL SAVING!
return True
The Fix
Modified the desktop app to add parent directory to path BEFORE importing:
# In atles_app/atles_desktop_pyqt.py - ConversationMemoryManager.__init__()
# Add parent directory to sys.path first
parent_dir = Path(__file__).parent.parent
if str(parent_dir) not in sys.path:
sys.path.insert(0, str(parent_dir))
# Now import works correctly - gets real system from atles/
from atles.unified_memory_manager import UnifiedMemoryManager, get_unified_memory
Deleted the conflicting stub:
β
DELETED: atles_app/atles/unified_memory_manager.py (stub that was blocking imports)
This ensures:
- β
Python can find
atles/package fromatles_app/ - β Real memory system is imported
- β No circular import issues
Verification
Before Fix β
atles_memory/episodes/
βββ episode_20250919_223218_71474982.json (last episode - old date)
No new episodes being created despite active conversations!
After Fix β
Restart the desktop app and have a conversation. New episode files should appear:
atles_memory/episodes/
βββ episode_20250919_223218_71474982.json (old)
βββ episode_20251114_[timestamp]_[hash].json (NEW!)
You should also see in logs:
β
Memory integration system initialized
Started conversation session: session_20251114_HHMMSS
Ended conversation session: episode_20251114_HHMMSS_[hash]
Related Files
- β
Real memory system:
atles/unified_memory_manager.py - β
Memory integration:
atles/memory_integration.py - β
Episodic system:
atles/episodic_semantic_memory.py - β
Desktop app:
atles_app/atles_desktop_pyqt.py(modified to add parent dir to path) - β DELETED:
atles_app/atles/unified_memory_manager.py(stub removed)
Impact
| Aspect | Before | After |
|---|---|---|
| New episodes saved | β No | β Yes |
| Session tracking | β Stub | β Real |
| Memory search | β Empty | β Functional |
| Learning from conversations | β Lost | β Retained |
Testing
- Restart ATLES desktop app
- Have a conversation (5+ messages)
- Close the conversation (to trigger save)
- Check
atles_memory/episodes/for new files
Expected:
episode_20251114_193000_a1b2c3d4.json (NEW!)
Lessons Learned
Why This Happened
The stub was created as a temporary placeholder during refactoring but:
- β Never removed after real system was built
- β Same filename caused import conflict
- β Python silently used wrong version
Prevention
- β Never create stubs with same name as real modules
- β
Use
.stub.pyor_placeholder.pysuffix - β Add clear warnings in stub files
- β Remove stubs immediately after real implementation
Date Fixed: November 14, 2025
Status: RESOLVED β
Action Required: Restart desktop app to use real memory system