UAT: All 6 spec-required built-in ACMS context strategies are no-op stubs returning empty fragment lists #3500

Closed
opened 2026-04-05 18:41:12 +00:00 by freemo · 3 comments
Owner

Background and Context

The spec requires 6 built-in context strategies for the ACMS Context Pipeline. All 6 are implemented as no-op stubs in src/cleveragents/domain/models/acms/strategy_stubs.py that unconditionally return empty fragment lists from their assemble() method. The ACMSPipeline in acms_service.py uses different internal strategies (relevance, recency, tiered) that do work, but the spec-required strategies in strategy_stubs.py are never registered with the pipeline. This makes the entire spec-required context assembly system non-functional.

Current Behavior

All 6 spec-required built-in strategies return [] (empty list) regardless of the request or available backends:

Strategy Quality Score Required Backends Status
simple-keyword 0.3 Text No-op stub
semantic-embedding 0.6 Vector No-op stub
breadth-depth-navigator 0.85 Graph No-op stub
arce 0.95 Text + Vector + Graph No-op stub
temporal-archaeology 0.5 Graph + Temporal No-op stub
plan-decision-context 0.7 Temporal No-op stub

Code location: src/cleveragents/domain/models/acms/strategy_stubs.py — every assemble() method returns []

Steps to reproduce:

  1. Instantiate any of the 6 built-in strategy classes
  2. Call strategy.assemble(request, backends, budget, plan_context) with valid backends
  3. Observe that [] is returned regardless of backend contents

Expected Behavior

Each strategy should retrieve context fragments from the appropriate backend per the spec:

  • simple-keyword: Query the TextBackend with keywords from the ContextRequest
  • semantic-embedding: Query the VectorBackend with a semantic embedding of the request query
  • breadth-depth-navigator: Traverse the GraphBackend from focus nodes with the specified breadth/depth
  • arce: Multi-modal pipeline combining text, vector, and graph results
  • temporal-archaeology: Query historical versions from the GraphBackend and TemporalBackend
  • plan-decision-context: Retrieve decisions from parent/ancestor plans via the TemporalBackend

Acceptance Criteria

  • All 6 strategies implement real retrieval logic in assemble() using the appropriate backends
  • No strategy returns [] when valid backends and a non-empty ContextRequest are provided
  • Each strategy is registered with the ACMSPipeline so it is available for use
  • Unit tests cover each strategy's assemble() method with mocked backends
  • Integration test verifies the ACMS pipeline produces non-empty context fragments end-to-end

Metadata

  • Branch: fix/m5-acms-strategy-stubs-implement-retrieval
  • Commit Message: fix(acms): implement real retrieval logic in all 6 spec-required context strategies
  • Milestone: v3.4.0
  • Parent Epic: #396

Subtasks

  • Implement simple-keyword strategy: query TextBackend with keywords from ContextRequest
  • Implement semantic-embedding strategy: query VectorBackend with semantic embedding of request query
  • Implement breadth-depth-navigator strategy: traverse GraphBackend from focus nodes with specified breadth/depth
  • Implement arce strategy: multi-modal pipeline combining text, vector, and graph results
  • Implement temporal-archaeology strategy: query GraphBackend and TemporalBackend for historical versions
  • Implement plan-decision-context strategy: retrieve decisions from parent/ancestor plans via TemporalBackend
  • Register all 6 strategies with ACMSPipeline in acms_service.py
  • Tests (pytest/Behave): Add unit tests for each strategy's assemble() method with mocked backends
  • Tests (Robot): Add integration test verifying ACMS pipeline produces non-empty context fragments
  • Verify coverage >= 97% via nox -s coverage_report
  • Run nox (all default sessions), fix any errors

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly (fix(acms): implement real retrieval logic in all 6 spec-required context strategies), followed by a blank line, then additional lines providing relevant details about the implementation.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly (fix/m5-acms-strategy-stubs-implement-retrieval).
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass.
  • Coverage >= 97%.

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Background and Context The spec requires 6 built-in context strategies for the ACMS Context Pipeline. All 6 are implemented as no-op stubs in `src/cleveragents/domain/models/acms/strategy_stubs.py` that unconditionally return empty fragment lists from their `assemble()` method. The `ACMSPipeline` in `acms_service.py` uses different internal strategies (`relevance`, `recency`, `tiered`) that do work, but the spec-required strategies in `strategy_stubs.py` are never registered with the pipeline. This makes the entire spec-required context assembly system non-functional. ## Current Behavior All 6 spec-required built-in strategies return `[]` (empty list) regardless of the request or available backends: | Strategy | Quality Score | Required Backends | Status | |---|---|---|---| | `simple-keyword` | 0.3 | Text | ❌ No-op stub | | `semantic-embedding` | 0.6 | Vector | ❌ No-op stub | | `breadth-depth-navigator` | 0.85 | Graph | ❌ No-op stub | | `arce` | 0.95 | Text + Vector + Graph | ❌ No-op stub | | `temporal-archaeology` | 0.5 | Graph + Temporal | ❌ No-op stub | | `plan-decision-context` | 0.7 | Temporal | ❌ No-op stub | **Code location:** `src/cleveragents/domain/models/acms/strategy_stubs.py` — every `assemble()` method returns `[]` **Steps to reproduce:** 1. Instantiate any of the 6 built-in strategy classes 2. Call `strategy.assemble(request, backends, budget, plan_context)` with valid backends 3. Observe that `[]` is returned regardless of backend contents ## Expected Behavior Each strategy should retrieve context fragments from the appropriate backend per the spec: - `simple-keyword`: Query the `TextBackend` with keywords from the `ContextRequest` - `semantic-embedding`: Query the `VectorBackend` with a semantic embedding of the request query - `breadth-depth-navigator`: Traverse the `GraphBackend` from focus nodes with the specified breadth/depth - `arce`: Multi-modal pipeline combining text, vector, and graph results - `temporal-archaeology`: Query historical versions from the `GraphBackend` and `TemporalBackend` - `plan-decision-context`: Retrieve decisions from parent/ancestor plans via the `TemporalBackend` ## Acceptance Criteria - All 6 strategies implement real retrieval logic in `assemble()` using the appropriate backends - No strategy returns `[]` when valid backends and a non-empty `ContextRequest` are provided - Each strategy is registered with the `ACMSPipeline` so it is available for use - Unit tests cover each strategy's `assemble()` method with mocked backends - Integration test verifies the ACMS pipeline produces non-empty context fragments end-to-end ## Metadata - **Branch**: `fix/m5-acms-strategy-stubs-implement-retrieval` - **Commit Message**: `fix(acms): implement real retrieval logic in all 6 spec-required context strategies` - **Milestone**: v3.4.0 - **Parent Epic**: #396 ## Subtasks - [ ] Implement `simple-keyword` strategy: query `TextBackend` with keywords from `ContextRequest` - [ ] Implement `semantic-embedding` strategy: query `VectorBackend` with semantic embedding of request query - [ ] Implement `breadth-depth-navigator` strategy: traverse `GraphBackend` from focus nodes with specified breadth/depth - [ ] Implement `arce` strategy: multi-modal pipeline combining text, vector, and graph results - [ ] Implement `temporal-archaeology` strategy: query `GraphBackend` and `TemporalBackend` for historical versions - [ ] Implement `plan-decision-context` strategy: retrieve decisions from parent/ancestor plans via `TemporalBackend` - [ ] Register all 6 strategies with `ACMSPipeline` in `acms_service.py` - [ ] Tests (pytest/Behave): Add unit tests for each strategy's `assemble()` method with mocked backends - [ ] Tests (Robot): Add integration test verifying ACMS pipeline produces non-empty context fragments - [ ] Verify coverage >= 97% via `nox -s coverage_report` - [ ] Run `nox` (all default sessions), fix any errors ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly (`fix(acms): implement real retrieval logic in all 6 spec-required context strategies`), followed by a blank line, then additional lines providing relevant details about the implementation. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly (`fix/m5-acms-strategy-stubs-implement-retrieval`). - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass. - Coverage >= 97%. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.4.0 milestone 2026-04-05 18:41:16 +00:00
Author
Owner

Issue verified and triaged:

  • Priority: Critical — all 6 spec-required ACMS context strategies are no-op stubs, making the entire context assembly system non-functional.
  • Milestone: v3.4.0 (already assigned)
  • Story Points: 13 (XXL) — requires implementing real retrieval logic for 6 separate strategies, each with different backend requirements (Text, Vector, Graph, Temporal).
  • Parent Epic: #396 (already linked)
  • Next step: This issue is now ready for implementation. Note: #3491 (dual incompatible ContextStrategy protocols) should be resolved first, as it blocks strategy registration.

Automated by CleverAgents Bot
Supervisor: Human Liaison | Agent: ca-human-liaison

Issue verified and triaged: - **Priority**: Critical — all 6 spec-required ACMS context strategies are no-op stubs, making the entire context assembly system non-functional. - **Milestone**: v3.4.0 (already assigned) - **Story Points**: 13 (XXL) — requires implementing real retrieval logic for 6 separate strategies, each with different backend requirements (Text, Vector, Graph, Temporal). - **Parent Epic**: #396 (already linked) - **Next step**: This issue is now ready for implementation. Note: #3491 (dual incompatible ContextStrategy protocols) should be resolved first, as it blocks strategy registration. --- **Automated by CleverAgents Bot** Supervisor: Human Liaison | Agent: ca-human-liaison
Author
Owner

Starting implementation on branch fix/m5-acms-strategy-stubs-implement-retrieval.

Analysis complete:

  • All 6 strategy stubs in src/cleveragents/domain/models/acms/strategy_stubs.py have correct protocol signatures but return [] from assemble()
  • The backends (TextBackend, VectorBackend, GraphBackend, TemporalBackend) are all available with proper protocols
  • The ACMSPipeline in acms_service.py uses a different ContextStrategy protocol (the blocker from #3491) — we will address both issues together
  • Existing test context_strategy_registry.feature has a scenario "Stub strategies return empty fragment lists" that will need to be updated

Implementation plan:

  1. Implement real retrieval logic in all 6 strategies in strategy_stubs.py
  2. Register all 6 strategies with ACMSPipeline in acms_service.py
  3. Update the existing "stub" test to verify non-empty results
  4. Add unit tests for each strategy's assemble() method with mocked backends
  5. Add integration test verifying ACMS pipeline produces non-empty context fragments

Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

Starting implementation on branch `fix/m5-acms-strategy-stubs-implement-retrieval`. **Analysis complete:** - All 6 strategy stubs in `src/cleveragents/domain/models/acms/strategy_stubs.py` have correct protocol signatures but return `[]` from `assemble()` - The backends (`TextBackend`, `VectorBackend`, `GraphBackend`, `TemporalBackend`) are all available with proper protocols - The `ACMSPipeline` in `acms_service.py` uses a different `ContextStrategy` protocol (the blocker from #3491) — we will address both issues together - Existing test `context_strategy_registry.feature` has a scenario "Stub strategies return empty fragment lists" that will need to be updated **Implementation plan:** 1. Implement real retrieval logic in all 6 strategies in `strategy_stubs.py` 2. Register all 6 strategies with `ACMSPipeline` in `acms_service.py` 3. Update the existing "stub" test to verify non-empty results 4. Add unit tests for each strategy's `assemble()` method with mocked backends 5. Add integration test verifying ACMS pipeline produces non-empty context fragments --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
Author
Owner

PR #3635 created on branch fix/m5-acms-strategy-stubs-implement-retrieval. I will monitor and handle all review feedback until merged.

Implementation complete:

  • All 6 strategy stubs replaced with real retrieval logic
  • All 6 strategies registered with ACMSPipeline via SpecStrategyAdapter
  • Existing stub test updated (renamed to reflect empty-backend behavior)
  • 6 new Behave scenarios for real retrieval with populated backends
  • 2 new Robot Framework integration tests
  • Ruff lint: all checks passed
  • Pyright: 0 errors, 0 warnings

Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

PR #3635 created on branch `fix/m5-acms-strategy-stubs-implement-retrieval`. I will monitor and handle all review feedback until merged. **Implementation complete:** - ✅ All 6 strategy stubs replaced with real retrieval logic - ✅ All 6 strategies registered with `ACMSPipeline` via `SpecStrategyAdapter` - ✅ Existing stub test updated (renamed to reflect empty-backend behavior) - ✅ 6 new Behave scenarios for real retrieval with populated backends - ✅ 2 new Robot Framework integration tests - ✅ Ruff lint: all checks passed - ✅ Pyright: 0 errors, 0 warnings --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
freemo removed this from the v3.4.0 milestone 2026-04-06 21:04:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core#3500
No description provided.