fix(acms): wire ContextAssemblyPipeline as default in ACMSExecutePhaseContextAssembler #11095
Merged
HAL9000
merged 2 commits from 2026-06-14 12:33:39 +00:00
fix/pr-10027-acms-default-pipeline into master
Labels
Clear labels
auto/needs-reevaluation
controller-managed
overdue
auto/blocked-by-deps
auto/ci-timeout
auto/claimed-implementer
auto/claimed-merge
auto/claimed-reviewer
auto/driver-down
auto/invariant-violation
auto/last-attempt-tier-0
auto/last-attempt-tier-1
auto/last-attempt-tier-2
auto/last-attempt-tier-min
Automation Tracking
auto/needs-conflict-resolution
auto/needs-implementer
auto/postmortem
auto/ready-to-merge
auto/restart-throttled
auto/revert
auto/sentinel
auto/stale-inactivity
auto/unstable
Blocked
Needs Feedback
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.
Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.
PR blocked by an open issue dependency. Operator must close the dep (or remove the dependency link) before the merge driver can act. Auto-cleared by merge_drive when no open deps remain.
Most recent merge cycle hit CI timeout. Driver excludes this PR while last merge_cycle row is < 30 min old; label persists thereafter as visible history.
Currently being processed by an implementer worker.
Currently being processed by the merge driver.
Currently being processed by a reviewer worker.
Merge driver heartbeat stale; pipeline halted. Closed automatically on next clean tick.
Detected master commit violating the strict merge invariant. Tracked as an issue (not a PR label); kept here for label completeness.
In-cycle escalation: most recent attempt ran at the Tier 0 slot (`tier-0`). Slot's model defined in .opencode/models/tiers.yaml.
In-cycle escalation: most recent attempt ran at the Tier 1 slot (`tier-1`). Slot's model defined in .opencode/models/tiers.yaml.
In-cycle escalation: most recent attempt ran at the Tier 2 slot (`tier-2`). Slot's model defined in .opencode/models/tiers.yaml. Gated behind IMPLEMENTER_ESCALATION_TIER2_ENABLED.
In-cycle escalation: most recent attempt ran at the Tier -1 slot (`tier-min`). Slot's model defined in .opencode/models/tiers.yaml. Suffix is ``-min`` (not ``--1``) so the Forgejo UI reads naturally.
Tracking issues used by the AI Automation system for agents to communicate and report.
Rebase conflict needs LLM conflict-resolver.
Failing CI needs implementer attention.
Documenting a driver incident or rollback.
Reviewer has APPROVED this PR and no later REQUEST_CHANGES is outstanding. The merge driver requires this label to even consider a PR for merging. Set by the reviewer worker on APPROVE; cleared on REQUEST_CHANGES.
Train repeatedly lost master-tempo races. Driver excludes via merge_cycle until cooldown elapses; label persists as visible history.
Revert PR backing out an invariant violation. Fast-tracked through the merge driver.
Sentinel PR duplicated from upstream into a personal fork by tools/duplicate_prs_to_fork.py for pipeline testing. Lives only in the fork; the canonical pipeline never sees it.
No implementer activity for N days. Flagged for human review. Auto-cleared on next push to head branch.
Repeatedly fails on current master (>= 3 ci-fail-on-rebased-sha releases in 12 h). Excluded from driver until human triage.
A ticket in a blocked state and unable to complete until some other task is completed first.
Bounty
$100
A bounty of $100 for any open-source contributor who provides a MR that solves this issue
Bounty
$1000
A bounty of $1000 for any open-source contributor who provides a MR that solves this issue
Bounty
$10000
A bounty of $10000 for any open-source contributor who provides a MR that solves this issue
Bounty
$20
A bounty of $20 for any open-source contributor who provides a MR that solves this issue
Bounty
$2000
A bounty of $2000 for any open-source contributor who provides a MR that solves this issue
Bounty
$250
A bounty of $250 for any open-source contributor who provides a MR that solves this issue
Bounty
$50
A bounty of $50 for any open-source contributor who provides a MR that solves this issue
Bounty
$500
A bounty of $500 for any open-source contributor who provides a MR that solves this issue
Bounty
$5000
A bounty of $5000 for any open-source contributor who provides a MR that solves this issue
Bounty
$750
A bounty of $750 for any open-source contributor who provides a MR that solves this issue
MoSCoW
Could have
Could have feature in order to satisfy the epic/legendary.
MoSCoW
Must have
Must have feature in order to satisfy the epic/legendary.
MoSCoW
Should have
Should have feature in order to satisfy the epic/legendary.
There are questions in the ticket that can not be completed until the project owner provides clarity.
Points
1
1 man-hours worth of work for an expert with no learning curve.
Points
13
13 man-hours worth of work for an expert with no learning curve.
Points
2
2 man-hours worth of work for an expert with no learning curve.
Points
21
21 man-hours worth of work for an expert with no learning curve.
Points
3
3 man-hours worth of work for an expert with no learning curve.
Points
34
34 man-hours worth of work for an expert with no learning curve.
Points
5
5 man-hours worth of work for an expert with no learning curve.
Points
55
55 man-hours worth of work for an expert with no learning curve.
Points
8
8 man-hours worth of work for an expert with no learning curve.
Points
88
88 man-hours worth of work for an expert with no learning curve.
Priority
Backlog
This ticket has backlogged priority and is not to be worked on yet
Priority
CI Blocker
Critical priority issue that blocks CI/CD pipeline and prevents PR merges
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
A ticket for learning a tool or technology that is needed to be able to do future planning and design.
State
Completed
The ticket has been fully implemented, completed, and merged with the source code. This label should only be applied once a ticket is closed.
State
Duplicate
A ticket that represents the same content as an existing ticket.
State
In Progress
A ticket that is actively being developed.
State
In Review
A ticket that has had some code completed to implement but is waiting to pass peer review and is not yet merged in.
State
Paused
This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.
State
Unverified
All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.
State
Verified
The issue has been verified by a developer as legitimate. It will be worked on and verified tickets are now considered part of the backlog.
State
Wont Do
This ticket has been decided it wont be done. This may mean the bug has been determined to not be real (cant verify) or the feature is one we have decided we dont want to adopt.
Type
Automation
Any edits or discussion about the AI automated coding system.
Type
Bug
Something that doesnt work as intended.
Type
Discussion
Anytime a ticket represents a discussion about a subject and doesnt fall into one of the other categories.
Type
Documentation
An error or improvement needed in the documentation.
Type
Epic
Any first tier epic. That is, an epic which contains only issues as children and will not have sub-epics.
Type
Feature
Some new functionality not present.
Type
Legendary
A type of Epic which will contain other Epics.
Type
Refactor
A code change that restructures existing code without changing its external behavior.
Type
Support
Someone needs help using the project.
Type
Task
A generic task that doesnt fit into the other type categories.
Type
Testing
Work exclusively focusing on fixing or expanding testing.
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
aditya (Aditya Chhabra)
aleenaumair (Aleena Umair)
brent.edwards (Brent Edwards)
CoreRasurae (Luis Mendes)
drew (Drew Morris)
eugen.thaci (Eugen Thaci)
freemo (Jeffrey Phillips Freeman)
HAL9000 (HAL 9000)
HAL9001 (HAL9001)
hamza.khyari (Hamza Khyari)
hurui200320 (Rui Hu)
justin.morris
khird (Kyle Hird)
org.cleveragents
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: cleveragents/cleveragents-core#11095
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fix/pr-10027-acms-default-pipeline"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
ACMSExecutePhaseContextAssembler previously instantiated the plain ACMSPipeline as its default, missing production Phase 1 optimizations including confidence-weighted strategy selection, proportional budget allocation with min-budget enforcement, parallel strategy execution with circuit breaking, and per-stage timing instrumentation.
The default is now ContextAssemblyPipeline which provides all of these capabilities while remaining a drop-in replacement for ACMSPipeline.
Code Review — PR #11095
Summary
The core production change is correct and well-motivated: changing the default
acms_pipelineinACMSExecutePhaseContextAssembler.__init__fromACMSPipeline()toContextAssemblyPipeline()is exactly what issue #10027 requires. The logic is sound —ContextAssemblyPipelineextendsACMSPipelineand is a genuine drop-in replacement. The two new Behave scenarios are a good addition and directly verify the behaviour.However there are five blocking issues that must be resolved before this PR can be merged.
BLOCKING — 1. CHANGELOG.md destructs 91 lines of historical release content
This commit removes 91 lines from
CHANGELOG.md, including the entire tail of the[Unreleased]section and other historicalFixedentries that exist onmaster(#5436,#7476, etc.). The## [3.8.0]release section has had most of its body deleted.This is almost certainly a rebase/merge-conflict artefact where the PR branch was working off a stale base and the conflict was incorrectly resolved by discarding
masters content.Fix: Rebase this branch onto the latest
master, resolve theCHANGELOG.mdconflict by keeping all existing content frommasterand adding only the new entry for this PR.BLOCKING — 2. PR body missing
Closes #10027keywordThe PR description does not contain a
Closes #NorFixes #Nreference. Per CONTRIBUTING.md this is a mandatory merge prerequisite.Fix: Add
Closes #10027to the PR description body.BLOCKING — 3. Missing milestone
The PR has no milestone assigned. Issue #10027 is in milestone
v3.4.0. Per CONTRIBUTING.md, the PR must be assigned to the same milestone as the linked issue(s).Fix: Assign milestone
v3.4.0to this PR.BLOCKING — 4. Missing
Type/labelThe PR has only a
State/In Reviewlabel. Per CONTRIBUTING.md, exactly oneType/label is required. Issue #10027 isType/Bug, so this PR should be labelledType/Bug.Fix: Apply the
Type/Buglabel to this PR.BLOCKING — 5. Function-body import in step definitions
In
features/steps/execute_phase_context_assembler_coverage_steps.py, theContextAssemblyPipelineimport is placed inside the@thenstep function body. Project rules prohibit this — all imports must appear at the top of the file (onlyTYPE_CHECKINGblocks excepted).Fix: Move the import to the top of the file alongside the other production-code imports.
CI failures
Two CI jobs are failing:
CI / e2e_testsandCI / benchmark-regression. Core gates (lint, typecheck, security, unit_tests, integration_tests) are passing. The author should investigate whether these failures are caused by this PR or are pre-existing.Missing Forgejo dependency link (PR->issue)
The PR does not block issue #10027 in the Forgejo dependency graph. Per CONTRIBUTING.md the correct direction is PR blocks issue.
Fix: On this PR, add issue #10027 under "blocks".
Suggestion: container.py not updated
Issue #10027 body listed
container.pyas needing update (change singleton fromACMSPipelinetoContextAssemblyPipelineand remove the unsupportedplugin_managerparameter). Please clarify if this was intentionally omitted.What looks good
execute_phase_context_assembler.pyis minimal, correct, and well-typedCONTRIBUTORS.mdentry is presentISSUES CLOSED: #10027lint,typecheck,security,unit_tests, andintegration_testsall passAddress the five blocking items above and re-push — the core implementation is solid.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
BLOCKING — Historical CHANGELOG content accidentally deleted
This hunk removes 91 lines that exist on master, including historical Fixed entries and the tail of the [Unreleased] section. This appears to be a rebase/merge-conflict artefact.
Why this is wrong: The deleted entries document shipped fixes and are part of the project history. Removing them corrupts the CHANGELOG.
How to fix: Rebase this branch onto the latest master (git rebase master), then resolve the CHANGELOG conflict by keeping all of masters content and adding only the new entry for this PR. After rebasing, verify: git diff master...HEAD -- CHANGELOG.md should show only additions (the new entry), no deletions.
BLOCKING — Import inside function body violates project import rules
This import is inside the @then step function body. Project rules mandate that all imports must appear at the top of the file. The only permitted exception is if TYPE_CHECKING: guards for annotation-only imports.
Why this is wrong: Function-level imports make dependencies invisible at module load time, can hide ImportErrors until the step runs, and violate the project explicit Python import policy.
How to fix: Move this import to the top of the file alongside the other cleveragents.* imports:
Then use ContextAssemblyPipeline directly in the assertion without re-importing.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Code Review — PR #11095
Summary
The core production change is correct and well-motivated: switching the default
acms_pipelineinACMSExecutePhaseContextAssembler.__init__fromACMSPipeline()toContextAssemblyPipeline()is exactly what the issue description calls for.ContextAssemblyPipelineis a genuine drop-in replacement that adds production Phase 1 optimizations (confidence-weighted strategy selection, proportional budget allocation, parallel strategy execution with circuit breaking, per-stage timing instrumentation). The two new Behave scenarios directly verify both the default and override behaviours, and all core CI gates pass (lint, typecheck, security, unit_tests, integration_tests, coverage).However, there are four blocking issues that must be resolved before this PR can be merged.
BLOCKING — 1. CHANGELOG.md accidentally deletes 92 lines of historical release content
This commit removes 92 lines from
CHANGELOG.md— specifically the tail of the[Unreleased]section (entries for#5436,#7476, multiple other fixes, and theagents actor removefix #6491), plus the entire## [3.8.0] -- 2026-04-05section header and its body. These exist onmasterand are not related to this PR.This is almost certainly a rebase/merge-conflict artefact where the PR branch was working off a stale base and the conflict was resolved by discarding
masters content.Why this is blocking: Deleting historical changelog entries destroys the project release record.
Fix: Rebase this branch onto the latest
master. When resolving theCHANGELOG.mdconflict, keep all existing content frommasterintact and prepend only the new entry for this PR.BLOCKING — 2. Function-body import violates project import rules
In
features/steps/execute_phase_context_assembler_coverage_steps.py, the import ofContextAssemblyPipelineis placed inside the@thenstep function body:Project rules (CONTRIBUTING.md) are explicit: all imports must be at the top of the file. The only permitted exception is
if TYPE_CHECKING:blocks.Why this is blocking: Violates a mandatory code style rule.
Fix: Move the
ContextAssemblyPipelineimport to the top of the file, alongside the existing production-code imports.BLOCKING — 3. PR body missing
Closes #10027keywordThe PR description does not contain a
Closes #NorFixes #Nreference. Per CONTRIBUTING.md this is a mandatory PR prerequisite — a PR without an issue reference will not be reviewed.Why this is blocking: Reviewers and the merge gate cannot confirm which issue this PR closes without the closing keyword.
Fix: Add
Closes #10027to the PR description body.BLOCKING — 4. Missing milestone and
Type/labelThe PR has no milestone assigned and only a
State/In Reviewlabel — noType/label is present. Per CONTRIBUTING.md, the PR must be assigned to the same milestone as the linked issue(s) and must carry exactly oneType/label. Issue #10027 is a bug fix, soType/Bugis appropriate.Why this is blocking: Both are hard requirements in the PR merge checklist.
Fix: Assign the
v3.4.0milestone and apply theType/Buglabel.CI failures — investigation required
Two CI jobs are failing:
CI / e2e_tests— Failing after 6m1s. Please investigate whether this failure is caused by this PR (e.g., the heavierContextAssemblyPipelinedefault timing out in e2e scenarios) or is pre-existing onmaster.CI / benchmark-regression— Failing after 1m49s. Switching from the lightweightACMSPipelinestub to the fullContextAssemblyPipeline(withThreadPoolExecutor, circuit breakers, timings) could introduce measurable latency. Confirm whether benchmark regressions are introduced by this change.CI / status-check— Failing as a cascade from the above two.If these failures are pre-existing on
master, please document that in a PR comment so reviewers can confirm. If they are caused by this PR, they must be fixed before merge.Suggestion: dependency link in Forgejo
The PR does not appear to block issue #10027 in the Forgejo dependency graph. Per CONTRIBUTING.md the correct direction is PR blocks issue. Please add issue #10027 under the "blocks" relationship on this PR.
What looks good
ContextAssemblyPipelineis a subclass ofACMSPipelineso the type annotationacms_pipeline: ACMSPipeline | Noneremains valid.MagicMockfor dependencies.CONTRIBUTORS.mdentry is descriptive and present.fix(acms): wire ContextAssemblyPipeline as default in ACMSExecutePhaseContextAssembler.ISSUES CLOSED: #10027.Address the four blocking items and re-push. The implementation itself is correct.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
@@ -14,6 +14,7 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).from the TDD test so both scenarios run as normal regression guards. (#988)### Fixed- **ACMS executes phase now uses ContextAssemblyPipeline by default** (#10027): ``ACMSExecutePhaseContextAssembler`` previously instantiated the plain ``ACMSPipeline`` when no pipeline was explicitly provided, missing production Phase 1 optimizations including confidence-weighted strategy selection, proportional budget allocation with min-budget enforcement, parallel strategy execution with circuit breaking, and per-stage timing instrumentation. The default is now ``ContextAssemblyPipeline`` which provides all of these capabilities while remaining a drop-in replacement for ``ACMSPipeline``. Added Behave scenario verifying the default pipeline type.BLOCKING — Accidental deletion of historical changelog content
This new entry is placed correctly. However, this commit also removes 92 lines below — including the tail of the
[Unreleased]section (#5436,#7476,#6491agents actor removefix, and others) plus the entire## [3.8.0] -- 2026-04-05section. These entries exist onmasterand are unrelated to this PR.This is almost certainly a rebase/merge-conflict artefact. Fix: Rebase onto latest
masterand keep all existingCHANGELOG.mdcontent, adding only this new entry.Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
BLOCKING — Import must be at the top of the file, not inside the function body
Project rules (CONTRIBUTING.md) require all imports to appear at the top of the module. The only permitted exception is
if TYPE_CHECKING:guard blocks. This import:...must be moved to the top of this file alongside the other production-code imports (after the existing
from cleveragents.application.services.execute_phase_context_assembler import ...block).Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
[CONTROLLER-DEFER:Gate 1:full_duplicate]
This PR has been deferred for re-evaluation. The controller has stepped back
from processing it. To resume, a human or scope-evaluator must clear the
deferral flag AND re-add the auto/sentinel label.
Decision:
To clear the deferral (SQL):
UPDATE workflows SET deferred_reason=NULL,
deferred_at=NULL,
deferred_target_workflow_id=NULL
WHERE workflow_id = 470;
Audit ID: 160491
Automated by the CleverAgents controller pipeline.
Identity: HAL9000 (pipeline action)
🌱 Grooming: proceed — PR cleared for processing.
(check
no_duplicates, categoryno_duplicates)PR #11095 targets a specific ACMS default pipeline instantiation fix: wiring ContextAssemblyPipeline instead of ACMSPipeline in ACMSExecutePhaseContextAssembler to enable production optimizations. Scanned 306 open PRs; multiple ACMS-related PRs exist (storage tiers, policy config, CLI, budget enforcement, path matching, indexing) but none address the same default pipeline choice. No topical overlap found—this is a targeted, non-duplicate fix.
📋 Estimate: tier 1.
6 files changed (+75/-94): wiring a more capable default pipeline (ContextAssemblyPipeline) into ACMSExecutePhaseContextAssembler. Conceptually a focused swap, but CI is failing on coverage, docker, and status-check gates, indicating tests need updating to accommodate the new default's behavior (confidence-weighted selection, parallel execution with circuit-breaking, per-stage timing). Multi-file scope with test burden = standard tier 1.
🌱 Grooming: proceed — PR cleared for processing.
(check
no_duplicates, categoryno_duplicates)No open PR shares the anchor's specific focus on wiring ContextAssemblyPipeline as the default in ACMSExecutePhaseContextAssembler. Related ACMS PRs address index/policy/budget features, while context-strategy PRs implement new strategies or integration points. No topical overlap detected. High confidence no duplicate.
📋 Estimate: tier 1.
6-file diff (+75/-94) wiring a new default pipeline implementation in ACMSExecutePhaseContextAssembler. Conceptually a substitution, but three CI gates (coverage, docker, status-check) are failing, indicating the new default breaks existing test assumptions or exposes interface mismatches. Implementer needs cross-file context to understand ContextAssemblyPipeline vs ACMSPipeline compatibility and diagnose/fix the failures. Clearly above tier-0 mechanical threshold; not tier-2 since scope is contained within the ACMS subsystem.
7853420ddftoaf5060b118✅ Approved
Reviewed at commit
91f8b54.Confidence: high.
Claimed by
merge_drive.py(pid 2329255) until2026-06-14T13:48:11.882527+00:00.This claim is advisory and will be released when the cycle ends, or after the TTL by a sibling driver's expired-claim sweep.
91f8b54abetobedd1ec0c5Approved by the controller reviewer stage (workflow 470).