docs(spec): update plan tree to show full 26-char ULIDs for child plans
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 31s
CI / quality (pull_request) Successful in 53s
CI / security (pull_request) Successful in 1m20s
CI / helm (pull_request) Successful in 22s
CI / push-validation (pull_request) Successful in 25s
CI / build (pull_request) Successful in 41s
CI / typecheck (pull_request) Successful in 3m57s
CI / integration_tests (pull_request) Successful in 6m19s
CI / e2e_tests (pull_request) Successful in 7m38s
CI / unit_tests (pull_request) Successful in 9m24s
CI / docker (pull_request) Successful in 2m21s
CI / coverage (pull_request) Successful in 12m23s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-regression (pull_request) Successful in 57m3s

PR #6571 (merged) updated agents plan tree to display full 26-character
ULIDs for all child plan IDs instead of truncated 8-char prefixes. This
enables copy-paste usability for plan correct and plan tree commands.

Updated the spec to:
- Show full 26-char ULIDs in tree body for subplan_spawn entries
- Show full 26-char ULIDs in Child Plans table
- Show full 26-char ULIDs in JSON/YAML output plan_id fields
- Add a note documenting the full ULID display behavior and per-type
  ordinal labels in the Decision IDs panel

Closes #7898
This commit is contained in:
2026-04-12 07:32:23 +00:00
parent faf1999485
commit cc12e9916c
+26 -22
View File
@@ -14308,6 +14308,10 @@ Render the decision tree for a plan.
- `<PLAN_ID>`: Plan ID (required).
- `--show-superseded`: Include superseded decisions.
!!! note "Full ULID Display"
All decision IDs and child plan IDs are displayed as full 26-character ULIDs (not truncated). This ensures IDs can be copy-pasted directly into `agents plan correct <DECISION_ID>` or `agents plan tree <PLAN_ID>` without modification. The "Decision IDs (for correction)" panel uses per-type ordinal labels (e.g., "Invariant 1", "Invariant 2", "Strategy", "Parallel 1", "Spawn 1") for human-readable identification.
**Examples**
=== "Rich"
@@ -14322,8 +14326,8 @@ Render the decision tree for a plan.
│ ├─ <span style="color: magenta;">[invariant_enforced]</span> <span style="color: #66cc66;">"All API calls over TCP must be mocked"</span> │
│ ├─ <span style="color: #5599ff;">[strategy_choice]</span> <span style="color: #66cc66;">"Prioritize auth and payments"</span> <span style="opacity: 0.7;">(confidence: 0.82)</span> │
│ ├─ <span style="color: #66cc66;">[subplan_parallel_spawn]</span> "Implement auth and payment modules, in parallel" │
│ │ ├─ <span style="color: #66cc66;">[subplan_spawn]</span> "Write auth tests" → Plan: 01HXM9F1A
│ │ └─ <span style="color: #66cc66;">[subplan_spawn]</span> "Write payment tests" → Plan: 01HXM9F2B
│ │ ├─ <span style="color: #66cc66;">[subplan_spawn]</span> "Write auth tests" → Plan: 01HXM9F1A2B3C4D5E6F7G8H9J0
│ │ └─ <span style="color: #66cc66;">[subplan_spawn]</span> "Write payment tests" → Plan: 01HXM9F2B3C4D5E6F7G8H9J0K1
│ └─ <span style="color: #66cc66;">[subplan_parallel_spawn]</span> "Write tests for remaining modules" │
│ └─ ... │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
@@ -14336,12 +14340,12 @@ Render the decision tree for a plan.
│ <span style="color: #5599ff; font-weight: 600;">Superseded:</span> 0 (hidden) │
╰────────────────────────────╯
╭─ Child Plans ──────────────────────────────────────╮
│ <span style="color: cyan; font-weight: 600;">ID</span> <span style="color: cyan; font-weight: 600;">Phase</span> <span style="color: cyan; font-weight: 600;">State</span> │
│ <span style="opacity: 0.7;">────────── ─────── ─────────</span>
│ 01HXM9F1A execute processing
│ 01HXM9F2B execute queued
╰────────────────────────────────────────────────────╯
╭─ Child Plans ──────────────────────────────────────────────────────
│ <span style="color: cyan; font-weight: 600;">ID</span> <span style="color: cyan; font-weight: 600;">Phase</span> <span style="color: cyan; font-weight: 600;">State</span> │
│ <span style="opacity: 0.7;">──────────────────────────── ─────── ─────────</span> │
│ 01HXM9F1A2B3C4D5E6F7G8H9J0 execute processing │
│ 01HXM9F2B3C4D5E6F7G8H9J0K1 execute queued │
╰────────────────────────────────────────────────────────────────────
╭─ Decision IDs (for correction) ──────────────────╮
│ <span style="color: #5599ff; font-weight: 600;">Root:</span> 01HXM9A0B1Q2W3R5G8Z0P4Q1X8 │
@@ -14369,8 +14373,8 @@ Render the decision tree for a plan.
+-- [invariant_enforced] "All API calls over TCP must be mocked"
+-- [strategy_choice] "Prioritize auth and payments" (confidence: 0.82)
+-- [subplan_parallel_spawn] "Implement auth and payment modules, in parallel"
| +-- [subplan_spawn] "Write auth tests" -> Plan: 01HXM9F1A
| +-- [subplan_spawn] "Write payment tests" -> Plan: 01HXM9F2B
| +-- [subplan_spawn] "Write auth tests" -> Plan: 01HXM9F1A2B3C4D5E6F7G8H9J0
| +-- [subplan_spawn] "Write payment tests" -> Plan: 01HXM9F2B3C4D5E6F7G8H9J0K1
+-- [subplan_parallel_spawn] "Write tests for remaining modules"
+-- ...
@@ -14382,10 +14386,10 @@ Render the decision tree for a plan.
Superseded: 0 (hidden)
Child Plans
ID Phase State
---------- ------- ---------
01HXM9F1A execute processing
01HXM9F2B execute queued
ID Phase State
---------------------------- ------- ---------
01HXM9F1A2B3C4D5E6F7G8H9J0 execute processing
01HXM9F2B3C4D5E6F7G8H9J0K1 execute queued
Decision IDs (for correction)
Root: 01HXM9A0B1Q2W3R5G8Z0P4Q1X8
@@ -14420,8 +14424,8 @@ Render the decision tree for a plan.
"type": "subplan_parallel_spawn",
"description": "Implement auth and payment modules, in parallel",
"children": [
{ "type": "subplan_spawn", "description": "Write auth tests", "plan_id": "01HXM9F1A" },
{ "type": "subplan_spawn", "description": "Write payment tests", "plan_id": "01HXM9F2B" }
{ "type": "subplan_spawn", "description": "Write auth tests", "plan_id": "01HXM9F1A2B3C4D5E6F7G8H9J0" },
{ "type": "subplan_spawn", "description": "Write payment tests", "plan_id": "01HXM9F2B3C4D5E6F7G8H9J0K1" }
]
},
{
@@ -14439,8 +14443,8 @@ Render the decision tree for a plan.
"superseded": 0
},
"child_plans": [
{ "id": "01HXM9F1A", "phase": "execute", "state": "processing" },
{ "id": "01HXM9F2B", "phase": "execute", "state": "queued" }
{ "id": "01HXM9F1A2B3C4D5E6F7G8H9J0", "phase": "execute", "state": "processing" },
{ "id": "01HXM9F2B3C4D5E6F7G8H9J0K1", "phase": "execute", "state": "queued" }
],
"decision_ids": {
"root": "01HXM9A0B1Q2W3R5G8Z0P4Q1X8",
@@ -14485,10 +14489,10 @@ Render the decision tree for a plan.
children:
- type: subplan_spawn
description: "Write auth tests"
plan_id: "01HXM9F1A"
plan_id: "01HXM9F1A2B3C4D5E6F7G8H9J0"
- type: subplan_spawn
description: "Write payment tests"
plan_id: "01HXM9F2B"
plan_id: "01HXM9F2B3C4D5E6F7G8H9J0K1"
- type: subplan_parallel_spawn
description: "Write tests for remaining modules"
children:
@@ -14500,10 +14504,10 @@ Render the decision tree for a plan.
invariants: 2
superseded: 0
child_plans:
- id: "01HXM9F1A"
- id: "01HXM9F1A2B3C4D5E6F7G8H9J0"
phase: execute
state: processing
- id: "01HXM9F2B"
- id: "01HXM9F2B3C4D5E6F7G8H9J0K1"
phase: execute
state: queued
decision_ids: