299f6bfea7
New GameState::winning_line(moves_budget, states_budget) returns the complete instruction sequence to a win (Ok(None) when unwinnable or already won, Err on budget exhaustion), compacting the raw DFS trace with the previously unused card_game Solution::clean_solution and stripping foundation→foundation no-ops when the stripped line still replays to a win — an internal replay check guarantees the returned sequence always applies cleanly via apply_instruction. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>