New structs:
- TruthScoreUpdate: parameters for updating truth scores
- TruthStats: aggregated truth scoring statistics
- ScoringCandidate: lightweight record for the scoring worker
New Database methods:
- get_unscored_memories(): fetch unscored memories FIFO
- get_stale_memories(): fetch memories due for re-evaluation
- update_truth_score(): update single memory truth fields
- batch_update_truth_scores(): transactional batch update
- get_truth_stats(): aggregate stats with category breakdown
Uses partial index idx_memories_truth_unevaluated for efficient
unscored memory queries.
Part of #29
- Add batch_store tool accepting 1-50 entries per call
- Single DB transaction for atomicity
- Returns individual IDs/status per entry
- Add batch_store_memories() to Database layer
- Add 6 test cases
- Backward compatible - existing store unchanged
Expected impact: 50-60% reduction in store API calls