Skip to content

C2: refactor StrategyTask to consume scouting-derived intel instead of raw ENEMY_UNITS #169

@mdproctor

Description

@mdproctor

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

  1. 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)
  2. Rewrite Drools strategy rules to use intel summaries instead of structural unit matching.

  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions