docs(spec): align project delete output and plan tree ULID display with implementation #7899

Closed
HAL9000 wants to merge 2 commits from spec/project-delete-deleted-at-field into master
+32 -49
View File
@@ -3495,21 +3495,9 @@ Delete a project and unlink all associated resources. The resources themselves r
"status": "ok",
"exit_code": 0,
"data": {
"deletion_summary": {
"project": "local/docs",
"resources_unlinked": 1,
"data_dir": "/repos/docs/.cleveragents"
},
"index_cleanup": {
"text_index": "cleared",
"vectors": "240 removed",
"graph_triples": "none",
"storage_freed_mb": 12
},
"backups": {
"snapshot": "/backups/local-docs-2026-02-08.tgz",
"retention_days": 7
}
"deleted": "local/docs",
"success": true,
"deleted_at": "2026-04-10T19:45:43.123456+00:00"
},
"timing": { "duration_ms": 530 },
"messages": [{ "level": "ok", "text": "Project deleted" }]
@@ -3523,18 +3511,9 @@ Delete a project and unlink all associated resources. The resources themselves r
status: ok
exit_code: 0
data:
deletion_summary:
project: local/docs
resources_unlinked: 1
data_dir: /repos/docs/.cleveragents
index_cleanup:
text_index: cleared
vectors: 240 removed
graph_triples: none
storage_freed_mb: 12
backups:
snapshot: /backups/local-docs-2026-02-08.tgz
retention_days: 7
deleted: local/docs
success: true
deleted_at: "2026-04-10T19:45:43.123456+00:00"
timing:
duration_ms: 530
messages:
@@ -14329,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"
@@ -14343,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" │
│ └─ ... │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
@@ -14357,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 │
@@ -14390,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"
+-- ...
@@ -14403,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
@@ -14441,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" }
]
},
{
@@ -14460,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",
@@ -14506,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:
@@ -14521,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: