Fix the bots' corner bias; settle seat order and RULES v0.9 (6.2, 6.8)

Bots now pick their start square and break path ties in their own
corner's frame; the absolute tie-break made corners 1 and 2 win 25-28%.
With that fixed, seat order is within target at 4 players, and a +1
stripe first-player bonus (new switch) gains only ~1 point, so no
compensation. RULES.md v0.9 lists the tested alternatives; the plan has
the 6.8 consolidation run and the seat-order study.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-27 18:27:06 +02:00
parent 52d8af620b
commit 79cbbccbb2
9 changed files with 178 additions and 24 deletions
+11 -1
View File
@@ -17,7 +17,7 @@ from dojo.events import (
TurnStarted,
)
from dojo.metrics import KUMITE_SECONDS, TURN_SECONDS, GameMetrics, measure, summarize
from dojo.rules import DEFAULT_RULES, Card
from dojo.rules import DEFAULT_RULES, Card, RulesConfig
HOME_0 = Pos(0, 1) # quadrant 0
@@ -106,6 +106,16 @@ def test_kiai_decides_a_fight_only_when_the_result_flips_without_it(
assert summary.exam_kiai_decided_rate == decided
def test_first_player_bonus_is_counted_from_the_start() -> None:
config = RulesConfig(first_player_bonus=1)
metrics = measure(
[GameOver(None, 1)], config, (0, 1), ("balanced", "farmer"), scenario="t", seed=0
)
assert metrics.final_track == (1, 0)
def test_standings_are_sampled_at_turn_ends() -> None:
metrics = run(
[