UAT: AutomationProfileService._DEFAULT_PROFILE hardcoded as manual — spec requires supervised (ADR-017) or review (reference docs) #4853

Open
opened 2026-04-08 20:09:09 +00:00 by HAL9000 · 0 comments
Owner

Summary

AutomationProfileService._DEFAULT_PROFILE is hardcoded as "manual" in src/cleveragents/application/services/automation_profile_service.py, but the specification documents disagree on what the default should be — and neither says manual.

What Was Tested

Code-level analysis of AutomationProfileService against ADR-017 and docs/reference/automation_profiles.md.

Expected Behavior (from spec)

ADR-017 (docs/adr/ADR-017-automation-profiles.md) states:

"The default global profile is supervised (configurable via core.automation-profile)."

Reference docs (docs/reference/automation_profiles.md) state:

"4. System default — Falls back to the review built-in profile."

Both spec documents agree that the default is NOT manual.

Actual Behavior (from code)

# src/cleveragents/application/services/automation_profile_service.py
_DEFAULT_PROFILE = "manual"

The effective_global_default property falls back to "manual" when no explicit config or env var is set:

@property
def effective_global_default(self) -> str:
    if self._global_default:
        return self._global_default
    env_val = os.environ.get(_ENV_VAR)
    if env_val:
        return env_val
    return _DEFAULT_PROFILE  # returns "manual"

Impact

This is a critical behavioral discrepancy. The manual profile requires human approval for every single action (all thresholds = 1.0). Using it as the default means new installations are maximally restrictive by default, which is inconsistent with the spec's intent.

  • ADR-017 says supervised (human reviews strategy and execution, auto for decompose)
  • Reference docs say review (auto-strategize, human reviews before execute and apply)
  • Code says manual (human approves everything)

Additionally, there is an internal inconsistency between the two spec documents (ADR-017 says supervised, reference docs say review). This inconsistency should also be resolved.

Code Location

  • src/cleveragents/application/services/automation_profile_service.py, line with _DEFAULT_PROFILE = "manual"

Steps to Reproduce

  1. Instantiate AutomationProfileService() with no arguments
  2. Call service.effective_global_default
  3. Observe it returns "manual" instead of "supervised" or "review"

Definition of Done

  • _DEFAULT_PROFILE is updated to match the spec (either supervised per ADR-017 or review per reference docs — the spec documents must first be reconciled)
  • The inconsistency between ADR-017 and reference docs is resolved (one document updated to match the other)
  • Tests verify the correct default is used when no config or env var is set

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

## Summary `AutomationProfileService._DEFAULT_PROFILE` is hardcoded as `"manual"` in `src/cleveragents/application/services/automation_profile_service.py`, but the specification documents disagree on what the default should be — and neither says `manual`. ## What Was Tested Code-level analysis of `AutomationProfileService` against ADR-017 and `docs/reference/automation_profiles.md`. ## Expected Behavior (from spec) **ADR-017** (`docs/adr/ADR-017-automation-profiles.md`) states: > "The default global profile is `supervised` (configurable via `core.automation-profile`)." **Reference docs** (`docs/reference/automation_profiles.md`) state: > "4. **System default** — Falls back to the `review` built-in profile." Both spec documents agree that the default is NOT `manual`. ## Actual Behavior (from code) ```python # src/cleveragents/application/services/automation_profile_service.py _DEFAULT_PROFILE = "manual" ``` The `effective_global_default` property falls back to `"manual"` when no explicit config or env var is set: ```python @property def effective_global_default(self) -> str: if self._global_default: return self._global_default env_val = os.environ.get(_ENV_VAR) if env_val: return env_val return _DEFAULT_PROFILE # returns "manual" ``` ## Impact This is a **critical behavioral discrepancy**. The `manual` profile requires human approval for every single action (all thresholds = 1.0). Using it as the default means new installations are maximally restrictive by default, which is inconsistent with the spec's intent. - ADR-017 says `supervised` (human reviews strategy and execution, auto for decompose) - Reference docs say `review` (auto-strategize, human reviews before execute and apply) - Code says `manual` (human approves everything) Additionally, there is an internal inconsistency between the two spec documents (ADR-017 says `supervised`, reference docs say `review`). This inconsistency should also be resolved. ## Code Location - `src/cleveragents/application/services/automation_profile_service.py`, line with `_DEFAULT_PROFILE = "manual"` ## Steps to Reproduce 1. Instantiate `AutomationProfileService()` with no arguments 2. Call `service.effective_global_default` 3. Observe it returns `"manual"` instead of `"supervised"` or `"review"` ## Definition of Done - [ ] `_DEFAULT_PROFILE` is updated to match the spec (either `supervised` per ADR-017 or `review` per reference docs — the spec documents must first be reconciled) - [ ] The inconsistency between ADR-017 and reference docs is resolved (one document updated to match the other) - [ ] Tests verify the correct default is used when no config or env var is set --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-08 20:18:50 +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.

Dependencies

No dependencies set.

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