UAT: plan correct --mode=append does not actually spawn a child plan — only generates a stub ULID #5317

Open
opened 2026-04-09 05:49:43 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: plan-correction-modes
Severity: Medium
Priority: Backlog
Found by: UAT Testing (uat-pool-1, worker: plan-correction-modes)


What was tested

The agents plan correct --mode=append command's behavior of creating a new child plan to add guidance without recomputing.

Expected behavior (from spec §CLI Commands for Correction)

agents plan correct <decision_id> --mode=append --guidance "<description of the fix>"
Creates a new child plan to fix the outcome without rewriting history

The spec's rich output shows:

╭─ Append Detail ─────────────────────────────────────────────────╮
│ Original decision preserved: yes                                │
│ Existing artifacts kept: yes                                    │
│ Additional work: appended as new child plan                     │
│ The original 5 artifacts remain; a new child plan will add      │
│ rate-limiting code on top of the existing auth changes.         │
╰─────────────────────────────────────────────────────────────────╯

╭─ Queued ──────────╮
│ New child: 1      │
│ ETA: 2m           │
╰───────────────────╯

This indicates a real child plan should be created and queued for execution.

Actual behavior (from code analysis)

In src/cleveragents/application/services/correction_service.py, execute_append() (lines 563–640):

child_plan_id = str(ULID())
new_decision_id = str(ULID())

result = CorrectionResult(
    correction_id=correction_id,
    status=CorrectionStatus.APPLIED,
    new_decisions=[new_decision_id],
    spawned_child_plan_id=child_plan_id,
)

The method generates a random ULID for child_plan_id but does not actually create a child plan in the PlanLifecycleService. The spawned_child_plan_id in the result is a synthetic ULID that does not correspond to any real plan in the database.

After plan correct --mode=append completes:

  • No child plan exists in the system
  • agents plan list will not show any new plan
  • The guidance is not actually queued for execution

Code location

  • src/cleveragents/application/services/correction_service.py, lines 598–613 (execute_append())

Steps to reproduce

  1. Create and execute a plan
  2. Run agents plan correct <DECISION_ID> --mode append --guidance "Add rate limiting" --yes
  3. Run agents plan list to check for new child plans

Expected: A new child plan appears in the list, ready for execution
Actual: No new plan created; spawned_child_plan_id in result is a phantom ULID

Impact

The --mode=append correction mode does not deliver its core promise of creating a new child plan. Users who use append mode to add guidance without recomputing will find that no actual work is queued. The feature is effectively a no-op from the plan lifecycle perspective.

Note

This may be an intentional stub pending full child plan spawning integration, but it should be tracked as a gap against the v3.2.0 acceptance criteria.


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

## Bug Report **Feature Area:** plan-correction-modes **Severity:** Medium **Priority:** Backlog **Found by:** UAT Testing (uat-pool-1, worker: plan-correction-modes) --- ### What was tested The `agents plan correct --mode=append` command's behavior of creating a new child plan to add guidance without recomputing. ### Expected behavior (from spec §CLI Commands for Correction) > `agents plan correct <decision_id> --mode=append --guidance "<description of the fix>"` > Creates a new child plan to fix the outcome without rewriting history The spec's rich output shows: ``` ╭─ Append Detail ─────────────────────────────────────────────────╮ │ Original decision preserved: yes │ │ Existing artifacts kept: yes │ │ Additional work: appended as new child plan │ │ The original 5 artifacts remain; a new child plan will add │ │ rate-limiting code on top of the existing auth changes. │ ╰─────────────────────────────────────────────────────────────────╯ ╭─ Queued ──────────╮ │ New child: 1 │ │ ETA: 2m │ ╰───────────────────╯ ``` This indicates a real child plan should be created and queued for execution. ### Actual behavior (from code analysis) In `src/cleveragents/application/services/correction_service.py`, `execute_append()` (lines 563–640): ```python child_plan_id = str(ULID()) new_decision_id = str(ULID()) result = CorrectionResult( correction_id=correction_id, status=CorrectionStatus.APPLIED, new_decisions=[new_decision_id], spawned_child_plan_id=child_plan_id, ) ``` The method generates a random ULID for `child_plan_id` but **does not actually create a child plan** in the `PlanLifecycleService`. The `spawned_child_plan_id` in the result is a synthetic ULID that does not correspond to any real plan in the database. After `plan correct --mode=append` completes: - No child plan exists in the system - `agents plan list` will not show any new plan - The guidance is not actually queued for execution ### Code location - `src/cleveragents/application/services/correction_service.py`, lines 598–613 (`execute_append()`) ### Steps to reproduce 1. Create and execute a plan 2. Run `agents plan correct <DECISION_ID> --mode append --guidance "Add rate limiting" --yes` 3. Run `agents plan list` to check for new child plans Expected: A new child plan appears in the list, ready for execution Actual: No new plan created; `spawned_child_plan_id` in result is a phantom ULID ### Impact The `--mode=append` correction mode does not deliver its core promise of creating a new child plan. Users who use append mode to add guidance without recomputing will find that no actual work is queued. The feature is effectively a no-op from the plan lifecycle perspective. ### Note This may be an intentional stub pending full child plan spawning integration, but it should be tracked as a gap against the v3.2.0 acceptance criteria. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.3.0 milestone 2026-04-09 05:52:52 +00:00
Author
Owner

Label compliance fix applied:

  • Assigned milestone: v3.3.0 (Correction Engine milestone)
  • Reason: Bug issue related to plan correct functionality was missing a milestone. Assigned to v3.3.0 based on correction engine scope.

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

Label compliance fix applied: - Assigned milestone: `v3.3.0` (Correction Engine milestone) - Reason: Bug issue related to `plan correct` functionality was missing a milestone. Assigned to v3.3.0 based on correction engine scope. --- **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#5317
No description provided.