diff --git a/CHANGELOG.md b/CHANGELOG.md index 72970ffa3..e0be630fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,24 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ### Fixed +- **ACMS Default Pipeline Wiring** (#9169): `ACMSExecutePhaseContextAssembler` now + defaults to `ContextAssemblyPipeline()` instead of the base `ACMSPipeline()` when + no pipeline is injected. This ensures plan execution context assembly uses the full + production pipeline with `ConfidenceWeightedSelector`, `ProportionalBudgetAllocator`, + and `ParallelStrategyExecutor`. The DI container's `acms_pipeline` singleton and + `plan.py`'s `_get_plan_executor()` are updated accordingly. BDD coverage added to + verify `ContextAssemblyPipeline` is the default. + + +- **ACMS Default Pipeline Wiring** (#9169): `ACMSExecutePhaseContextAssembler` now + defaults to `ContextAssemblyPipeline()` instead of the base `ACMSPipeline()` when + no pipeline is injected. This ensures plan execution context assembly uses the full + production pipeline with `ConfidenceWeightedSelector`, `ProportionalBudgetAllocator`, + and `ParallelStrategyExecutor`. The DI container's `acms_pipeline` singleton and + `plan.py`'s `_get_plan_executor()` are updated accordingly. BDD coverage added to + verify `ContextAssemblyPipeline` is the default. + + - **TDD Non-AssertionError Guard Visibility** (#8294): `apply_tdd_inversion` in `features/environment.py` now emits its non-assertion exception guard warning to both the structured logger and `stderr` via a new `_warning_with_stderr` helper. diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 60ee6fb1d..c930315da 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -21,3 +21,4 @@ Below are some of the specific details of various contributions. * HAL 9000 has contributed the plugin entry point security hardening fix (#7476): enforced entry point allowlist validation before importing plugin modules to prevent malicious plugin loading. * This project was made possible thanks to considerable donation of time, money, and resources by CleverThis, Inc. * HAL 9000 has contributed automated bug fixes, CLI output formatting improvements, and ongoing maintenance as part of the CleverAgents automation system. +* HAL 9000 has contributed the ACMS default pipeline wiring fix (#9169): wired `ContextAssemblyPipeline` as the default pipeline in `ACMSExecutePhaseContextAssembler`, ensuring plan execution context assembly uses the full production pipeline with confidence-weighted selection, proportional budget allocation, and parallel strategy execution. diff --git a/features/steps/execute_phase_context_assembler_coverage_steps.py b/features/steps/execute_phase_context_assembler_coverage_steps.py index 203f6ae09..1490c5795 100644 --- a/features/steps/execute_phase_context_assembler_coverage_steps.py +++ b/features/steps/execute_phase_context_assembler_coverage_steps.py @@ -947,15 +947,19 @@ def step_epcov_assembled_has_data(context: Context) -> None: @given("epcov an assembler created without explicit pipeline") def step_epcov_assembler_no_pipeline(context: Context) -> None: """Create assembler without injecting a pipeline — should default to ContextAssemblyPipeline.""" - from unittest.mock import MagicMock - tier_service = MagicMock() repo = MagicMock() repo.get_context_policy.return_value = None - from cleveragents.application.services.execute_phase_context_assembler import ( - ACMSExecutePhaseContextAssembler, - ) context.epcov_assembler = ACMSExecutePhaseContextAssembler( context_tier_service=tier_service, project_repository=repo, ) + + +@then("epcov the assembler pipeline should be a ContextAssemblyPipeline instance") +def step_epcov_pipeline_is_context_assembly(context: Context) -> None: + from cleveragents.application.services.acms_pipeline import ContextAssemblyPipeline + + assert isinstance(context.epcov_assembler._pipeline, ContextAssemblyPipeline), ( + f"Expected ContextAssemblyPipeline, got {type(context.epcov_assembler._pipeline)}" + )