The previous ACMSPipeline.__init__ invoked _load_strategies_from_settings
at line 831 before self._strategies (line 834) and self._logger (line 864)
were initialized. When a Settings whose context dict contained a
'strategies' key was passed in, the method body raised AttributeError on
'self._strategies', and the except handler then raised a second
AttributeError on 'self._logger' that propagated out of __init__ and
crashed pipeline construction entirely.
Move the auto-load call to after both attributes are bound. Convert the
pytest-shaped tests/strategies/test_strategy_registry.py (which the
behave-based unit_tests gate never ran) into a behave feature file +
step definitions under features/, matching the project's BDD convention
and bringing the strategy auto-loading paths under actual CI coverage.
ISSUES CLOSED: #7527
Implement strategy registry integration as spec §47561 by adding:
- load_strategies_from_config() in context_strategies.py for TOML-driven
strategy bootstrapping (register builtins, discover custom plugins via
module:ClassName, set enabled list)
- Re-exports of StrategyRegistry, StrategyConfig, StrategyRegistryEntry,
StrategyNotFoundError, StrategyRegistrationError and ContextStrategy from
strategy_registry and acms_service modules
- __all__ export list and DEFAULT_ENABLED_STRATEGIES constant
Fix StrategyRegistry.validate_registry() to skip resource_types check for
v1 pipeline strategies (context_strategies.py, acms_service.py) whose
StrategyCapabilities dataclass lacks the domain-model resource_types field,
preventing false-positive warnings. Adds _is_v1_pipeline_caps() helper.
Auto-load strategy configuration from Settings in ACMSPipeline.__init__()
when a Settings object is provided, reading context.strategies config and
registering/ enabling strategies via the plugin loader.