# Session Init API Memory Audit & Optimization Plan **Date**: 2025-10-10 **Context**: Preparing for first session with Anthropic API Memory system **Script**: `scripts/session-init.js` --- ## Current Implementation Analysis ### What session-init.js Does Now 1. **Checks Session Status** (lines 66-85) - Reads `.claude/session-state.json` to detect new vs. continued session - Uses file timestamp and message count to determine status - **File-dependent**: Requires file to exist for detection 2. **Initializes Session State** (lines 90-144) - Creates/overwrites `.claude/session-state.json` - Sets up framework activity tracking - **File-based**: All state stored in JSON file 3. **Resets Token Checkpoints** (lines 149-165) - Creates/overwrites `.claude/token-checkpoints.json` - Sets 25%, 50%, 75% milestones - **File-based**: Checkpoint state in JSON 4. **Loads Instruction History** (lines 170-193) - Reads `.claude/instruction-history.json` (6k+ tokens) - Counts active instructions by persistence/quadrant - **File-dependent**: Requires full file read 5. **Runs Pressure Check** (lines 198-218) - Executes `check-session-pressure.js` as subprocess - Parses output to extract pressure level/score - **Independent**: Should work with API Memory 6. **Runs Framework Tests** (lines 288-323) - Executes unit tests for 5 framework components - Reports pass/fail status - **Independent**: Should work with API Memory --- ## API Memory System Implications ### What API Memory SHOULD Provide 1. **Automatic Instruction Persistence** - 19 instructions might be available without reading file - Framework context might persist across sessions - Session state might be remembered 2. **Session Continuity Detection** - API Memory knows if this is a continuation - Can detect compaction events - May preserve session metadata 3. **Reduced File Dependency** - Less need to read large JSON files - State could be queried from Memory API instead - Faster initialization ### What API Memory CANNOT Replace 1. **Local File State** (still needed) - Other tools may read these files - Backward compatibility - Debugging and auditing 2. **Explicit Framework Initialization** - Components still need setup - Tests still need to run - Checkpoints still need tracking --- ## Optimization Recommendations ### Priority 1: API Memory Detection (IMMEDIATE) **Add at session start:** ```javascript /** * Detect if API Memory system is active * This is indicated by system providing context without file reads */ function detectAPIMemory() { // Check for API Memory system hints // (Implementation depends on Anthropic's API Memory design) // For now, we can infer from environment or test query const hasAPIMemory = process.env.ANTHROPIC_API_MEMORY === 'true' || process.env.CLAUDE_CODE_VERSION?.includes('memory'); return { available: hasAPIMemory, detected: hasAPIMemory ? 'API Memory system detected' : 'File-based system (legacy)' }; } ``` **Benefits**: - Inform user if new system is active - Adjust behavior based on memory availability - Collect data on memory system effectiveness ### Priority 2: Conditional File Reads (MEDIUM) **Optimize instruction loading:** ```javascript function loadInstructionHistory() { // If API Memory available, try lightweight query first if (apiMemoryAvailable) { try { // Query memory for instruction count without full file read const memoryStats = queryAPIMemoryStats(); if (memoryStats.instructionsLoaded) { log(' Instructions loaded via API Memory', 'green'); return memoryStats; } } catch (err) { // Fall back to file read } } // Original file-based implementation const history = JSON.parse(fs.readFileSync(INSTRUCTION_HISTORY_PATH, 'utf8')); // ... rest of function } ``` **Benefits**: - Reduces 6k token file read if Memory has instructions - Faster initialization - Still works if Memory system unavailable ### Priority 3: Session Continuity Intelligence (MEDIUM) **Enhanced session detection:** ```javascript function isNewSession() { // Check API Memory first if (apiMemoryAvailable) { try { const memorySession = queryAPIMemorySession(); if (memorySession.sessionId) { return { isNew: false, isToday: true, sessionState: memorySession, source: 'api_memory' }; } } catch (err) { // Fall back to file } } // Original file-based detection // ... existing implementation } ``` **Benefits**: - Better post-compaction detection - Smoother session continuation - Reduced file dependency ### Priority 4: API Memory Instrumentation (LOW - DATA COLLECTION) **Add tracking for next session:** ```javascript function reportAPIMemoryStats() { if (!apiMemoryAvailable) return; section('API Memory System Status'); success('API Memory: ACTIVE (Experimental)'); try { const stats = { instructionsPersisted: queryInstructionPersistence(), sessionContextPreserved: querySessionContext(), compactionHandled: queryCompactionStatus() }; log(` Instructions persisted: ${stats.instructionsPersisted}`, 'cyan'); log(` Session context: ${stats.sessionContextPreserved}`, 'cyan'); log(` Post-compaction: ${stats.compactionHandled}`, 'cyan'); } catch (err) { warning(`Could not query API Memory stats: ${err.message}`); } } ``` **Benefits**: - Understand how API Memory works - Collect data for future optimization - Identify gaps in Memory system --- ## Implementation Strategy ### Phase 1: Detection (Next Session - 30 mins) 1. Add `detectAPIMemory()` function 2. Report API Memory status in output 3. Set flag for conditional behavior 4. **No breaking changes** - purely informational ### Phase 2: Optimization (Future Session - 2 hours) 1. Implement conditional file reads 2. Add Memory-based session detection 3. Reduce redundant operations 4. **Maintain backward compatibility** ### Phase 3: Instrumentation (Future Session - 1 hour) 1. Add Memory system metrics 2. Track effectiveness 3. Identify optimization opportunities 4. **Data collection for refinement** --- ## Testing Plan ### Next Session Tests 1. **Does API Memory preserve instructions?** - Test: Start session, check if 19 instructions accessible without file read - Expected: Yes (instructions available via Memory) - Fallback: No (still reads from file) 2. **Does API Memory detect continuation?** - Test: After compaction, does Memory know previous session? - Expected: Yes (session context preserved) - Fallback: No (treats as new session) 3. **Does API Memory reduce file operations?** - Test: Count file reads in session-init.js - Baseline: 3 file reads (session-state, instruction-history, token-checkpoints) - Expected: 1-2 file reads (some via Memory) 4. **Does API Memory extend session length?** - Test: How many messages before compaction? - Baseline: 20-40 messages (file-heavy work) - Expected: 30-60 messages (better context management) --- ## Risks & Mitigations ### Risk 1: API Memory Not Yet Active **Impact**: Script behavior unchanged, no benefit **Mitigation**: Script still works exactly as before (backward compatible) ### Risk 2: API Memory Incomplete **Impact**: Some features work, others don't **Mitigation**: Fallback to file-based system for missing features ### Risk 3: API Memory Overhead **Impact**: Querying Memory adds latency **Mitigation**: Timeout on Memory queries, fall back to files ### Risk 4: Breaking Changes **Impact**: Script fails in new environment **Mitigation**: Extensive testing, graceful degradation --- ## Recommendations for Next Session ### Immediate Actions 1. ✅ **Run session-init.js as-is** - Don't modify yet 2. ✅ **Observe API Memory behavior** - Note what changes 3. ✅ **Document findings** - What works, what doesn't 4. ⚠️ **Don't optimize prematurely** - Understand system first ### After Understanding API Memory 1. Implement Phase 1 detection (30 mins) 2. Test with file-heavy operations 3. Measure session length improvement 4. Report findings to inform Phase 2 ### Long-Term - Phase 2 optimization (2 hours) - Conditional file reads - Phase 3 instrumentation (1 hour) - Metrics collection - Phase 4 enhancement (4 hours) - Full Memory integration (see inst_019) --- ## Current Status **session-init.js**: ✅ **READY FOR API MEMORY** - No breaking changes needed - Will work as-is with or without Memory - Optimization can be added incrementally - Maintains backward compatibility **Next Session Priority**: **OBSERVE & DOCUMENT** API Memory behavior before optimizing. --- **Prepared by**: Claude (claude-sonnet-4-5-20250929) **Session**: 2025-10-10-api-memory-transition **Related**: inst_019 (context pressure monitoring), Phase 3.5 (concurrent sessions)