OpenRA-Bench / SCENARIO_BACKLOG.md
yxc20098's picture
schema: add meta.benchmark_anchor (list[str]); + SCENARIO_BACKLOG.md (200-pack catalog)
17f024b
|
Raw
History Blame Contribute Delete
24.7 kB
# OpenRA-Bench โ€” Scenario Backlog (toward 200 packs)
This file is the canonical brainstorm catalog for the path from
**29 packs today** (22 active + 17 designed in the plan + 2 harvest
rebuilds) โ†’ **~200 packs total**. It complements
`SCENARIO_REVIEW_CHECKLIST.md` (methodology) and `SCENARIO_QUALITY.md`
(whole-suite recap) by giving the next-buildable seed any coding agent
can pull off.
## How to use this file
1. Pick a seed whose **engineering tag** matches what's available
today (`YAML` = build now; `BOT:x` / `PRED:x` / `ENG:x` = blocked
on that engine PR landing).
2. Author the pack to the **no defect, no cheat** bar (see
`SCENARIO_REVIEW_CHECKLIST.md` and `CLAUDE.md`).
3. Populate the new schema field `meta.benchmark_anchor: list[str]`
with the seed's anchor (real-world capability and/or named
benchmark).
4. Scripted-policy validate (stall / brute / wrong-path / intended)
across seeds 1โ€“4 โ€” every lazy policy must LOSS, intended must WIN,
never a DRAW.
5. Move the seed from this file to a section of
`SCENARIO_QUALITY.md` (the whole-suite catalog) once committed.
## Engineering tags
- `YAML` โ€” buildable today, pure YAML.
- `MAP:x` โ€” needs a new map generator or static `.oramap`.
- `BOT:x` โ€” needs new scripted-bot variant in
`openra-sim/src/scripted_bot.rs`. Currently supported: `hunt`,
`rusher`, `patrol`, `turtle`, `guard`. Proposed: `raider`, `pincer`,
`feinter`, `prober`, `tower-rusher`, `boomer`, `tech-switcher`.
- `PRED:x` โ€” needs new predicate in
`openra_bench/scenarios/win_conditions.py` (+ `_PHRASES` entry in
`game_knowledge.py`).
- `ENG:x` โ€” needs deeper engine work (new order, signal, mid-episode
hook). Examples: `deploy`, `capture_actor`, `apc-transport-complete`,
`air-units`, `power-signals` (today inert), `scheduled-event`,
`dynamic-deadline`, `RL-adversary` (P3-1).
## Engineering shopping list (PRs that unblock the most seeds)
Order from cheapest to most expensive; numbers in parentheses are how
many seeds each PR unblocks.
1. **`forbidden_tools` + `tool_violation` signal** (P2-1) โ€” unblocks
~6 seeds (Group I + B3).
2. **`raider` bot** โ€” unblocks ~4 (B1 + Group F defenses + C2).
3. **`then:[A,B]` happened-before composite** (P2-3) โ€” unblocks ~5
(B2 + Group G/I/N).
4. **`own_building_lost_gte` + `building_destroyed_gte`** (P2-2) โ€”
unblocks ~3 (C3 + C2 + C5).
5. **`region_held_for_ticks`** โ€” strengthens B4 + several defense
seeds.
6. **`pincer` / `feinter` bots** โ€” unblocks C3, C4, several adv-*.
7. **Mid-episode scripted-event hook** โ€” unblocks C5 + 4 robustness
seeds + surprise-flank.
8. **Power-signals fix** โ€” unblocks 7+ seeds in Groups A/M.
9. **MCV `deploy` order** โ€” unblocks ALL Group A `mcv-*` (7+ seeds).
10. **`capture_actor` order** โ€” unblocks Group K spec-engineer-*.
11. **Engineer-rebuild order** โ€” unblocks several robustness seeds.
12. **`apc` transport completeness** โ€” unblocks Group L.
13. **Water mapgen + `lst`** โ€” unblocks Group L amphibious + island.
14. **Air units (`yak`/`mig`/`heli`)** โ€” unblocks anti-air,
paradrop, air-ground coord.
15. **Stealth/`spy`/`thief` mechanics** โ€” unblocks spec-spy / spec-thief.
16. **Superweapons** (nuke / iron-curtain / chronosphere) โ€” Group K.
17. **Live RL adversary slot (P3-1)** โ€” unblocks C1, C4, all
adv-*-race seeds.
---
# Backlog seeds organized by family
Each seed has: `id` โ€” cell โ€” real-world anchor // benchmark anchor โ€”
one-line predicate sketch โ€” engineering tag(s).
## Group A โ€” Base building & MCV (25)
Largely engine-gated on `deploy`; pre-`deploy` proxies via pre-placed
`fact` markers + build-radius creep.
- `mcv-deploy-and-build` โ€” Opening MCVโ†’fact site choice // critical-infra siting; SC2LE BO โ€” `has_building:fact` AND deploy-tick โ‰ค T AND `building_total_gte:3` โ€” ENG:deploy + YAML
- `mcv-deploy-defensible-site` โ€” Opening site under threat // resilience-first siting; MicroRTS terrain-aware โ€” `building_in_region:{good_terrain,fact,1}` AND survival โ€” ENG:deploy + YAML
- `mcv-deploy-near-resource` โ€” Opening site near ore // econ-first siting; SC2LE econ โ€” `building_in_region:{near_ore,fact,1}` AND `economy_value_gte:N` โ€” ENG:deploy + YAML
- `mcv-deploy-relocate-under-pressure` โ€” Mid conyard pack + relocate // BCP relocation; PlanBench replanning โ€” `building_in_region:{new_site,fact,1}` after `after_ticks:T_loss` โ€” ENG:deploy+undeploy + YAML
- `mcv-deploy-second-base` โ€” Mid 2nd MCV โ†’ 2nd base // multi-site ramp; MicroRTS expansion โ€” 2 facts in 2 regions โ€” ENG:deploy + YAML
- `mcv-deploy-third-base` โ€” Mid-Late 3rd MCV โ†’ 3rd base // tri-base macro; SC2 3-base โ€” 3 facts in 3 regions โ€” ENG:deploy + YAML
- `mcv-deploy-evac-and-resite` โ€” Mid evacuate failing base // disaster recovery; ScienceWorld โ€” fact razed THEN new fact built โ€” ENG:deploy + YAML
- `build-radius-creep-to-objective` โ€” Mid walk base toward enemy // FOB; SC2 forward pylon โ€” `building_in_region:{near_enemy,pbox,1}` โ€” YAML
- `build-radius-creep-bridge-island` โ€” Mid-Late creep over bridge // staging expansion; MicroRTS terrain โ€” `building_in_region:{island,fact,1}` โ€” ENG:bridge-aware-mapgen + YAML
- `build-power-online-first` โ€” Opening `has_building:powr` before all else // grid bring-up sequencing; PlanBench ordering โ€” `then:[powr, _]` โ€” PRED:then + YAML
- `build-defensive-tower-line` โ€” Mid 4 pbox in line covering choke // perimeter design; ERQA spatial โ€” `building_count_gte:{type:pbox,n:4}` + `building_in_region:{choke,pbox,4}` โ€” YAML
- `build-defensive-tower-cluster` โ€” Mid pbox cluster at bottleneck // concentrated defense; ERQA โ€” `building_in_region:{bottleneck,pbox,4}` โ€” YAML
- `build-defensive-skirt-corners` โ€” Mid corner-mounted defenses // distributed defense; MicroRTS โ€” `building_in_region` 4x corner regions โ€” YAML
- `build-spacing-anti-splash` โ€” Mid space buildings to survive splash // resilience design; robustness โ€” `min_separation_gte:N` โ€” PRED:min_separation + YAML
- `build-anti-air-positioning` โ€” Mid SAM coverage // anti-air planning; SC2 antiair โ€” `building_in_region` of `sam` โ€” ENG:air-units + YAML
- `build-engineer-rebuild-after-loss` โ€” Mid engineer rebuilds razed building // resilience drill; PlanBench replanning โ€” building re-presence after loss โ€” ENG:engineer-rebuild-order + YAML
- `build-sequence-tech-fastest` โ€” Opening BO hits `weap` in min turns // BOM-optimal; PlanBench cost-optimal โ€” `then:[tent, weap]` AND `within_ticks:T_tight` โ€” PRED:then + YAML
- `build-sequence-tech-cheapest` โ€” Opening BO hits `weap` cheapest // BOM-cost; PlanBench cost-optimal โ€” cash-bound โ€” YAML
- `build-sequence-tech-most-resilient` โ€” Mid tech via redundant prereqs // resilience; PlanBench robust โ€” 2x prereq buildings โ€” PRED:then + YAML
- `build-power-budget-online` โ€” Opening keep `power_surplus_gte:0` // grid bring-up; SC2 power โ€” ENG:power-signals + YAML
- `build-power-down-defensive` โ€” Mid `power_down` non-essentials under attack // load-shedding; ops runbook โ€” YAML
- `build-repair-priority-under-fire` โ€” Mid repair structures in correct order // repair triage; DR โ€” YAML
- `build-sell-and-rebuild-elsewhere` โ€” Mid `sell` weakened, rebuild defended // capital reallocation; finance โ€” YAML
- `build-rally-point-management` โ€” Opening set rally forward // production logistics; warehouse SLA โ€” YAML
- `build-production-throughput-multibuilding` โ€” Mid 2x `weap` parallel queue // throughput; queueing theory โ€” YAML
## Group B โ€” Multi-front base building (12)
- `mfb-two-base-simultaneous` โ€” Mid build base-2 while base-1 builds // multi-site ramp; SC2 sim-base โ€” 2 facts within tight window โ€” YAML
- `mfb-base-1-defend-base-2-build` โ€” Mid defend live + build forward // ops continuity during expansion; DR siting โ€” YAML
- `mfb-third-base-against-clock` โ€” Mid-Late 3rd base before deadline // greedy expansion; SC2 3-base timing โ€” YAML
- `mfb-relocate-conyard-under-pressure` โ€” Mid pack + move conyard // BCP; PlanBench replanning โ€” ENG:deploy/undeploy + YAML
- `mfb-evacuate-base-deploy-elsewhere` โ€” Mid abandon base, redeploy MCV // disaster recovery; ScienceWorld โ€” ENG:deploy + YAML
- `mfb-tech-base-vs-economy-base` โ€” Mid-Late role-specialized bases // specialization; industrial โ€” YAML
- `mfb-island-base-amphibious` โ€” Late build base across water // amphibious staging; RoboMaster ship-to-shore โ€” ENG:transport+amphib-mapgen + YAML
- `mfb-forward-base-near-enemy-corner` โ€” Mid-Late FOB // SC2 forward production โ€” YAML
- `mfb-redundant-tech-buildings` โ€” Mid 2x `weap` for resilience // redundancy; robust planning โ€” YAML
- `mfb-mirror-base-east-west` โ€” Mid symmetric multi-base // distributed-systems mirror; raft replicas โ€” YAML
- `mfb-rotating-production-pressure` โ€” Mid-Late alternate production under raid // load balancing; queueing โ€” PRED:then + YAML
- `mfb-supply-line-link-between-bases` โ€” Mid-Late connect 2 bases via patrol // logistics route; supply-chain โ€” YAML
## Group C โ€” Defense positioning & surprise reaction (16)
- `def-position-expected-direction` โ€” Mid fortify N (intel says N) // pre-positioned defense; ERQA spatial commit โ€” YAML
- `def-position-revealed-direction` โ€” Mid fortify after scout reveals // adaptive defense; PlanBench replanning โ€” YAML
- `def-surprise-flank-react` โ€” Mid intel said N, enemy comes S // surprise reaction; adversarial robustness โ€” ENG:enemy-spawn-misdirection + YAML
- `def-pre-position-mobile-reserve` โ€” Mid mobile reserve in center // reserve doctrine; military โ€” YAML
- `def-tower-line-vs-cluster` โ€” Mid choose spread vs concentration // defense topology; graph min-cut โ€” YAML
- `def-walls-vs-towers` โ€” Mid passive vs active mitigation // security architecture โ€” ENG:walls + YAML
- `def-engineer-repair-under-fire` โ€” Mid which tower to repair under fire // triage; DR โ€” YAML
- `def-stance-mgmt-hold-then-attack` โ€” Mid hold-fireโ†’return-fire timing // ROE drill โ€” YAML
- `def-while-building` โ€” Mid defend with workforce while building defenses // ops continuity โ€” YAML
- `def-multi-direction` โ€” Mid defend 3 lanes // distributed defense; graph min-cut โ€” YAML
- `def-in-depth` โ€” Mid-Late front + 2nd line vs single thick // defense-in-depth; security doctrine โ€” YAML
- `def-with-ambush` โ€” Mid fog ambush vs static // active deception; SC2 hidden โ€” YAML
- `def-evacuation` โ€” Mid-Late evacuate overwhelmed position // BCP; emergency mgmt โ€” YAML
- `def-retreat-and-rebuild` โ€” Mid-Late concede + rebuild deeper // strategic withdrawal; CICERO retreat โ€” YAML
- `def-anti-air-positioning` โ€” Late SAM placement // anti-air; SC2 โ€” ENG:air-units + YAML
- `def-tower-rush-counter` โ€” Opening enemy tower-rushes you // tower-rush defense; SC2 cannon-rush counter โ€” BOT:tower-rusher + YAML
## Group D โ€” Combat micro & tactics (20)
- `combat-focus-fire-priority` โ€” Mid which enemy to kill first // target prioritization; SC2 focus-fire โ€” YAML
- `combat-kite-jeep-vs-tank` โ€” Mid kite ranged // micro; SC2 kiting โ€” YAML
- `combat-stance-mgmt-attack` โ€” Mid switch to attack-anything // ROE; SC2 stance โ€” YAML
- `combat-formation-tank-wedge` โ€” Mid tank wedge // formation; military โ€” YAML
- `combat-formation-infantry-screen-tanks` โ€” Mid infantry screens armor // combined-arms; military โ€” YAML
- `combat-retreat-after-engagement` โ€” Mid disengage timing // tactical withdrawal; SC2 โ€” YAML
- `combat-flanking-attack` โ€” Mid flank vs head-on // flank maneuver; military โ€” YAML
- `combat-pincer-coordination` โ€” Mid two-prong // pincer; SC2 multi-prong โ€” YAML
- `combat-bait-counter-attack` โ€” Mid lure + flank-counter // bait; SC2 bait โ€” BOT:guard + YAML (idiom proven)
- `combat-divide-and-conquer` โ€” Mid split enemy via feint // CICERO โ€” YAML
- `combat-protect-vip-escort` โ€” Mid escort VIP // diplomatic escort โ€” PRED:`unit_type_count_gte:{vip,1}`-survival + YAML
- `combat-suicide-charge-mission` โ€” Mid sacrifice everything for X // forlorn hope; military โ€” YAML
- `combat-prevent-retreat` โ€” Mid cut off enemy retreat // encirclement; military โ€” YAML
- `combat-defensive-perimeter-around-vip` โ€” Mid perimeter // VIP cordon โ€” YAML
- `combat-skirmish-then-disengage` โ€” Mid bleed and pull back // skirmisher; SC2 โ€” YAML
- `combat-vehicle-vs-infantry-counter` โ€” Mid tank vs inf // RPS counter; SC2 hard counter โ€” YAML
- `combat-rocket-soldier-anti-vehicle` โ€” Mid e3 vs tank // RPS; SC2 โ€” YAML
- `combat-tank-vs-tank-engagement` โ€” Mid mirror combat // SC2 mirror micro โ€” YAML
- `combat-amphibious-landing` โ€” Mid-Late APC across water // amphibious assault; D-Day โ€” ENG:transport+water-mapgen + YAML
- `combat-attack-from-behind-fog` โ€” Mid emerge from fog // surprise attack; SC2 hidden โ€” YAML
## Group E โ€” Scouting / Perception (15)
- `scout-far-frontier` โ€” Early long-distance scout // recon; ERQA โ€” YAML
- `scout-and-survive` โ€” Early scout returns alive // scout-preserve; SC2 worker scout โ€” YAML
- `scout-multiple-fog-areas` โ€” Early parallel scout // Watch-And-Help โ€” YAML
- `scout-detect-enemy-tech` โ€” Early-Mid identify enemy via buildings // tech-read; PlanBench obs โ€” YAML
- `scout-detect-base-direction` โ€” Early which corner has enemy // direction-read; ERQA โ€” YAML
- `scout-count-defenders` โ€” Early-Mid exact defender count // census; POMDP โ€” YAML
- `scout-discover-hidden-base` โ€” Mid off-axis hidden base // deep recon; CICERO โ€” YAML
- `scout-detect-incoming-army` โ€” Mid early-warn // intrusion detection โ€” YAML
- `scout-detect-air-threat` โ€” Late air detection // anti-air recon โ€” ENG:air-units + YAML
- `scout-detect-stealth-units` โ€” Late stealth detection // SC2 detector โ€” ENG:stealth-units + YAML
- `scout-map-reveal-percent-target` โ€” Early reveal N% // coverage; ERQA โ€” YAML
- `scout-and-report` โ€” Early-Mid reveal then return // recon-report cycle; mil intel โ€” YAML
- `scout-jeep-vs-infantry-cost-effective` โ€” Early cheap fast scout // econ scout; SC2 worker-vs-Reaper โ€” YAML
- `scout-cycle-keep-info-fresh` โ€” Mid continuous cadence // info staleness; intel ops โ€” PRED:then-repeated + YAML
- `scout-info-blackout-react` โ€” Mid fog blanket then enemy revealed // dynamic perception; adversarial โ€” ENG:fog-shift-hook + YAML
## Group F โ€” Economy / Resources (16)
Mostly unblocked by S0/S1 (task #14).
- `econ-startup-from-scratch` โ€” Opening first proc + harv // greenfield econ; SC2 first base โ€” YAML
- `econ-harvester-pathing-optimization` โ€” Opening harv route choice // logistics; queueing โ€” PRED:`econ_rate_gte` + YAML
- `econ-multi-patch-allocation` โ€” Mid which ore patches // resource allocation; OR โ€” YAML
- `econ-far-patch-vs-near-patch` โ€” Mid travel vs throughput // econ tradeoff; OR โ€” YAML
- `econ-silo-vs-spend` โ€” Mid store or spend // capital allocation; PlanBench โ€” YAML
- `econ-replace-dead-harvester` โ€” Mid rebuild dead harv // resilience; PlanBench replanning โ€” YAML
- `econ-protect-harvester-route` โ€” Mid defend harv path // econ defense; SC2 harass defense โ€” YAML
- `econ-cash-reserve-management` โ€” Mid never zero cash // financial reserve โ€” PRED:`cash_gte` + YAML
- `econ-target-cash-amount-by-deadline` โ€” Mid cash bar by deadline // budget by date; finance โ€” YAML
- `econ-contention-with-enemy` โ€” Mid shared ore patch // contested resource; game theory โ€” YAML
- `econ-recover-from-zero-cash` โ€” Mid start from 0 cash // bankruptcy comeback โ€” YAML
- `econ-quantitative-vs-qualitative-spend` โ€” Mid many cheap vs few expensive // unit composition; OR โ€” YAML
- `econ-burn-rate-management` โ€” Mid spend at target rate // runway mgmt; startup finance โ€” PRED:`spend_rate_lte` + YAML
- `econ-buy-vs-build-decision` โ€” Mid cash now or save for tech // PlanBench โ€” YAML
- `econ-resource-trade-with-self` โ€” Mid-Late balance ore vs cash // commodity hedging; finance โ€” YAML
- `econ-overflow-to-silos` โ€” Mid silo-required throughput // capacity planning; backpressure โ€” YAML
## Group G โ€” Long-horizon / Multi-phase (12)
- `lh-opening-to-tech-to-army` โ€” Late 4-phase chain // long-horizon; SC2 macro โ€” YAML
- `lh-opening-to-defense-to-counter` โ€” Late defense โ†’ counter // counter-attack timing; SC2 timing โ€” YAML
- `lh-tech-pivot-attack` โ€” Late tech โ†’ pivot โ†’ attack // adaptive macro; PlanBench โ€” YAML
- `lh-econ-army-victory` โ€” Late econ โ†’ army โ†’ victory // SC2 macro โ€” YAML
- `lh-defense-tech-second-base` โ€” Late defend โ†’ tech โ†’ expand // SC2 secure-expand โ€” YAML
- `lh-scout-react-counter` โ€” Late scout โ†’ react โ†’ counter // CICERO โ€” YAML
- `lh-100-turn-marathon-survival` โ€” Very-Late survive 100 turns // lmgame-Bench multi-hour โ€” YAML (max_turns:100+)
- `lh-build-army-coordinate-multifront-attack` โ€” Late assemble + coordinate // operational planning; military โ€” YAML
- `lh-progression-stage-locked` โ€” Late each stage gates next // PERT; PlanBench โ€” PRED:then + YAML
- `lh-credit-only-final-phase` โ€” Late sparse reward // long-horizon RL โ€” YAML
- `lh-multi-checkpoint-5-plus` โ€” Late 5+ checkpoints // sequenced ops; PlanBench โ€” PRED:waypoint_sequence-extended + YAML
- `lh-recovery-after-mid-game-loss` โ€” Late comeback // SC2 comeback โ€” ENG:scheduled-event + YAML
## Group H โ€” Adversarial / Game-theoretic (12)
- `adv-counter-strategy-read` (= C1 from plan)
- `adv-feint-handling` (= C4 from plan)
- `adv-bluff-detection` โ€” Mid commit vs hesitate // poker-bench โ€” ENG:RL-adversary + YAML
- `adv-rps-counter-pick` โ€” Mid unit-counter selection // RPS; game theory โ€” YAML
- `adv-tempo-vs-adversary` โ€” Mid-Late out-tempo // TextStarCraft II โ€” ENG:RL-adversary + YAML
- `adv-economy-race` โ€” Late out-econ // SC2 econ race โ€” ENG:RL-adversary + YAML
- `adv-army-race` โ€” Late out-army // SC2 army race โ€” ENG:RL-adversary + YAML
- `adv-tech-race` โ€” Late out-tech // SC2 tech race โ€” ENG:RL-adversary + YAML
- `adv-base-trade-race` (= C3 from plan)
- `adv-asymmetric-weaker-must-win` โ€” Mid outnumbered must-win // underdog; RTS asymmetric โ€” YAML
- `adv-asymmetric-stronger-no-loss` โ€” Mid dominate without loss // overdog discipline; CICERO โ€” YAML
- `adv-mirror-match-best-strategy` โ€” Late mirror best-of // SC2 mirror โ€” ENG:RL-adversary + YAML
## Group I โ€” Procedural / Tool-use compliance (10)
- `proc-strict-toolban-fidelity` โ€” Cross BFCL relevance // BFCL V4 โ€” PRED:forbidden_tools + YAML
- `proc-strict-toolban-under-pressure` (= B3 from plan)
- `proc-checklist-no-deviation` โ€” Cross exact ordered checklist // SOP compliance; IFBench โ€” PRED:waypoint_sequence strict + YAML
- `proc-ordered-action-strict` โ€” Cross exact action sequence // PlanBench strict ordering โ€” PRED:then + YAML
- `proc-no-attack-passive-only` โ€” Cross only move+stop // ROE; mil โ€” PRED:forbidden_tools + YAML
- `proc-only-build-no-combat` โ€” Cross only build/place // role-based access โ€” PRED:forbidden_tools + YAML
- `proc-only-defend-no-attack` โ€” Cross only defensive moves // ROE; mil โ€” PRED:forbidden_tools + YAML
- `proc-tool-use-with-distractor` โ€” Cross ignore distracting tool // ฯ„ยฒ-bench โ€” YAML
- `proc-tool-use-multi-distractor` โ€” Cross ignore multiple distractors // ฯ„ยฒ-bench โ€” YAML
- `proc-instruction-following-edge-case` โ€” Cross instruction-edge // IFBench โ€” YAML
## Group J โ€” Robustness / Edge cases (8)
- `rob-unit-loss-recovery` โ€” Mid recover from N losses // resilience; PlanBench replanning โ€” YAML
- `rob-building-loss-rebuild` (= C5 from plan)
- `rob-cash-depletion-recovery` โ€” Mid recover from 0 cash // bankruptcy โ€” YAML
- `rob-power-failure-recovery` โ€” Mid recover from brownout // grid restoration; DR โ€” ENG:power-signals + YAML
- `rob-multiple-simultaneous-pressures` โ€” Mid econ + def + tech under pressure // overwhelmed ops; triage โ€” YAML
- `rob-unexpected-enemy-spawn` โ€” Mid spawn mid-episode // surprise; adversarial robustness โ€” ENG:scheduled-spawn + YAML
- `rob-objective-change-midway` โ€” Mid win-condition shifts at T // goal-conditional RL โ€” ENG:objective-swap-hook + YAML
- `rob-deadline-shortened-midway` โ€” Mid deadline brought forward // schedule compression; project mgmt โ€” ENG:dynamic-deadline-hook + YAML
## Group K โ€” Special abilities (engine-gated, 10)
- `spec-engineer-capture` โ€” Mid capture enemy `proc` // industrial espionage; SC2 spy steal โ€” ENG:capture_actor + YAML
- `spec-engineer-mass-capture` โ€” Mid capture all of enemy tech // takeover; CICERO โ€” ENG:capture_actor + YAML
- `spec-spy-infiltrate` โ€” Mid reveal enemy tech via spy // intel infiltration; SC2 scan โ€” ENG:spy + YAML
- `spec-thief-steal-resources` โ€” Mid steal enemy cash // econ sabotage; SC2 worker raid โ€” ENG:thief + YAML
- `spec-medic-heal-coordination` โ€” Mid medic heals infantry // SC2 medivac โ€” ENG:medic + YAML
- `spec-airborne-paradrop` โ€” Late drop reinforcements // SC2 paradrop โ€” ENG:airborne + YAML
- `spec-nuke-strike` โ€” Very-late superweapon // SC2 nuke โ€” ENG:superweapon + YAML
- `spec-iron-curtain-buff` โ€” Late invuln buff // SC2 cloak โ€” ENG:iron-curtain + YAML
- `spec-chronosphere-teleport` โ€” Late unit teleport // SC2 warpgate โ€” ENG:chronosphere + YAML
- `spec-spy-detect-tech` โ€” Mid spy + tech reveal // counterintel; CICERO โ€” ENG:spy + YAML
## Group L โ€” Transport / Amphibious (6)
- `transport-apc-deliver-infantry` โ€” Mid APC delivers infantry // last-mile delivery; logistics โ€” ENG:apc-transport + YAML
- `transport-amphibious-landing` โ€” Mid-Late LST water cross // amphibious; D-Day โ€” ENG:water-mapgen+lst + YAML
- `transport-evacuate-by-transport` โ€” Mid evac units // BCP evacuation; emergency โ€” ENG:apc-transport + YAML
- `transport-multiple-trips` โ€” Mid ferry multiple loads // queueing โ€” ENG:apc-transport + YAML
- `transport-protect-en-route` โ€” Mid escort transport // convoy escort; mil โ€” ENG:apc-transport + YAML
- `transport-amphibious-island-base` โ€” Mid-Late build on island // amphibious base; strategic geography โ€” ENG:water-mapgen+lst + YAML
## Group M โ€” Power / Maintenance (7)
Most are gated on the engine power-signals fix (`power_surplus_gte`
is currently inert โ€” see CLAUDE.md footguns).
- `power-budget-online` โ€” Opening keep `power_surplus_gte:0` // grid bring-up; SC2 power โ€” ENG:power-signals + YAML
- `power-down-non-essential-under-attack` โ€” Mid load-shed // ops runbook โ€” ENG:power-signals + YAML
- `power-restoration-order-after-loss` โ€” Mid restore in correct order // utility restoration; DR โ€” ENG:power-signals + YAML
- `power-tech-vs-defense-conflict` โ€” Mid limited power: tech vs def // capacity allocation; OR โ€” ENG:power-signals + YAML
- `maint-repair-priority-order` โ€” Mid repair triage // DR โ€” YAML
- `maint-sell-and-recoup-cash` โ€” Mid sell + recoup // capital reallocation; finance โ€” YAML
- `maint-rebuild-from-power-failure` โ€” Mid restore after brownout // DR; utility โ€” ENG:power-signals + YAML
## Group N โ€” Coordination & Multi-agent (8)
- `coord-squad-handoff` โ€” Mid squad A to squad B handoff // multi-agent handoff; Watch-And-Help โ€” YAML
- `coord-relay-attack` โ€” Mid A attacks, B follows up // relay; SMAC โ€” YAML
- `coord-mutual-support` โ€” Mid stay in mutual support range // mil doctrine โ€” PRED:max_inter_unit_distance_lte + YAML
- `coord-converge-on-target` โ€” Mid 3 squads converge // SMAC โ€” YAML
- `coord-cover-and-move` โ€” Mid A covers while B moves // fire-and-maneuver; mil โ€” YAML
- `coord-diversionary-attack` โ€” Mid A diverts, B attacks real target // CICERO โ€” YAML
- `coord-air-ground-combined` โ€” Late (air) combined-arms // mil โ€” ENG:air-units + YAML
- `coord-naval-ground-combined` โ€” Late (naval) combined naval-ground // D-Day โ€” ENG:naval + YAML
## Group O โ€” Time-pressure variants (8)
(Each is a "+ tight clock" variant of an existing scenario family.)
- `tp-rush-objective-very-fast` โ€” Mid speedrun objective // speedrun; human speedrun โ€” YAML
- `tp-rush-objective-tighter` โ€” Mid tighter speedrun โ€” YAML
- `tp-rush-multi-objective` โ€” Mid speedrun 2 objectives // speedrun parallel โ€” YAML
- `tp-survive-N-turns` โ€” Mid survive until clock // survival; SC2 survival โ€” YAML
- `tp-survive-and-grow` โ€” Mid survive + grow // ops continuity; SRE โ€” YAML
- `tp-survive-and-strike-at-window` โ€” Mid survive then strike // SC2 timing window โ€” PRED:then + YAML
- `tp-decision-under-clock` โ€” Mid quick correct choice // tense decision; poker โ€” YAML
- `tp-pressure-procedural` โ€” Cross procedural under tight clock // procedure under stress; IFBench โ€” PRED:forbidden_tools + YAML