UAT: plan tree does not show child plan IDs for subplan_spawn decisions — v3.3.0 Deliverable #1 unmet #5350

Open
opened 2026-04-09 05:57:55 +00:00 by HAL9000 · 3 comments
Owner

Bug Report

Feature Area: subplans-checkpoints
Severity: Critical — blocks v3.3.0 milestone acceptance
Spec Reference: v3.3.0 Deliverable #1 — "Plans spawn child subplans during Execute via subplan_spawn decision type"


What Was Tested

The agents plan tree <plan_id> command output when a plan has subplan_spawn or subplan_parallel_spawn decisions.

Expected Behavior (from spec)

Per the v3.3.0 specification (Deliverable #1):

Verifiable Check: plan tree shows subplan_spawn decisions with child plan IDs

The spec example output shows:

╭─ Decision Tree ──────────────────────────────────────────────────────────────────────────╮
│ Plan: 01HXM8C2ZK4Q7C2B3F2R4VYV6J                                                         │
│ ├─ [subplan_parallel_spawn] "Implement auth and payment modules, in parallel"            │
│ │  ├─ [subplan_spawn] "Write auth tests" → Plan: 01HXM9F1A                               │
│ │  └─ [subplan_spawn] "Write payment tests" → Plan: 01HXM9F2B                            │
╰──────────────────────────────────────────────────────────────────────────────────────────╯

Note the → Plan: <child_plan_id> annotation on each subplan_spawn decision.

Actual Behavior

The build_decision_tree() function and tree_decisions_cmd() in src/cleveragents/cli/commands/plan.py do NOT include downstream_plan_ids in the tree output.

The _node_dict() function (line 3957) only includes:

{
    "decision_id": d.decision_id,
    "type": str(d.decision_type),
    "sequence": d.sequence_number,
    "question": d.question,
    "chosen": d.chosen_option,
    "confidence": d.confidence_score,
    "superseded": d.is_superseded,
    "children": [],
}

The Decision domain model has downstream_plan_ids: list[str] (line 354 in decision.py) which stores the child plan ULIDs spawned from a decision, but this field is never rendered in the tree output.

Code Location

  • src/cleveragents/cli/commands/plan.py, function build_decision_tree() (line 3918)
  • src/cleveragents/cli/commands/plan.py, function _node_dict() (line 3957)
  • src/cleveragents/cli/commands/plan.py, function tree_decisions_cmd() (line 3994)
  • src/cleveragents/domain/models/core/decision.py, field downstream_plan_ids (line 354)

Steps to Reproduce

  1. Create a plan with subplan_spawn decisions that have downstream_plan_ids populated
  2. Run agents plan tree <plan_id>
  3. Observe: subplan_spawn decisions show no child plan IDs

Impact

This is a critical gap in v3.3.0 Deliverable #1. The verifiable check is "plan tree shows subplan_spawn decisions with child plan IDs" — which currently fails because downstream_plan_ids is never rendered.

Fix Required

  1. Add downstream_plan_ids to _node_dict() in build_decision_tree():

    "downstream_plan_ids": list(d.downstream_plan_ids),
    
  2. In the rich tree rendering (lines 4096-4119), annotate subplan_spawn and subplan_parallel_spawn decisions with their child plan IDs:

    (subplan_spawn) Q: Write auth tests → Plan: 01HXM9F1A
    
  3. In the table rendering, add a "Child Plans" column showing downstream_plan_ids for spawn-type decisions.


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

## Bug Report **Feature Area**: subplans-checkpoints **Severity**: Critical — blocks v3.3.0 milestone acceptance **Spec Reference**: v3.3.0 Deliverable #1 — "Plans spawn child subplans during Execute via `subplan_spawn` decision type" --- ## What Was Tested The `agents plan tree <plan_id>` command output when a plan has `subplan_spawn` or `subplan_parallel_spawn` decisions. ## Expected Behavior (from spec) Per the v3.3.0 specification (Deliverable #1): > **Verifiable Check**: `plan tree` shows `subplan_spawn` decisions with child plan IDs The spec example output shows: ``` ╭─ Decision Tree ──────────────────────────────────────────────────────────────────────────╮ │ Plan: 01HXM8C2ZK4Q7C2B3F2R4VYV6J │ │ ├─ [subplan_parallel_spawn] "Implement auth and payment modules, in parallel" │ │ │ ├─ [subplan_spawn] "Write auth tests" → Plan: 01HXM9F1A │ │ │ └─ [subplan_spawn] "Write payment tests" → Plan: 01HXM9F2B │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ ``` Note the `→ Plan: <child_plan_id>` annotation on each `subplan_spawn` decision. ## Actual Behavior The `build_decision_tree()` function and `tree_decisions_cmd()` in `src/cleveragents/cli/commands/plan.py` do NOT include `downstream_plan_ids` in the tree output. The `_node_dict()` function (line 3957) only includes: ```python { "decision_id": d.decision_id, "type": str(d.decision_type), "sequence": d.sequence_number, "question": d.question, "chosen": d.chosen_option, "confidence": d.confidence_score, "superseded": d.is_superseded, "children": [], } ``` The `Decision` domain model has `downstream_plan_ids: list[str]` (line 354 in `decision.py`) which stores the child plan ULIDs spawned from a decision, but this field is never rendered in the tree output. ## Code Location - `src/cleveragents/cli/commands/plan.py`, function `build_decision_tree()` (line 3918) - `src/cleveragents/cli/commands/plan.py`, function `_node_dict()` (line 3957) - `src/cleveragents/cli/commands/plan.py`, function `tree_decisions_cmd()` (line 3994) - `src/cleveragents/domain/models/core/decision.py`, field `downstream_plan_ids` (line 354) ## Steps to Reproduce 1. Create a plan with `subplan_spawn` decisions that have `downstream_plan_ids` populated 2. Run `agents plan tree <plan_id>` 3. Observe: `subplan_spawn` decisions show no child plan IDs ## Impact This is a critical gap in v3.3.0 Deliverable #1. The verifiable check is "`plan tree` shows `subplan_spawn` decisions with child plan IDs" — which currently fails because `downstream_plan_ids` is never rendered. ## Fix Required 1. Add `downstream_plan_ids` to `_node_dict()` in `build_decision_tree()`: ```python "downstream_plan_ids": list(d.downstream_plan_ids), ``` 2. In the rich tree rendering (lines 4096-4119), annotate `subplan_spawn` and `subplan_parallel_spawn` decisions with their child plan IDs: ``` (subplan_spawn) Q: Write auth tests → Plan: 01HXM9F1A ``` 3. In the table rendering, add a "Child Plans" column showing `downstream_plan_ids` for spawn-type decisions. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.3.0 milestone 2026-04-09 05:58:03 +00:00
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
Author
Owner

Hierarchical Compliance Fix: Linked to Epic #4972 (Subplan Spawning & Parallel Execution — Three-Way Merge) — this issue is part of the subplan execution system.


Automated by CleverAgents Bot
Supervisor: Epic Planning | Agent: epic-planner

**Hierarchical Compliance Fix**: Linked to Epic #4972 (Subplan Spawning & Parallel Execution — Three-Way Merge) — this issue is part of the subplan execution system. --- **Automated by CleverAgents Bot** Supervisor: Epic Planning | Agent: epic-planner
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Critical — v3.3.0 Deliverable #1 verifiable check: "plan tree shows subplan_spawn decisions with child plan IDs" — currently fails because downstream_plan_ids is never rendered in the tree output
  • Milestone: v3.3.0 — direct acceptance criterion blocker
  • Story Points: 2 — S — requires adding downstream_plan_ids to _node_dict() and rendering it in the tree/table output
  • MoSCoW: Must Have — v3.3.0 cannot be accepted without this. The plan tree command is the primary way to verify subplan spawning works.
  • Parent Epic: Needs linking to the subplans/checkpoints epic

Triage Rationale: The domain model already has downstream_plan_ids correctly populated — this is purely a display gap in the CLI rendering layer. The fix is well-scoped and low-risk.


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

Issue triaged by project owner: - **State**: Verified - **Priority**: Critical — v3.3.0 Deliverable #1 verifiable check: "`plan tree` shows `subplan_spawn` decisions with child plan IDs" — currently fails because `downstream_plan_ids` is never rendered in the tree output - **Milestone**: v3.3.0 — direct acceptance criterion blocker - **Story Points**: 2 — S — requires adding `downstream_plan_ids` to `_node_dict()` and rendering it in the tree/table output - **MoSCoW**: Must Have — v3.3.0 cannot be accepted without this. The `plan tree` command is the primary way to verify subplan spawning works. - **Parent Epic**: Needs linking to the subplans/checkpoints epic **Triage Rationale**: The domain model already has `downstream_plan_ids` correctly populated — this is purely a display gap in the CLI rendering layer. The fix is well-scoped and low-risk. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
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#5350
No description provided.