UAT: TuiMaterializer not implemented — A2A output rendering integration missing per ADR-044 #5938

Open
opened 2026-04-09 11:59:53 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: TUI Main Screen — TuiMaterializer
Severity: Critical — blocks v3.7.0 milestone acceptance
Spec Reference: ADR-044 §TuiMaterializer — Output Rendering Framework Integration
Found by: UAT Testing Pool (uat-pool-1), worker: tui-main-screen


What Was Tested

Code-level analysis of src/cleveragents/tui/ and src/cleveragents/cli/output/ for TuiMaterializer implementation.

Expected Behavior (from spec/ADR-044)

ADR-044 §TuiMaterializer defines a TuiMaterializer class implementing MaterializationStrategy that maps ElementHandle events to Textual widget operations:

ElementHandle Type Textual Widget Mapping
PanelHandle Static container with key-value Label pairs inside a Collapsible
TableHandle DataTable widget
TreeHandle Tree widget
ProgressHandle ProgressBar (determinate) or custom Throbber (indeterminate)
StatusHandle Label with semantic CSS class
CodeHandle Read-only TextArea with syntax highlighting
DiffHandle Custom DiffView widget
SeparatorHandle Rule widget
ActionHintHandle Static with muted text

The TuiMaterializer must observe ElementEvent notifications:

  • ElementCreated → instantiate Textual widget and mount in conversation
  • ElementUpdated → call update method on mounted widget
  • ElementClosed → mark widget as finalized
  • SessionEnd → flush pending updates

This is the architectural promise of ADR-021 (Output Rendering Framework): "all existing CLI command producers render in the TUI without modification."

Actual Behavior

TuiMaterializer does not exist anywhere in the codebase. A comprehensive search of all Python files finds:

  • No TuiMaterializer class
  • No tui_materializer.py file
  • No file in src/cleveragents/tui/ that imports from cleveragents.cli.output.materializers
  • No MaterializationStrategy subclass in the TUI package

The src/cleveragents/cli/output/ directory has materializers for CLI rendering (Rich, Plain, etc.) but no TUI materializer.

The conversation in app.py is a plain _Static widget that receives raw text strings — it has no connection to the OutputSession / ElementHandle pipeline.

Steps to Reproduce

grep -r "TuiMaterializer\|tui_materializer\|MaterializationStrategy" src/cleveragents/tui/ --include="*.py"
# No matches

grep -r "TuiMaterializer" src/ --include="*.py"
# No matches

Impact

Without TuiMaterializer, the TUI cannot render output from any CLI command. Every plan command, actor response, tool call, and progress update that works in the CLI will be invisible in the TUI. This is a complete integration gap that makes the TUI non-functional for its primary purpose.

The v3.7.0 milestone explicitly lists "TuiMaterializer A2A integration layer" as a scope item.

Code Location

  • src/cleveragents/tui/ — no materializer module
  • src/cleveragents/cli/output/materializers.py — has MaterializationStrategy base but no TUI subclass

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

## Bug Report **Feature Area:** TUI Main Screen — TuiMaterializer **Severity:** Critical — blocks v3.7.0 milestone acceptance **Spec Reference:** ADR-044 §TuiMaterializer — Output Rendering Framework Integration **Found by:** UAT Testing Pool (uat-pool-1), worker: tui-main-screen --- ## What Was Tested Code-level analysis of `src/cleveragents/tui/` and `src/cleveragents/cli/output/` for `TuiMaterializer` implementation. ## Expected Behavior (from spec/ADR-044) ADR-044 §TuiMaterializer defines a `TuiMaterializer` class implementing `MaterializationStrategy` that maps `ElementHandle` events to Textual widget operations: | ElementHandle Type | Textual Widget Mapping | |--------------------|------------------------| | `PanelHandle` | `Static` container with key-value `Label` pairs inside a `Collapsible` | | `TableHandle` | `DataTable` widget | | `TreeHandle` | `Tree` widget | | `ProgressHandle` | `ProgressBar` (determinate) or custom `Throbber` (indeterminate) | | `StatusHandle` | `Label` with semantic CSS class | | `CodeHandle` | Read-only `TextArea` with syntax highlighting | | `DiffHandle` | Custom `DiffView` widget | | `SeparatorHandle` | `Rule` widget | | `ActionHintHandle` | `Static` with muted text | The `TuiMaterializer` must observe `ElementEvent` notifications: - `ElementCreated` → instantiate Textual widget and mount in conversation - `ElementUpdated` → call update method on mounted widget - `ElementClosed` → mark widget as finalized - `SessionEnd` → flush pending updates This is the architectural promise of ADR-021 (Output Rendering Framework): "all existing CLI command producers render in the TUI without modification." ## Actual Behavior **`TuiMaterializer` does not exist anywhere in the codebase.** A comprehensive search of all Python files finds: - No `TuiMaterializer` class - No `tui_materializer.py` file - No file in `src/cleveragents/tui/` that imports from `cleveragents.cli.output.materializers` - No `MaterializationStrategy` subclass in the TUI package The `src/cleveragents/cli/output/` directory has materializers for CLI rendering (Rich, Plain, etc.) but no TUI materializer. The conversation in `app.py` is a plain `_Static` widget that receives raw text strings — it has no connection to the `OutputSession` / `ElementHandle` pipeline. ## Steps to Reproduce ```bash grep -r "TuiMaterializer\|tui_materializer\|MaterializationStrategy" src/cleveragents/tui/ --include="*.py" # No matches grep -r "TuiMaterializer" src/ --include="*.py" # No matches ``` ## Impact Without `TuiMaterializer`, the TUI cannot render output from any CLI command. Every plan command, actor response, tool call, and progress update that works in the CLI will be invisible in the TUI. This is a complete integration gap that makes the TUI non-functional for its primary purpose. The v3.7.0 milestone explicitly lists "TuiMaterializer A2A integration layer" as a scope item. ## Code Location - `src/cleveragents/tui/` — no materializer module - `src/cleveragents/cli/output/materializers.py` — has `MaterializationStrategy` base but no TUI subclass --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-09 12:02:48 +00:00
Author
Owner

Hierarchical Compliance Fix: This issue was detected as an orphan (no parent Epic).

Solution: Linked to Epic #5306 (TUI A2A Integration Layer — TuiMaterializer & Session Binding) as TuiMaterializer is the core scope of this epic.

Hierarchy: Issue #5938 → Epic #5306 → Legendary #4946


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

**Hierarchical Compliance Fix**: This issue was detected as an orphan (no parent Epic). **Solution**: Linked to Epic #5306 (TUI A2A Integration Layer — TuiMaterializer & Session Binding) as TuiMaterializer is the core scope of this epic. **Hierarchy**: Issue #5938 → Epic #5306 → Legendary #4946 --- **Automated by CleverAgents Bot** Supervisor: Epic Planning | Agent: epic-planner
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#5938
No description provided.