refactor(cli): rename plan lifecycle-list and lifecycle-apply to match specification
CI / build (push) Successful in 18s
CI / lint (push) Failing after 31s
CI / helm (push) Successful in 33s
CI / typecheck (push) Successful in 50s
CI / security (push) Failing after 51s
CI / coverage (push) Has been skipped
CI / benchmark-regression (push) Has been skipped
CI / unit_tests (push) Failing after 1m50s
CI / docker (push) Has been skipped
CI / quality (push) Successful in 3m43s
CI / integration_tests (push) Has been cancelled
CI / e2e_tests (push) Has been cancelled
CI / benchmark-publish (push) Has been cancelled
CI / status-check (push) Has been cancelled

Renames `plan lifecycle-list` to `plan list` and `plan lifecycle-apply` to `plan apply` to align with the specification's canonical command names. Removes legacy V2 plan commands that occupied those names.

- Renamed CLI command registrations from lifecycle-list/lifecycle-apply to list/apply
- Removed legacy V2 apply and list commands (~200 lines)
- Updated apply shortcut in main.py to delegate to v3 lifecycle
- Added defensive null check for plan existence in apply command
- Updated 63+ test, doc, and benchmark files for consistency

Closes #881

Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
This commit was merged in pull request #1188.
This commit is contained in:
2026-04-02 19:09:04 +00:00
committed by Forgejo
parent 908d5854a3
commit 48cff5cfe0
71 changed files with 562 additions and 943 deletions
+4 -4
View File
@@ -298,9 +298,9 @@ def plan_full_lifecycle() -> None:
"""Run the plan lifecycle via real CLI subprocesses.
Invokes action create -> plan use -> plan show -> plan execute ->
plan diff -> plan lifecycle-apply using the real ``agents`` CLI
plan diff -> plan apply using the real ``agents`` CLI
binary. Without an AI backend the plan stays in ``strategize /
queued``, so ``execute``, ``diff``, and ``lifecycle-apply``
queued``, so ``execute``, ``diff``, and ``apply``
return graceful "not ready" messages rather than crashing. The
test verifies the full CLI wiring (DI, persistence, env vars)
end-to-end. ChangeSet verification uses the domain-level tests
@@ -390,8 +390,8 @@ def plan_full_lifecycle() -> None:
if "INTERNAL" in combined5 and not is_expected_provider_unavailable(combined5):
_fail(f"plan diff crashed:\n{combined5}")
# Step 6: Plan lifecycle-apply — similar: plan not ready
r6 = run_cli("plan", "lifecycle-apply", "--yes", plan_id, workspace=workspace)
# Step 6: Plan apply — similar: plan not ready
r6 = run_cli("plan", "apply", "--yes", plan_id, workspace=workspace)
combined6 = r6.stdout + r6.stderr
if "Traceback" in combined6:
_fail(f"plan apply crashed:\n{combined6}")