UAT: agents actor remove rich output is a one-liner — missing spec-required Actor Removed, Impact, and Cleanup panels #1524

Closed
opened 2026-04-02 20:14:25 +00:00 by freemo · 2 comments
Owner

Metadata

  • Branch: fix/actor-remove-rich-output-panels
  • Commit Message: fix(cli): render Actor Removed, Impact, and Cleanup panels for actor remove command
  • Milestone: v3.5.0
  • Parent Epic: #936

Background and Context

The specification (§agents actor remove) defines a structured rich output for a successful actor remove operation consisting of three panels — Actor Removed, Impact, and Cleanup — followed by a ✓ OK Actor removed success line. This output is critical because the spec classifies actor remove as a Destructive Operation that can affect active plans, sessions, and orphaned contexts.

The current implementation in src/cleveragents/cli/commands/actor.py (remove(), lines ~595–612) bypasses the OutputSession framework entirely and emits only a single green checkmark line: ✓ Removed actor: local/reviewer. All three spec-required panels are absent.

Current Behavior

Running agents actor remove local/reviewer produces:

✓ Removed actor: local/reviewer

Expected Behavior

Per the specification, the command must produce:

╭─ Actor Removed ──────╮
│ Name: local/reviewer │
│ Provider: openai     │
│ Model: gpt-4         │
╰──────────────────────╯

╭─ Impact ───────────────────────────────────╮
│ Sessions: 0 affected                       │
│ Active Plans: 0 affected                   │
│ Actions Referencing: 0                     │
╰────────────────────────────────────────────╯

╭─ Cleanup ──────────────╮
│ Config: kept on disk   │
│ Contexts: 1 orphaned   │
╰────────────────────────╯

✓ OK Actor removed

Steps to Reproduce

  1. Add an actor: agents actor add --config ./actors/reviewer.yaml
  2. Remove it: agents actor remove local/reviewer
  3. Expected: Rich output with Actor Removed, Impact, and Cleanup panels
  4. Actual: Single line ✓ Removed actor: local/reviewer

Acceptance Criteria

  • actor remove renders an Actor Removed panel showing Name, Provider, and Model of the removed actor
  • actor remove renders an Impact panel showing Sessions affected, Active Plans affected, and Actions Referencing counts
  • actor remove renders a Cleanup panel showing Config status and Contexts orphaned count
  • The final success line reads ✓ OK Actor removed (matching spec format)
  • Output is routed through OutputSession (not direct format_output() or bare print/console calls)
  • Non-rich output formats (JSON, plain) still produce correct structured output via the OutputSession envelope

Subtasks

  • Audit remove() in src/cleveragents/cli/commands/actor.py (~lines 595–612) and identify all direct output calls to replace
  • Implement Actor Removed panel: query removed actor's Name, Provider, and Model from the actor record before deletion
  • Implement Impact panel: compute Sessions affected, Active Plans affected, and Actions Referencing counts prior to removal
  • Implement Cleanup panel: report Config disposition (kept/deleted) and count of orphaned Contexts post-removal
  • Emit ✓ OK Actor removed success status line via OutputSession
  • Route all output through OutputSession (wire to OutputSession framework per Epic #936)
  • Tests (Behave): Add/update scenarios for actor remove rich output covering all three panels
  • Tests (Robot): Add integration test asserting panel presence in terminal output
  • Verify coverage >=97% via nox -s coverage_report
  • Run nox (all default sessions), fix any errors

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly (fix(cli): render Actor Removed, Impact, and Cleanup panels for actor remove command), followed by a blank line, then additional lines providing relevant details about the implementation.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly (fix/actor-remove-rich-output-panels).
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass.
  • Coverage >= 97%.

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Metadata - **Branch**: `fix/actor-remove-rich-output-panels` - **Commit Message**: `fix(cli): render Actor Removed, Impact, and Cleanup panels for actor remove command` - **Milestone**: v3.5.0 - **Parent Epic**: #936 ## Background and Context The specification (§`agents actor remove`) defines a structured rich output for a successful `actor remove` operation consisting of three panels — **Actor Removed**, **Impact**, and **Cleanup** — followed by a `✓ OK Actor removed` success line. This output is critical because the spec classifies `actor remove` as a **Destructive Operation** that can affect active plans, sessions, and orphaned contexts. The current implementation in `src/cleveragents/cli/commands/actor.py` (`remove()`, lines ~595–612) bypasses the OutputSession framework entirely and emits only a single green checkmark line: `✓ Removed actor: local/reviewer`. All three spec-required panels are absent. ## Current Behavior Running `agents actor remove local/reviewer` produces: ``` ✓ Removed actor: local/reviewer ``` ## Expected Behavior Per the specification, the command must produce: ``` ╭─ Actor Removed ──────╮ │ Name: local/reviewer │ │ Provider: openai │ │ Model: gpt-4 │ ╰──────────────────────╯ ╭─ Impact ───────────────────────────────────╮ │ Sessions: 0 affected │ │ Active Plans: 0 affected │ │ Actions Referencing: 0 │ ╰────────────────────────────────────────────╯ ╭─ Cleanup ──────────────╮ │ Config: kept on disk │ │ Contexts: 1 orphaned │ ╰────────────────────────╯ ✓ OK Actor removed ``` ## Steps to Reproduce 1. Add an actor: `agents actor add --config ./actors/reviewer.yaml` 2. Remove it: `agents actor remove local/reviewer` 3. **Expected**: Rich output with `Actor Removed`, `Impact`, and `Cleanup` panels 4. **Actual**: Single line `✓ Removed actor: local/reviewer` ## Acceptance Criteria - [ ] `actor remove` renders an `Actor Removed` panel showing Name, Provider, and Model of the removed actor - [ ] `actor remove` renders an `Impact` panel showing Sessions affected, Active Plans affected, and Actions Referencing counts - [ ] `actor remove` renders a `Cleanup` panel showing Config status and Contexts orphaned count - [ ] The final success line reads `✓ OK Actor removed` (matching spec format) - [ ] Output is routed through `OutputSession` (not direct `format_output()` or bare `print`/`console` calls) - [ ] Non-rich output formats (JSON, plain) still produce correct structured output via the OutputSession envelope ## Subtasks - [ ] Audit `remove()` in `src/cleveragents/cli/commands/actor.py` (~lines 595–612) and identify all direct output calls to replace - [ ] Implement `Actor Removed` panel: query removed actor's Name, Provider, and Model from the actor record before deletion - [ ] Implement `Impact` panel: compute Sessions affected, Active Plans affected, and Actions Referencing counts prior to removal - [ ] Implement `Cleanup` panel: report Config disposition (kept/deleted) and count of orphaned Contexts post-removal - [ ] Emit `✓ OK Actor removed` success status line via `OutputSession` - [ ] Route all output through `OutputSession` (wire to OutputSession framework per Epic #936) - [ ] Tests (Behave): Add/update scenarios for `actor remove` rich output covering all three panels - [ ] Tests (Robot): Add integration test asserting panel presence in terminal output - [ ] Verify coverage >=97% via `nox -s coverage_report` - [ ] Run `nox` (all default sessions), fix any errors ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly (`fix(cli): render Actor Removed, Impact, and Cleanup panels for actor remove command`), followed by a blank line, then additional lines providing relevant details about the implementation. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly (`fix/actor-remove-rich-output-panels`). - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass. - Coverage >= 97%. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.5.0 milestone 2026-04-02 20:22:19 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Medium — The actor remove command works but outputs only a single line instead of the spec-required three-panel structure. The Impact panel is particularly important because actor remove is classified as a Destructive Operation — users need to see how many sessions and active plans are affected before removal.
  • Milestone: v3.5.0 (already assigned)
  • MoSCoW: Should Have — The spec defines Actor Removed, Impact, and Cleanup panels for this destructive operation. The Impact panel (showing affected sessions, plans, and actions) is important for user safety. However, the removal itself works correctly, so this is not a functional blocker.
  • Parent Epic: #936

Valid UAT bug. Well-structured with all required sections. The Impact panel is the most important missing element — it helps users understand the consequences of actor removal before it happens.


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

Issue triaged by project owner: - **State**: Verified - **Priority**: Medium — The `actor remove` command works but outputs only a single line instead of the spec-required three-panel structure. The Impact panel is particularly important because `actor remove` is classified as a Destructive Operation — users need to see how many sessions and active plans are affected before removal. - **Milestone**: v3.5.0 (already assigned) - **MoSCoW**: Should Have — The spec defines Actor Removed, Impact, and Cleanup panels for this destructive operation. The Impact panel (showing affected sessions, plans, and actions) is important for user safety. However, the removal itself works correctly, so this is not a functional blocker. - **Parent Epic**: #936 Valid UAT bug. Well-structured with all required sections. The Impact panel is the most important missing element — it helps users understand the consequences of actor removal before it happens. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
freemo self-assigned this 2026-04-02 20:59:00 +00:00
Author
Owner

Closing — work completed in PR #1563 (merged). The PR rendered Actor Removed, Impact, and Cleanup panels for agents actor remove.


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

Closing — work completed in PR #1563 (merged). The PR rendered Actor Removed, Impact, and Cleanup panels for `agents actor remove`. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-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#1524
No description provided.