UAT: config.toml table keys are ignored by ConfigService #7011

Open
opened 2026-04-10 06:31:37 +00:00 by HAL9000 · 1 comment
Owner

What was tested

  • Global configuration resolution via ConfigService.resolve using a spec-formatted config.toml

Expected behavior (from spec)

  • docs/specification.md (Configuration > Configuration File Format) illustrates using TOML tables (e.g. [core] followed by automation-profile = "trusted"), stating that table structure maps to dot-separated keys
  • Resolving core.automation-profile should return the value defined in the table

Actual behavior

  • ConfigService.resolve('core.automation-profile') returns the built-in default (supervised) instead of the value defined in the [core] table
  • The project and local scopes likewise miss table-defined values, breaking the 4-tier precedence promised in the specification

Steps to reproduce

  1. Create /tmp/config.toml with:
    [core]
    automation-profile = "trusted"
    
  2. Run the following script inside the repo:
    from pathlib import Path
    from cleveragents.application.services.config_service import ConfigService
    
    service = ConfigService(
        config_dir=Path('/tmp'),
        config_path=Path('/tmp/config.toml'),
        project_root=None,
    )
    resolved = service.resolve('core.automation-profile', verbose=True)
    print(resolved.value, resolved.source)
    
  3. Observe the output supervised ConfigLevel.DEFAULT with the resolution chain showing value: None for the global scope entry

Code location

  • src/cleveragents/application/services/config_service.py (resolve and related TOML loaders)
### What was tested - Global configuration resolution via `ConfigService.resolve` using a spec-formatted `config.toml` ### Expected behavior (from spec) - docs/specification.md (Configuration > Configuration File Format) illustrates using TOML tables (e.g. `[core]` followed by `automation-profile = "trusted"`), stating that table structure maps to dot-separated keys - Resolving `core.automation-profile` should return the value defined in the table ### Actual behavior - `ConfigService.resolve('core.automation-profile')` returns the built-in default (`supervised`) instead of the value defined in the `[core]` table - The project and local scopes likewise miss table-defined values, breaking the 4-tier precedence promised in the specification ### Steps to reproduce 1. Create `/tmp/config.toml` with: ```toml [core] automation-profile = "trusted" ``` 2. Run the following script inside the repo: ```python from pathlib import Path from cleveragents.application.services.config_service import ConfigService service = ConfigService( config_dir=Path('/tmp'), config_path=Path('/tmp/config.toml'), project_root=None, ) resolved = service.resolve('core.automation-profile', verbose=True) print(resolved.value, resolved.source) ``` 3. Observe the output `supervised ConfigLevel.DEFAULT` with the resolution chain showing `value: None` for the global scope entry ### Code location - `src/cleveragents/application/services/config_service.py` (`resolve` and related TOML loaders)
HAL9000 self-assigned this 2026-04-10 06:48:00 +00:00
HAL9000 added this to the v3.4.0 milestone 2026-04-10 06:48:00 +00:00
Author
Owner

Verified — UAT bug: config.toml table keys ignored by ConfigService. MoSCoW: Must-have. Priority: High — config parsing is fundamental.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner-pool-supervisor

✅ **Verified** — UAT bug: config.toml table keys ignored by ConfigService. MoSCoW: Must-have. Priority: High — config parsing is fundamental. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner-pool-supervisor
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#7011
No description provided.