diff --git a/docs/balance.md b/docs/balance.md index ebd5a31..a75cd2f 100644 --- a/docs/balance.md +++ b/docs/balance.md @@ -100,3 +100,11 @@ outpost -simulate scripts/dust_season_power_buffer.json -seeds 1,7,42 # Silent Colony — radio tower early outpost -simulate scripts/silent_colony_radio_first.json -seeds 1,7,42 ``` + +## Beacon Rush food floor + +With `beacon_rush` scenario (`dailyCreditsIncomeDelta: +7`, `maxBeaconParts: 3`), the `beacon_rush.json` script wins at **day 3** with food 44–46 across all reference seeds. This is comfortable — the rush wins fast enough that food pressure never becomes critical. + +**Target band: food ≥ 40 at victory** (day 3). The higher credit income enables the solar build + beacon rush without needing a hydroponics investment. + +Before this change, the script ran on Standard scenario and ended day 6 with food 14–24 (some seeds in the critical/urgent band). The fix was wiring `beacon_rush.json` to the `beacon_rush` scenario. diff --git a/internal/game/baseline.go b/internal/game/baseline.go index 009a181..da938b2 100644 --- a/internal/game/baseline.go +++ b/internal/game/baseline.go @@ -122,19 +122,21 @@ func noTradeSurvivalBaseline() BaselineStrategy { } func beaconRushBaseline() BaselineStrategy { + win := BaselineOutcome{Day: 3, GameOver: true, Won: true, BeaconParts: 3} return BaselineStrategy{ ID: "beacon_rush", ScriptFile: "beacon_rush.json", - MinEndDay: 6, - MinBeaconParts: 2, + ScenarioID: "beacon_rush", + MinEndDay: 3, + MinBeaconParts: 3, Expected: map[int64]BaselineOutcome{ - 1: {Day: 6, GameOver: false, Won: false, BeaconParts: 3}, - 7: {Day: 6, GameOver: false, Won: false, BeaconParts: 4}, - 42: {Day: 6, GameOver: false, Won: false, BeaconParts: 4}, - 99: {Day: 6, GameOver: false, Won: false, BeaconParts: 4}, - 100: {Day: 6, GameOver: false, Won: false, BeaconParts: 3}, - 101: {Day: 6, GameOver: false, Won: false, BeaconParts: 3}, - 1779403310247544000: {Day: 6, GameOver: false, Won: false, BeaconParts: 3}, + 1: win, + 7: win, + 42: win, + 99: win, + 100: win, + 101: win, + 1779403310247544000: win, }, } } diff --git a/scripts/beacon_rush.json b/scripts/beacon_rush.json index 2367a89..7959122 100644 --- a/scripts/beacon_rush.json +++ b/scripts/beacon_rush.json @@ -1,4 +1,6 @@ { + "scenario": "beacon_rush", + "description": "Beacon Rush: solar first, then all-in on beacon work. Wins at day 3 with food 44-46.", "actions": [ { "type": "build", "building_id": "solar_array" }, { "type": "beacon" },