Context
In L5 (#157), StrategyTask gains {READY, ENEMY_ARMY_SIZE} as an entry criterion.
The criterion establishes the scouting → strategy ordering commitment and is made honest
by a stub read of ENEMY_ARMY_SIZE in execute() (used for telemetry).
However, DroolsStrategyTask.execute() still feeds raw ENEMY_UNITS (DataStore)
to Drools for structural unit-object matching. The full architectural intent is for
strategy to reason over scouting-derived intel, not raw sensor data.
What C2 entails
-
Replace DataStore<Unit> enemies in StrategyRuleUnit with scouting-derived fields:
ENEMY_ARMY_SIZE (int count)
ENEMY_POSTURE (String: from DroolsScoutingTask)
ENEMY_BUILD_ORDER (String: from DroolsScoutingTask)
-
Rewrite Drools strategy rules to use intel summaries instead of structural unit matching.
-
At that point, the {READY, ENEMY_ARMY_SIZE} criterion becomes a genuine data
dependency rather than an ordering stub.
Precondition
Depends on #157 (L5: binding conditions) being complete.
References
- Spec:
docs/superpowers/specs/2026-06-03-adaptive-plugin-selection-design.md
- C2 stub in DroolsStrategyTask.execute() — the comment there references this issue
Context
In L5 (#157), StrategyTask gains
{READY, ENEMY_ARMY_SIZE}as an entry criterion.The criterion establishes the scouting → strategy ordering commitment and is made honest
by a stub read of ENEMY_ARMY_SIZE in execute() (used for telemetry).
However, DroolsStrategyTask.execute() still feeds raw ENEMY_UNITS (DataStore)
to Drools for structural unit-object matching. The full architectural intent is for
strategy to reason over scouting-derived intel, not raw sensor data.
What C2 entails
Replace
DataStore<Unit> enemiesinStrategyRuleUnitwith scouting-derived fields:ENEMY_ARMY_SIZE(int count)ENEMY_POSTURE(String: from DroolsScoutingTask)ENEMY_BUILD_ORDER(String: from DroolsScoutingTask)Rewrite Drools strategy rules to use intel summaries instead of structural unit matching.
At that point, the
{READY, ENEMY_ARMY_SIZE}criterion becomes a genuine datadependency rather than an ordering stub.
Precondition
Depends on #157 (L5: binding conditions) being complete.
References
docs/superpowers/specs/2026-06-03-adaptive-plugin-selection-design.md