✅ Speed tie first contract die roll
| Category | Ability |
| Status | Passing |
| Test | tests/test_turn_sequence.py::test_speed_tie_first_contract_die_roll |
First contract — neither player has the time token. RNG decides.
Preconditions
-
P1 has_time_token = False.
-
P2 has_time_token = False.
-
rng seeded deterministically (seed=0).
Action
- resolve_speed_tie(state, rng)
Expected Postconditions
-
_contract_faster_side is set to PLAYER_1 or PLAYER_2 (not None).
-
Exactly one player has has_time_token = True (the loser).
-
The winner has has_time_token = False.
Assertions
assert faster in (Side.PLAYER_1, Side.PLAYER_2)
loser = Side.PLAYER_2 if faster == Side.PLAYER_1 else Side.PLAYER_1
assert result.players[loser].has_time_token is True
assert result.players[faster].has_time_token is False