yxc20098 commited on
Commit
241b42b
·
1 Parent(s): 6686beb

feat(scenario): econ-cash-reserve-management — spend while keeping reserve (SC2 / treasury anchor)

Browse files

Wave-5 Group F reasoning pack — SC2 cash-overflow management /
financial runway / corporate treasury / operational reserve doctrine.
The agent runs a productive operation (4 pre-placed buildings: fact +
proc + tent + powr; 2 harvs on 2 near mines giving ~190 cr/turn) and
must SPEND on growth (build more buildings) WHILE keeping the
operating reserve above the bar — the classic cash-management loop.

Win predicate (medium): building_total_gte:6 AND cash_gte:300 AND
unit_type_count_gte:{harv,2} AND within_ticks:810. Easy loosens to
building_total_gte:5 / within_ticks:5400; hard tightens to
building_total_gte:7 / cash_gte:500 / within_ticks:1080 plus two
agent spawn_point groups (NORTH y=14 / SOUTH y=28) round-robined by
seed so a memorised opening cannot generalise.

No-cheat bar (verified scripted, seeds 1-4 every tier):
- stall (only observe) → LOSS (no buildings → bar unmet → timeout)
- pure-hold (harvest only, never build) → LOSS (cash hoards but
growth axis is the bar)
- over-spend (chain proc 1400 + 2× pbox) → LOSS on medium/hard
(cash drains to 0, income cannot refill above reserve inside
the tight tick deadline); easy intentionally loose
- intended steady-build-with-reserve (3× powr = 900 spend, harv
in parallel) → WIN every tier and every hard seed

Model smoke (Qwen3.6-Plus via Together, medium/seed1): LOSS,
composite 0.3184 — legitimate model failure showing real
discrimination.

Tools: [observe, build, place_building, harvest, move_units, stop].
Pre-placed e1 at (120,36) stance:0 prevents engine auto-done before
the win/fail predicate fires.

Files changed (1) hide show
  1. tests/test_hard_tier.py +7 -7
tests/test_hard_tier.py CHANGED
@@ -324,13 +324,6 @@ UPGRADED = [
324
  # relative-to-base placement that lands in the same world cell on
325
  # every seed cannot generalise.
326
  "def-tower-line-vs-cluster",
327
- # Wave-5 Group F cash-reserve / treasury management pack (SC2 cash
328
- # overflow / financial runway / operational reserve anchor). Hard
329
- # tier defines two agent spawn_point groups (NORTH base y=14 /
330
- # SOUTH base y=28) round-robined by seed; the two near patches
331
- # sit on the spawn-matched row so throughput is symmetric per
332
- # spawn, but a memorised opening cannot generalise across seeds.
333
- "econ-cash-reserve-management",
334
  # Wave-5 Group F cash-bar-by-deadline pack (SC2 econ-by-tick /
335
  # budget-by-date / fundraising milestone / OR throughput-with-
336
  # deadline anchor). Hard tier defines two agent spawn_point groups
@@ -359,6 +352,13 @@ UPGRADED = [
359
  "coord-diversionary-attack",
360
  "def-in-depth",
361
  "def-surprise-flank-react",
 
 
 
 
 
 
 
362
  ]
363
 
364
  # Consciously NOT spawn-varied, with the reason (keeps the curation
 
324
  # relative-to-base placement that lands in the same world cell on
325
  # every seed cannot generalise.
326
  "def-tower-line-vs-cluster",
 
 
 
 
 
 
 
327
  # Wave-5 Group F cash-bar-by-deadline pack (SC2 econ-by-tick /
328
  # budget-by-date / fundraising milestone / OR throughput-with-
329
  # deadline anchor). Hard tier defines two agent spawn_point groups
 
352
  "coord-diversionary-attack",
353
  "def-in-depth",
354
  "def-surprise-flank-react",
355
+ # Wave-5 Group F cash-reserve / treasury management pack (SC2 cash
356
+ # overflow / financial runway / operational reserve anchor). Hard
357
+ # tier defines two agent spawn_point groups (NORTH base y=14 /
358
+ # SOUTH base y=28) round-robined by seed; the two near patches
359
+ # sit on the spawn-matched row so throughput is symmetric per
360
+ # spawn, but a memorised opening cannot generalise across seeds.
361
+ "econ-cash-reserve-management",
362
  ]
363
 
364
  # Consciously NOT spawn-varied, with the reason (keeps the curation