fix(acms): wire ContextAssemblyPipeline as default in ACMSExecutePhaseContextAssembler
CI / push-validation (pull_request) Successful in 26s
CI / helm (pull_request) Successful in 54s
CI / build (pull_request) Successful in 56s
CI / lint (pull_request) Successful in 1m7s
CI / security (pull_request) Successful in 1m29s
CI / typecheck (pull_request) Successful in 1m38s
CI / quality (pull_request) Successful in 1m40s
CI / e2e_tests (pull_request) Successful in 3m42s
CI / unit_tests (pull_request) Failing after 4m23s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Failing after 4m43s
CI / coverage (pull_request) Successful in 11m24s
CI / status-check (pull_request) Failing after 4s

- Remove in-function imports from step_epcov_assembler_no_pipeline (MagicMock and ACMSExecutePhaseContextAssembler already imported at top of file)
- Add missing @then step for "epcov the assembler pipeline should be a ContextAssemblyPipeline instance"
- Update CHANGELOG.md with fix entry for #9169
- Update CONTRIBUTORS.md with HAL 9000 contribution entry
This commit is contained in:
2026-04-25 01:12:15 +00:00
parent ea66d4b0fd
commit 15021e40ee
3 changed files with 28 additions and 5 deletions
+18
View File
@@ -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.
+1
View File
@@ -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.
@@ -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)}"
)