diff --git a/backend/internal/robot/strategy.go b/backend/internal/robot/strategy.go index 633dd98..7c9b952 100644 --- a/backend/internal/robot/strategy.go +++ b/backend/internal/robot/strategy.go @@ -31,8 +31,8 @@ const ( // delays near the band's floor — an active player). The result is clamped to // [delayHardMinMinutes, delayHardMaxMinutes]. The numbers are deliberate estimates, // to be retuned once real play statistics arrive (docs/ARCHITECTURE.md §7). - delayEarlyLoMinutes = 1.0 - delayEarlyHiMinutes = 5.0 + delayEarlyLoMinutes = 3.0 + delayEarlyHiMinutes = 10.0 delayLateLoMinutes = 10.0 delayLateHiMinutes = 90.0 delaySkew = 4.0 diff --git a/backend/internal/robot/strategy_test.go b/backend/internal/robot/strategy_test.go index e230ea6..b728d00 100644 --- a/backend/internal/robot/strategy_test.go +++ b/backend/internal/robot/strategy_test.go @@ -57,8 +57,8 @@ func TestMoveDelayGrowsWithMoveCount(t *testing.T) { return xs[n/2] } for s := int64(1); s <= 500; s++ { - if d := moveDelay(s, 0).Minutes(); d < 1 || d > 5 { - t.Fatalf("first-move delay %.2f out of [1,5] for seed %d", d, s) + if d := moveDelay(s, 0).Minutes(); d < 3 || d > 10 { + t.Fatalf("first-move delay %.2f out of [3,10] for seed %d", d, s) } if d := moveDelay(s, 40).Minutes(); d < 10 || d > 90 { t.Fatalf("late-move delay %.2f out of [10,90] for seed %d", d, s) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 46637ca..47aa02d 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -321,7 +321,7 @@ English game the Latin pool. refill it, else passes. - **Timing**: the per-move delay is **move-number-aware** — a right-skewed sample (exponent k=4, short delays frequent) from a band that interpolates from - **[1, 5] min** at the first move to **[10, 90] min** by ~28 moves, so openings are + **[3, 10] min** at the first move to **[10, 90] min** by ~28 moves, so openings are quick and the endgame can run long, clamped to **[1, 90] minutes**; it **sleeps 00:00–07:00** anchored to the **opponent's** profile timezone with a per-game drift of **±3 h** (fallback UTC), so its night overlaps the human's