Episode Complete
Complete and score a learning episode to extract patterns and update heuristics.
Purpose
Finalize an episode with outcome scoring, reflection generation, and pattern extraction for future retrieval.
Steps
- Gather outcome data:
- Final verdict (success, partial_success, failure) - Total time spent - Total tokens used (if applicable) - Key artifacts produced - Errors encountered
- Create TaskOutcome:
let outcome = TaskOutcome {verdict: Verdict::Success, time_ms: total_time, tokens: total_tokens, artifacts: vec![/* paths to created/modified files */], errors: vec![/* any errors encountered */],}; - Call complete_episode:
memory.complete_episode(episode_id, outcome).await?; - System processes:
- Computes RewardScore based on: - Success/failure - Time efficiency - Code quality - Generates Reflection: - What worked well - What could be improved - Key learnings - Extracts Patterns: - Tool sequences - Decision points - Common pitfalls
- Update storage:
- Store in Turso (permanent record) - Update redb cache - Index by task_type and timestamp - Update related patterns and heuristics
- Validation:
- Verify episode was scored - Check patterns were extracted - Ensure heuristics were updated
Pattern Types Extracted
- ToolSequence: Common tool usage patterns
- DecisionPoint: Key decision moments and outcomes
- ErrorPattern: Common errors and resolutions
- PerformancePattern: Optimization opportunities
Scoring Rubric
- Success: Task completed, tests pass, meets requirements
- Partial Success: Task mostly complete, minor issues
- Failure: Task incomplete, major issues, tests failing
Example
let outcome = TaskOutcome {
verdict: Verdict::Success,
time_ms: 45000,
tokens: 12000,
artifacts: vec![
"src/storage/batch.rs".to_string(),
"tests/integration/batch_test.rs".to_string(),
],
errors: vec![],
};
memory.complete_episode(episode_id, outcome).await?;Post-Completion
- Patterns are now available for future retrieval
- Heuristics updated for similar tasks
- Episode stored for long-term learning
- Embeddings computed (if service configured)