Spaces:
Running
Running
Defect fix: 2 of 3 packs flagged by uniqueness audit
Browse files* spec-spy-infiltrate: stall was DRAW (spies died, engine auto-done
fired before any predicate hit). Added per-tier fail clause
'not unit_type_count_gte: {type: spy, n: 1}' so spy-death LOSSES
cleanly. Verified easy/medium/hard all stall LOSS.
* combat-naval-shore-strike: stall was WIN (destroyers on stance:2
auto-fired the shore garrison). Flipped all dd to stance:0 โ the
agent must explicitly attack_unit to engage. Tightened clock
(within_ticks 2699, after_ticks 2700, max_turns 32) so the fail
clause actually bites the deadline. Verified stall LOSS ร 3 tiers.
Still pending: mid-economy-under-fire (auto-killing perimeter tank
ring needs stance:0 or geometry change).
openra_bench/scenarios/packs/combat-naval-shore-strike.yaml
CHANGED
|
@@ -87,7 +87,7 @@ levels:
|
|
| 87 |
when the rifleman is killed.
|
| 88 |
overrides:
|
| 89 |
actors:
|
| 90 |
-
- {type: dd, owner: agent, position: [15, 20], stance:
|
| 91 |
- {type: e1, owner: enemy, position: [18, 20], stance: 0}
|
| 92 |
# Persistent far enemy marker โ prevents engine auto-done
|
| 93 |
# when the rifleman falls, so the win evaluator sees the
|
|
@@ -96,12 +96,12 @@ levels:
|
|
| 96 |
win_condition:
|
| 97 |
all_of:
|
| 98 |
- {units_killed_gte: 1}
|
| 99 |
-
- {within_ticks:
|
| 100 |
fail_condition:
|
| 101 |
any_of:
|
| 102 |
-
- {after_ticks:
|
| 103 |
- {not: {own_units_gte: 1}}
|
| 104 |
-
max_turns:
|
| 105 |
|
| 106 |
# โโ MEDIUM โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 107 |
# Two destroyers, three rifle infantry on the shore. The agent
|
|
@@ -114,8 +114,8 @@ levels:
|
|
| 114 |
y=18/20/22. Kill all three before tick 2700.
|
| 115 |
overrides:
|
| 116 |
actors:
|
| 117 |
-
- {type: dd, owner: agent, position: [15, 18], stance:
|
| 118 |
-
- {type: dd, owner: agent, position: [15, 22], stance:
|
| 119 |
- {type: e1, owner: enemy, position: [18, 18], stance: 0}
|
| 120 |
- {type: e1, owner: enemy, position: [18, 20], stance: 0}
|
| 121 |
- {type: e1, owner: enemy, position: [18, 22], stance: 0}
|
|
@@ -123,12 +123,12 @@ levels:
|
|
| 123 |
win_condition:
|
| 124 |
all_of:
|
| 125 |
- {units_killed_gte: 3}
|
| 126 |
-
- {within_ticks:
|
| 127 |
fail_condition:
|
| 128 |
any_of:
|
| 129 |
-
- {after_ticks:
|
| 130 |
- {not: {own_units_gte: 1}}
|
| 131 |
-
max_turns:
|
| 132 |
|
| 133 |
# โโ HARD โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 134 |
# Two destroyers vs four rifle infantry + one rocket soldier (e3).
|
|
@@ -144,8 +144,8 @@ levels:
|
|
| 144 |
least one destroyer alive.
|
| 145 |
overrides:
|
| 146 |
actors:
|
| 147 |
-
- {type: dd, owner: agent, position: [15, 18], stance:
|
| 148 |
-
- {type: dd, owner: agent, position: [15, 22], stance:
|
| 149 |
- {type: e1, owner: enemy, position: [18, 17], stance: 0}
|
| 150 |
- {type: e1, owner: enemy, position: [18, 19], stance: 0}
|
| 151 |
- {type: e3, owner: enemy, position: [18, 20], stance: 0}
|
|
@@ -155,9 +155,9 @@ levels:
|
|
| 155 |
win_condition:
|
| 156 |
all_of:
|
| 157 |
- {units_killed_gte: 5}
|
| 158 |
-
- {within_ticks:
|
| 159 |
fail_condition:
|
| 160 |
any_of:
|
| 161 |
-
- {after_ticks:
|
| 162 |
- {not: {own_units_gte: 1}}
|
| 163 |
-
max_turns:
|
|
|
|
| 87 |
when the rifleman is killed.
|
| 88 |
overrides:
|
| 89 |
actors:
|
| 90 |
+
- {type: dd, owner: agent, position: [15, 20], stance: 0}
|
| 91 |
- {type: e1, owner: enemy, position: [18, 20], stance: 0}
|
| 92 |
# Persistent far enemy marker โ prevents engine auto-done
|
| 93 |
# when the rifleman falls, so the win evaluator sees the
|
|
|
|
| 96 |
win_condition:
|
| 97 |
all_of:
|
| 98 |
- {units_killed_gte: 1}
|
| 99 |
+
- {within_ticks: 2699}
|
| 100 |
fail_condition:
|
| 101 |
any_of:
|
| 102 |
+
- {after_ticks: 2700}
|
| 103 |
- {not: {own_units_gte: 1}}
|
| 104 |
+
max_turns: 32
|
| 105 |
|
| 106 |
# โโ MEDIUM โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 107 |
# Two destroyers, three rifle infantry on the shore. The agent
|
|
|
|
| 114 |
y=18/20/22. Kill all three before tick 2700.
|
| 115 |
overrides:
|
| 116 |
actors:
|
| 117 |
+
- {type: dd, owner: agent, position: [15, 18], stance: 0}
|
| 118 |
+
- {type: dd, owner: agent, position: [15, 22], stance: 0}
|
| 119 |
- {type: e1, owner: enemy, position: [18, 18], stance: 0}
|
| 120 |
- {type: e1, owner: enemy, position: [18, 20], stance: 0}
|
| 121 |
- {type: e1, owner: enemy, position: [18, 22], stance: 0}
|
|
|
|
| 123 |
win_condition:
|
| 124 |
all_of:
|
| 125 |
- {units_killed_gte: 3}
|
| 126 |
+
- {within_ticks: 2699}
|
| 127 |
fail_condition:
|
| 128 |
any_of:
|
| 129 |
+
- {after_ticks: 2700}
|
| 130 |
- {not: {own_units_gte: 1}}
|
| 131 |
+
max_turns: 32
|
| 132 |
|
| 133 |
# โโ HARD โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 134 |
# Two destroyers vs four rifle infantry + one rocket soldier (e3).
|
|
|
|
| 144 |
least one destroyer alive.
|
| 145 |
overrides:
|
| 146 |
actors:
|
| 147 |
+
- {type: dd, owner: agent, position: [15, 18], stance: 0}
|
| 148 |
+
- {type: dd, owner: agent, position: [15, 22], stance: 0}
|
| 149 |
- {type: e1, owner: enemy, position: [18, 17], stance: 0}
|
| 150 |
- {type: e1, owner: enemy, position: [18, 19], stance: 0}
|
| 151 |
- {type: e3, owner: enemy, position: [18, 20], stance: 0}
|
|
|
|
| 155 |
win_condition:
|
| 156 |
all_of:
|
| 157 |
- {units_killed_gte: 5}
|
| 158 |
+
- {within_ticks: 2699}
|
| 159 |
fail_condition:
|
| 160 |
any_of:
|
| 161 |
+
- {after_ticks: 2700}
|
| 162 |
- {not: {own_units_gte: 1}}
|
| 163 |
+
max_turns: 32
|
openra_bench/scenarios/packs/spec-spy-infiltrate.yaml
CHANGED
|
@@ -95,7 +95,10 @@ levels:
|
|
| 95 |
all_of:
|
| 96 |
- {buildings_discovered_gte: 4}
|
| 97 |
- {within_ticks: 2000}
|
| 98 |
-
fail_condition:
|
|
|
|
|
|
|
|
|
|
| 99 |
max_turns: 25
|
| 100 |
|
| 101 |
# โโ MEDIUM โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -120,7 +123,10 @@ levels:
|
|
| 120 |
all_of:
|
| 121 |
- {buildings_discovered_gte: 6}
|
| 122 |
- {within_ticks: 3000}
|
| 123 |
-
fail_condition:
|
|
|
|
|
|
|
|
|
|
| 124 |
max_turns: 35
|
| 125 |
|
| 126 |
# โโ HARD โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -151,5 +157,8 @@ levels:
|
|
| 151 |
all_of:
|
| 152 |
- {buildings_discovered_gte: 7}
|
| 153 |
- {within_ticks: 4000}
|
| 154 |
-
fail_condition:
|
|
|
|
|
|
|
|
|
|
| 155 |
max_turns: 50
|
|
|
|
| 95 |
all_of:
|
| 96 |
- {buildings_discovered_gte: 4}
|
| 97 |
- {within_ticks: 2000}
|
| 98 |
+
fail_condition:
|
| 99 |
+
any_of:
|
| 100 |
+
- {after_ticks: 2001}
|
| 101 |
+
- not: {unit_type_count_gte: {type: spy, n: 1}}
|
| 102 |
max_turns: 25
|
| 103 |
|
| 104 |
# โโ MEDIUM โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
|
|
| 123 |
all_of:
|
| 124 |
- {buildings_discovered_gte: 6}
|
| 125 |
- {within_ticks: 3000}
|
| 126 |
+
fail_condition:
|
| 127 |
+
any_of:
|
| 128 |
+
- {after_ticks: 3001}
|
| 129 |
+
- not: {unit_type_count_gte: {type: spy, n: 1}}
|
| 130 |
max_turns: 35
|
| 131 |
|
| 132 |
# โโ HARD โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
|
|
| 157 |
all_of:
|
| 158 |
- {buildings_discovered_gte: 7}
|
| 159 |
- {within_ticks: 4000}
|
| 160 |
+
fail_condition:
|
| 161 |
+
any_of:
|
| 162 |
+
- {after_ticks: 4001}
|
| 163 |
+
- not: {unit_type_count_gte: {type: spy, n: 1}}
|
| 164 |
max_turns: 50
|