Yes, AlwaysPassPlayer::choose_discard returns vec![], and so the decision maker returns empty — no cards get discarded. The fallback hand.iter().rev().take(...) only fires when self.decision_makers.get_mut(&opp) returns None, but it won't because we registered decision makers for both players.
I need to adjust the test to not register a decision maker for p2, or use a different approach. Let me look at how the existing DiscardCards test works... actually there's no separate DiscardCards test in game.rs. Let me fix the test by directly testing without decision makers (the fallback path), or better, let me check the hand count after the fact properly. The issue is the decision maker returns empty vec.
Let me fix the test to verify the fallback path by creating the game differently, or I can just directly verify the mechanism works by checking that the effect processes without a decision maker: