UAT: action create silently drops estimation_actor, review_actor, invariant_actor, and automation_profile from YAML config #5414

Open
opened 2026-04-09 06:34:58 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area: Plan Lifecycle Core — agents action create
Severity: Critical (blocks milestone acceptance — actors and automation profile are core action fields)

What Was Tested

Code-level analysis of agents action create --config action.yaml against the specification.

Expected Behavior (from spec)

When an action YAML config file specifies estimation_actor, review_actor, invariant_actor, or automation_profile, those fields should be persisted to the action record in SQLite and returned in the created action's output.

Actual Behavior

The CLI command agents action create at src/cleveragents/cli/commands/action.py lines 242–253 calls service.create_action() but silently drops four fields that were parsed from the YAML config:

# action.py lines 242-253 — MISSING FIELDS:
action = service.create_action(
    name=str(action.namespaced_name),
    definition_of_done=action.definition_of_done,
    strategy_actor=action.strategy_actor,
    execution_actor=action.execution_actor,
    description=action.description,
    long_description=action.long_description,
    arguments=action.arguments,
    reusable=action.reusable,
    read_only=action.read_only,
    tags=action.tags,
    # MISSING: estimation_actor=action.estimation_actor,
    # MISSING: review_actor=action.review_actor,
    # MISSING: invariant_actor=action.invariant_actor,
    # MISSING: automation_profile=action.automation_profile,
)

The Action.from_config() method at src/cleveragents/domain/models/core/action.py lines 638–659 correctly parses all four fields from the YAML config. The service.create_action() method at src/cleveragents/application/services/plan_lifecycle_service.py lines 718–807 accepts all four as parameters. The CLI is the missing link.

Impact

  • An action YAML with estimation_actor: local/estimator will create an action with estimation_actor=None
  • An action YAML with invariant_actor: local/invariant-checker will create an action with invariant_actor=None
  • An action YAML with automation_profile: careful will create an action with automation_profile=None
  • Plans created from such actions will not inherit the configured actors or automation profile
  • The Invariant Reconciliation Actor will never be invoked for plans from such actions

Steps to Reproduce

  1. Create an action YAML with estimation_actor, invariant_actor, and automation_profile fields
  2. Run agents action create --config action.yaml
  3. Run agents action show local/my-action --format json
  4. Observe that estimation_actor, invariant_actor, and automation_profile are null

Code Location

  • Bug: src/cleveragents/cli/commands/action.py, lines 242–253 (the create command)
  • Root cause: Missing keyword arguments in the service.create_action() call
  • Fix: Add estimation_actor=action.estimation_actor, review_actor=action.review_actor, invariant_actor=action.invariant_actor, automation_profile=action.automation_profile to the call

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

## Bug Report **Feature Area**: Plan Lifecycle Core — `agents action create` **Severity**: Critical (blocks milestone acceptance — actors and automation profile are core action fields) ## What Was Tested Code-level analysis of `agents action create --config action.yaml` against the specification. ## Expected Behavior (from spec) When an action YAML config file specifies `estimation_actor`, `review_actor`, `invariant_actor`, or `automation_profile`, those fields should be persisted to the action record in SQLite and returned in the created action's output. ## Actual Behavior The CLI command `agents action create` at `src/cleveragents/cli/commands/action.py` lines 242–253 calls `service.create_action()` but **silently drops** four fields that were parsed from the YAML config: ```python # action.py lines 242-253 — MISSING FIELDS: action = service.create_action( name=str(action.namespaced_name), definition_of_done=action.definition_of_done, strategy_actor=action.strategy_actor, execution_actor=action.execution_actor, description=action.description, long_description=action.long_description, arguments=action.arguments, reusable=action.reusable, read_only=action.read_only, tags=action.tags, # MISSING: estimation_actor=action.estimation_actor, # MISSING: review_actor=action.review_actor, # MISSING: invariant_actor=action.invariant_actor, # MISSING: automation_profile=action.automation_profile, ) ``` The `Action.from_config()` method at `src/cleveragents/domain/models/core/action.py` lines 638–659 correctly parses all four fields from the YAML config. The `service.create_action()` method at `src/cleveragents/application/services/plan_lifecycle_service.py` lines 718–807 accepts all four as parameters. The CLI is the missing link. ## Impact - An action YAML with `estimation_actor: local/estimator` will create an action with `estimation_actor=None` - An action YAML with `invariant_actor: local/invariant-checker` will create an action with `invariant_actor=None` - An action YAML with `automation_profile: careful` will create an action with `automation_profile=None` - Plans created from such actions will not inherit the configured actors or automation profile - The Invariant Reconciliation Actor will never be invoked for plans from such actions ## Steps to Reproduce 1. Create an action YAML with `estimation_actor`, `invariant_actor`, and `automation_profile` fields 2. Run `agents action create --config action.yaml` 3. Run `agents action show local/my-action --format json` 4. Observe that `estimation_actor`, `invariant_actor`, and `automation_profile` are `null` ## Code Location - **Bug**: `src/cleveragents/cli/commands/action.py`, lines 242–253 (the `create` command) - **Root cause**: Missing keyword arguments in the `service.create_action()` call - **Fix**: Add `estimation_actor=action.estimation_actor`, `review_actor=action.review_actor`, `invariant_actor=action.invariant_actor`, `automation_profile=action.automation_profile` to the call --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.2.0 milestone 2026-04-09 06:49:37 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Critical — action create silently drops estimation_actor, review_actor, invariant_actor, and automation_profile from YAML config. Users who configure these fields get no error — the fields are simply ignored, leading to incorrect action behavior.
  • Milestone: v3.2.0 — action creation is a core v3.2.0 feature
  • Story Points: 3 — M — requires identifying where the fields are dropped and adding proper handling/validation
  • MoSCoW: Must Have — silently dropping user-configured fields is a data loss bug. Users cannot configure actor assignments for actions.
  • Parent Epic: Needs linking to the actions/CLI epic

Triage Rationale: Silent data loss is always a critical bug. Users configure these fields expecting them to be persisted, but they're silently dropped. This affects action configuration correctness across all milestones.


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

Issue triaged by project owner: - **State**: Verified - **Priority**: Critical — `action create` silently drops `estimation_actor`, `review_actor`, `invariant_actor`, and `automation_profile` from YAML config. Users who configure these fields get no error — the fields are simply ignored, leading to incorrect action behavior. - **Milestone**: v3.2.0 — action creation is a core v3.2.0 feature - **Story Points**: 3 — M — requires identifying where the fields are dropped and adding proper handling/validation - **MoSCoW**: Must Have — silently dropping user-configured fields is a data loss bug. Users cannot configure actor assignments for actions. - **Parent Epic**: Needs linking to the actions/CLI epic **Triage Rationale**: Silent data loss is always a critical bug. Users configure these fields expecting them to be persisted, but they're silently dropped. This affects action configuration correctness across all milestones. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
Author
Owner

Label compliance fix applied:

  • Added missing labels to bring issue into compliance with CONTRIBUTING.md

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

Label compliance fix applied: - Added missing labels to bring issue into compliance with CONTRIBUTING.md --- **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#5414
No description provided.