CLAUDE: Fix DO3 (double-3) batter advancement

Fixed incorrect batter advancement for DO3 (double-3) outcomes. The batter
was incorrectly reaching 3B instead of 2B.

DO3 means:
- DO = Double (batter reaches 2B)
- 3 = Runners advance 3 bases

Changes:
- play_resolver.py: Fixed DOUBLE_3 outcome handling (line 416)
  - Changed batter_result from 3 to 2
  - Updated description to clarify "runners advance 3 bases" not "batter to 3rd"

- play_resolver.py: Fixed X-Check DO3 handling (line 1043)
  - Changed batter_reaches from 3 to 2
  - Added comment explaining DO3 notation

Now on a DO3 + NO error:
 Batter reaches 2B (correct)
 R1 advances 3 bases → HOME (correct)
 R2 would advance 3 bases → HOME (correct)
 R3 would advance 3 bases → HOME (correct)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2025-11-04 16:06:22 -06:00
parent cf7cc23f45
commit 76e01420a3

View File

@ -405,7 +405,7 @@ class PlayResolver:
)
elif outcome == PlayOutcome.DOUBLE_3:
# Double with extra advancement (batter to 3rd)
# Double with extra runner advancement (runners advance 3 bases)
runners_advanced = self._advance_on_double_3(state)
runs_scored = sum(1 for (from_base, to_base) in runners_advanced if to_base == 4)
@ -413,9 +413,9 @@ class PlayResolver:
outcome=outcome,
outs_recorded=0,
runs_scored=runs_scored,
batter_result=3, # Batter goes to 3rd
batter_result=2, # Batter reaches 2B (it's a double)
runners_advanced=runners_advanced,
description="Double to right-center gap (batter to 3rd)",
description="Double to right-center gap (runners advance 3 bases)",
ab_roll=ab_roll,
is_hit=True
)
@ -1040,7 +1040,7 @@ class PlayResolver:
batter_reaches = 2
elif hit_type == 'DO3':
base_advances = self._advance_on_double_3(state)
batter_reaches = 3
batter_reaches = 2 # DO = double (batter to 2B), 3 = runners advance 3 bases
elif hit_type == 'TR3':
base_advances = self._advance_on_triple(state)
batter_reaches = 3