"""EvoX scaffold — one module per component.

  population.py        -> EvoXPopulation        (hosts the ACTIVE evolved strategy + φ statistics)
  selection_policy.py  -> EvoXPolicy            (thin adapter over the strategy's sample())
  prompt_builder.py    -> EvoXPromptBuilder     (operator-labeled default template + all prompts)
  proposer.py          -> EvoXProposer          (diff proposer + parent_info/context_ids stamps)
  evaluator.py         -> EvoXEvaluator         (task-supplied)
  memory.py            -> EvoXStrategyMemory    (the strategy history H)
  scaffold.py          -> EvoXScaffold          (the orchestrator that composes the six)

plus two non-component infra modules:

  strategy.py          -> StrategyBase / load_strategy_from_source / validate_strategy (Valid(·))
  seed_strategy.py     -> the S0 GENOME (read as text by the meta loop AND executed)
"""
from .evaluator import EvoXEvaluator
from .memory import EvoXStrategyMemory
from .population import EvoXPopulation
from .prompt_builder import EvoXPromptBuilder
from .proposer import EvoXProposer
from .scaffold import EvoXScaffold
from .selection_policy import EvoXPolicy
from .strategy import StrategyBase, load_strategy_from_source, validate_strategy

__all__ = [
    "EvoXScaffold",
    "EvoXPopulation", "EvoXPolicy", "EvoXPromptBuilder", "EvoXProposer",
    "EvoXEvaluator", "EvoXStrategyMemory",
    "StrategyBase", "load_strategy_from_source", "validate_strategy",
]
