UAT: ContextConfig domain model missing ACMS-specific fields required by context view configuration schema (strategy, default_breadth, default_depth, depth_gradient, skeleton_ratio, query_limit) #4432

Closed
opened 2026-04-08 12:34:07 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: ACMS — Context View Configuration / ContextConfig domain model
Severity: Medium
Found by: UAT tester worker (ACMS context management)

What Was Tested

The ContextConfig domain model in src/cleveragents/domain/models/core/project.py compared against the spec's context view configuration schema (spec lines 35308–35441).

Expected Behavior (from spec §35308-35441)

The spec defines a formal JSON Schema for context view configuration files with the following ACMS-specific fields:

Field Type Default Description
strategy list Ordered list of ACMS context strategies for this view
default_breadth integer 2 Default UKO graph hop count for context expansion
default_depth integer or string 3 Default detail depth (integer or named level like SIGNATURES)
depth_gradient object Per-hop detail depth overrides (e.g., {0: 9, 1: 4, 2: 0})
skeleton_ratio float 0.15 Fraction of budget for inherited plan skeleton context
query_limit integer 20 Max retrieval results per query against cold tier

These fields are also documented in the CLI (agents project context set --strategy, --default-breadth, --default-depth, --depth-gradient, --skeleton-ratio, --query-limit).

Actual Behavior

ContextConfig in src/cleveragents/domain/models/core/project.py is missing these ACMS-specific fields:

# Actual ContextConfig fields:
# ignore_patterns, include_patterns, max_file_size, max_total_size,
# indexing_strategy, chunking_policy, chunk_size,
# hot_max_tokens, warm_max_decisions, cold_max_decisions,
# summarize, summary_max_tokens, temporal_scope, auto_refresh,
# retention_policy, execution_environment, execution_env_priority

# MISSING:
# - strategy (ACMS strategies list)
# - default_breadth (UKO graph hop count)
# - default_depth (detail depth)
# - depth_gradient (per-hop depth overrides)
# - skeleton_ratio (budget fraction for skeleton)
# - query_limit (max retrieval results per query)

Verified via runtime check:

from cleveragents.domain.models.core.project import ContextConfig
fields = ContextConfig.model_fields
# 'strategy', 'default_breadth', 'default_depth', 'depth_gradient',
# 'skeleton_ratio', 'query_limit' NOT in fields

Note: The CLI (project_context.py) does handle these fields via the acms_config dict stored in context_policy_json, but they are not part of the ContextConfig domain model. This means:

  1. The domain model does not enforce validation/defaults for these fields
  2. Code that reads ContextConfig cannot access these ACMS parameters through the typed model
  3. The ContextConfig model is inconsistent with the spec's context view configuration schema

Code Location

  • src/cleveragents/domain/models/core/project.pyContextConfig class (lines 186–298)
  • src/cleveragents/cli/commands/project_context.py — CLI stores these in acms_config dict (lines 189, 305, 518–654)
  • Spec reference: docs/specification.md lines 35308–35441

Impact

The ContextConfig domain model is incomplete relative to the spec. Any service or component that reads ContextConfig to configure ACMS behavior cannot access the strategy list, default breadth/depth, depth gradient, skeleton ratio, or query limit through the typed model. These must be read from the raw context_policy_json dict, bypassing type safety and validation.

Steps to Reproduce

from cleveragents.domain.models.core.project import ContextConfig
fields = ContextConfig.model_fields
for field in ['strategy', 'default_breadth', 'default_depth', 'depth_gradient', 'skeleton_ratio', 'query_limit']:
    assert field in fields, f'Missing field: {field}'  # FAILS for all 6 fields

Definition of Done

  • ContextConfig has typed fields for strategy, default_breadth, default_depth, depth_gradient, skeleton_ratio, and query_limit
  • Each field has appropriate defaults matching the spec (breadth=2, depth=3, skeleton_ratio=0.15, query_limit=20)
  • depth_gradient supports both integer and named level string values per hop
  • The CLI project_context.py uses these typed fields instead of raw dict access
  • Tests verify that ContextConfig can be constructed with all ACMS-specific fields

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area:** ACMS — Context View Configuration / `ContextConfig` domain model **Severity:** Medium **Found by:** UAT tester worker (ACMS context management) ### What Was Tested The `ContextConfig` domain model in `src/cleveragents/domain/models/core/project.py` compared against the spec's context view configuration schema (spec lines 35308–35441). ### Expected Behavior (from spec §35308-35441) The spec defines a formal JSON Schema for context view configuration files with the following ACMS-specific fields: | Field | Type | Default | Description | |-------|------|---------|-------------| | `strategy` | list | — | Ordered list of ACMS context strategies for this view | | `default_breadth` | integer | 2 | Default UKO graph hop count for context expansion | | `default_depth` | integer or string | 3 | Default detail depth (integer or named level like `SIGNATURES`) | | `depth_gradient` | object | — | Per-hop detail depth overrides (e.g., `{0: 9, 1: 4, 2: 0}`) | | `skeleton_ratio` | float | 0.15 | Fraction of budget for inherited plan skeleton context | | `query_limit` | integer | 20 | Max retrieval results per query against cold tier | These fields are also documented in the CLI (`agents project context set --strategy`, `--default-breadth`, `--default-depth`, `--depth-gradient`, `--skeleton-ratio`, `--query-limit`). ### Actual Behavior `ContextConfig` in `src/cleveragents/domain/models/core/project.py` is missing these ACMS-specific fields: ```python # Actual ContextConfig fields: # ignore_patterns, include_patterns, max_file_size, max_total_size, # indexing_strategy, chunking_policy, chunk_size, # hot_max_tokens, warm_max_decisions, cold_max_decisions, # summarize, summary_max_tokens, temporal_scope, auto_refresh, # retention_policy, execution_environment, execution_env_priority # MISSING: # - strategy (ACMS strategies list) # - default_breadth (UKO graph hop count) # - default_depth (detail depth) # - depth_gradient (per-hop depth overrides) # - skeleton_ratio (budget fraction for skeleton) # - query_limit (max retrieval results per query) ``` Verified via runtime check: ```python from cleveragents.domain.models.core.project import ContextConfig fields = ContextConfig.model_fields # 'strategy', 'default_breadth', 'default_depth', 'depth_gradient', # 'skeleton_ratio', 'query_limit' NOT in fields ``` Note: The CLI (`project_context.py`) does handle these fields via the `acms_config` dict stored in `context_policy_json`, but they are not part of the `ContextConfig` domain model. This means: 1. The domain model does not enforce validation/defaults for these fields 2. Code that reads `ContextConfig` cannot access these ACMS parameters through the typed model 3. The `ContextConfig` model is inconsistent with the spec's context view configuration schema ### Code Location - `src/cleveragents/domain/models/core/project.py` — `ContextConfig` class (lines 186–298) - `src/cleveragents/cli/commands/project_context.py` — CLI stores these in `acms_config` dict (lines 189, 305, 518–654) - Spec reference: `docs/specification.md` lines 35308–35441 ### Impact The `ContextConfig` domain model is incomplete relative to the spec. Any service or component that reads `ContextConfig` to configure ACMS behavior cannot access the strategy list, default breadth/depth, depth gradient, skeleton ratio, or query limit through the typed model. These must be read from the raw `context_policy_json` dict, bypassing type safety and validation. ### Steps to Reproduce ```python from cleveragents.domain.models.core.project import ContextConfig fields = ContextConfig.model_fields for field in ['strategy', 'default_breadth', 'default_depth', 'depth_gradient', 'skeleton_ratio', 'query_limit']: assert field in fields, f'Missing field: {field}' # FAILS for all 6 fields ``` ### Definition of Done - `ContextConfig` has typed fields for `strategy`, `default_breadth`, `default_depth`, `depth_gradient`, `skeleton_ratio`, and `query_limit` - Each field has appropriate defaults matching the spec (breadth=2, depth=3, skeleton_ratio=0.15, query_limit=20) - `depth_gradient` supports both integer and named level string values per hop - The CLI `project_context.py` uses these typed fields instead of raw dict access - Tests verify that `ContextConfig` can be constructed with all ACMS-specific fields --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-08 17:42:27 +00:00
Author
Owner

🔁 Duplicate Detection

This issue appears to duplicate #4557 ("UAT: ContextConfig domain model missing 6 spec-required ACMS fields: strategy, default_breadth, default_depth, depth_gradient, skeleton_ratio, query_limit"), which has already been closed as completed.

Both issues report missing ACMS-specific fields in the ContextConfig domain model.

Action: Closing this issue as a duplicate of #4557 (which is already resolved).


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

## 🔁 Duplicate Detection This issue appears to duplicate #4557 ("UAT: `ContextConfig` domain model missing 6 spec-required ACMS fields: `strategy`, `default_breadth`, `default_depth`, `depth_gradient`, `skeleton_ratio`, `query_limit`"), which has already been closed as completed. Both issues report missing ACMS-specific fields in the `ContextConfig` domain model. **Action:** Closing this issue as a duplicate of #4557 (which is already resolved). --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
Author
Owner

State label reconciliation:

  • Previous state: State/In Progress
  • Corrected to: State/Completed
  • Reason: Issue is closed but had a non-terminal state label. Per CONTRIBUTING.md, closed issues must have State/Completed or State/Wont Do.

Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

State label reconciliation: - Previous state: `State/In Progress` - Corrected to: `State/Completed` - Reason: Issue is closed but had a non-terminal state label. Per CONTRIBUTING.md, closed issues must have `State/Completed` or `State/Wont Do`. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
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.

Dependencies

No dependencies set.

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