aebb401c44
Correct Gap 1 undo penalty: SessionState::score() already includes undos × undo_penalty via SessionStats — undo IS tracked upstream, just in SessionStats not KlondikeStats. Mark as ✅ upstream. Add Gap 3 upstream-merged note: Session::solve() in card_game v0.4.0 is a budget-bounded DFS that replaces our 767-line solver. Document SolveError mapping (both variants → Inconclusive). Update 'Already has' table for v0.4.0: Session now derives Clone, uses snapshot-based O(1) undo (StateSnapshot stores pre-move state + instruction), and carries SessionConfig with solve budgets. Mark Gap 8 (undo O(1)) resolved: card_game v0.4.0 uses snapshots, same approach as our existing undo_stack. Update integration path: steps 1/3/4/5 marked ✅; steps 2/6/7 remain. Update references with new release commits and solver PR #14. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>