UAT: agents action create silently drops estimation_actor, invariant_actor, automation_profile, and invariants from YAML config #3560

Open
opened 2026-04-05 19:41:14 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: fix/uat-action-create-drops-optional-fields
  • Commit Message: fix(cli): pass estimation_actor, invariant_actor, automation_profile, and invariants to service.create_action()
  • Milestone: (none — backlog)
  • Parent Epic: #3370

Backlog note: This issue was discovered during autonomous operation
on milestone v3.6.0. It does not block milestone completion and has been
placed in the backlog for human review and future milestone assignment.

Description

The agents action create CLI command parses the YAML config file using ActionConfigSchema (which correctly supports estimation_actor, invariant_actor, automation_profile, and invariants fields), converts it to an Action domain object, but then calls service.create_action() without passing these four optional fields. As a result, any values specified in the YAML config for these fields are silently dropped and the created action will have None/empty values for them.

Code location: /app/src/cleveragents/cli/commands/action.py, lines 242–253

The current (broken) call to service.create_action() is:

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 parameters that should be passed:

  • estimation_actor=action.estimation_actor
  • invariant_actor=action.invariant_actor
  • automation_profile=action.automation_profile
  • invariants=action.invariants

The PlanLifecycleService.create_action() method (at line 718 in plan_lifecycle_service.py) already accepts all four of these parameters — they simply need to be forwarded from the CLI layer.

Steps to Reproduce

  1. Create an action YAML file with estimation_actor, invariant_actor, automation_profile, and/or invariants fields set
  2. Run agents action create --config ./my-action.yaml
  3. Run agents action show local/my-action --format json
  4. Observe that estimation_actor, invariant_actor, automation_profile are null and invariants is empty, even though they were specified in the YAML

Expected behavior: All fields specified in the YAML config should be persisted to the action.

Actual behavior: estimation_actor, invariant_actor, automation_profile, and invariants are silently dropped — data loss with no warning or error.

Subtasks

  • Add estimation_actor=action.estimation_actor to the service.create_action() call in action.py (lines 242–253)
  • Add invariant_actor=action.invariant_actor to the same call
  • Add automation_profile=action.automation_profile to the same call
  • Add invariants=action.invariants to the same call
  • Write/update Behave unit test scenarios covering agents action create with these fields set in YAML
  • Write/update Robot Framework integration test verifying round-trip persistence of all four fields
  • Verify nox -e typecheck passes (Pyright)
  • Verify nox -e unit_tests passes with coverage ≥ 97%
  • Verify nox -e integration_tests passes

Definition of Done

  • All four missing keyword arguments are forwarded to service.create_action() in action.py
  • Round-trip test: a YAML config with all four fields set produces an action with those fields correctly persisted
  • No silent data loss: fields present in YAML are present in the stored action
  • All nox stages pass
  • Coverage >= 97%

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

## Metadata - **Branch**: `fix/uat-action-create-drops-optional-fields` - **Commit Message**: `fix(cli): pass estimation_actor, invariant_actor, automation_profile, and invariants to service.create_action()` - **Milestone**: (none — backlog) - **Parent Epic**: #3370 > **Backlog note:** This issue was discovered during autonomous operation > on milestone v3.6.0. It does not block milestone completion and has been > placed in the backlog for human review and future milestone assignment. ## Description The `agents action create` CLI command parses the YAML config file using `ActionConfigSchema` (which correctly supports `estimation_actor`, `invariant_actor`, `automation_profile`, and `invariants` fields), converts it to an `Action` domain object, but then calls `service.create_action()` **without passing these four optional fields**. As a result, any values specified in the YAML config for these fields are silently dropped and the created action will have `None`/empty values for them. **Code location**: `/app/src/cleveragents/cli/commands/action.py`, lines 242–253 The current (broken) call to `service.create_action()` is: ```python 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 parameters that should be passed: - `estimation_actor=action.estimation_actor` - `invariant_actor=action.invariant_actor` - `automation_profile=action.automation_profile` - `invariants=action.invariants` The `PlanLifecycleService.create_action()` method (at line 718 in `plan_lifecycle_service.py`) already accepts all four of these parameters — they simply need to be forwarded from the CLI layer. ## Steps to Reproduce 1. Create an action YAML file with `estimation_actor`, `invariant_actor`, `automation_profile`, and/or `invariants` fields set 2. Run `agents action create --config ./my-action.yaml` 3. Run `agents action show local/my-action --format json` 4. Observe that `estimation_actor`, `invariant_actor`, `automation_profile` are `null` and `invariants` is empty, even though they were specified in the YAML **Expected behavior**: All fields specified in the YAML config should be persisted to the action. **Actual behavior**: `estimation_actor`, `invariant_actor`, `automation_profile`, and `invariants` are silently dropped — data loss with no warning or error. ## Subtasks - [ ] Add `estimation_actor=action.estimation_actor` to the `service.create_action()` call in `action.py` (lines 242–253) - [ ] Add `invariant_actor=action.invariant_actor` to the same call - [ ] Add `automation_profile=action.automation_profile` to the same call - [ ] Add `invariants=action.invariants` to the same call - [ ] Write/update Behave unit test scenarios covering `agents action create` with these fields set in YAML - [ ] Write/update Robot Framework integration test verifying round-trip persistence of all four fields - [ ] Verify `nox -e typecheck` passes (Pyright) - [ ] Verify `nox -e unit_tests` passes with coverage ≥ 97% - [ ] Verify `nox -e integration_tests` passes ## Definition of Done - [ ] All four missing keyword arguments are forwarded to `service.create_action()` in `action.py` - [ ] Round-trip test: a YAML config with all four fields set produces an action with those fields correctly persisted - [ ] No silent data loss: fields present in YAML are present in the stored action - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-uat-tester
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Medium — The agents action create command silently drops several spec-required fields. This is a data loss issue but only affects advanced action configuration.
  • Milestone: v3.2.0 — Action creation is part of the Actor YAML & Compiler scope (Epic #392).
  • Story Points: 3 — M — Requires adding missing CLI options and wiring them to the action model.
  • MoSCoW: Should Have — The dropped fields are important for full action configuration but basic action creation works.
  • Parent Epic: #392 (Actor YAML & Compiler)

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

Issue triaged by project owner: - **State**: Verified - **Priority**: Medium — The `agents action create` command silently drops several spec-required fields. This is a data loss issue but only affects advanced action configuration. - **Milestone**: v3.2.0 — Action creation is part of the Actor YAML & Compiler scope (Epic #392). - **Story Points**: 3 — M — Requires adding missing CLI options and wiring them to the action model. - **MoSCoW**: Should Have — The dropped fields are important for full action configuration but basic action creation works. - **Parent Epic**: #392 (Actor YAML & Compiler) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
freemo added this to the v3.2.0 milestone 2026-04-05 19:45:10 +00:00
freemo removed this from the v3.2.0 milestone 2026-04-06 20:51:05 +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#3560
No description provided.