UAT: GRAPH actor tool nodes are stub-only — _execute_tool() does not invoke real tools #5462

Open
opened 2026-04-09 06:55:29 +00:00 by HAL9000 · 2 comments
Owner

Bug Report

Feature Area

Actor System Compilation — GRAPH-type actor tool node execution

What Was Tested

Code-level analysis of src/cleveragents/langgraph/nodes.py against the specification's tool node behavior for GRAPH actors.

Expected Behavior (from spec)

Per docs/specification.md lines 20554-20558, tool nodes in GRAPH actors should execute specific tools:

| `tool` | `tool_name`, `parameters` | Deterministic tool execution |

Tool nodes are described as "deterministic, non-LLM steps in a workflow — e.g., spawning a child plan, running validation, or executing a migration." The tool node should invoke the named tool from the Tool Registry with the specified parameters.

Actual Behavior (from code)

src/cleveragents/langgraph/nodes.py lines 289-290 show that _execute_tool() is a stub that returns a hardcoded dict without invoking any tool:

async def _execute_tool(self) -> dict[str, Any]:
    return {"tool_executed": True, "node": self.name}

The method:

  • Does not read self.config.tools (the list of tool names)
  • Does not look up any tool in the Tool Registry
  • Does not invoke any tool function
  • Does not pass any parameters to any tool
  • Always returns {"tool_executed": True} regardless of what tool is configured

Impact

  • GRAPH actors with tool nodes are completely non-functional — they silently return a fake success response instead of executing the configured tool.
  • The NodeConfig.tools field (list of tool names) is populated by the compiler but never used during execution.
  • Workflows that depend on tool nodes (e.g., running migrations, spawning subplans, executing validations) will silently produce incorrect results.
  • This affects the entire GRAPH actor compilation feature which is a core v3.x deliverable.

Code Location

  • src/cleveragents/langgraph/nodes.py line 289-290 (_execute_tool() stub)
  • src/cleveragents/langgraph/nodes.py line 117-118 (dispatch to _execute_tool())
  • src/cleveragents/actor/compiler.py line 139 (populates tools list in NodeConfig)

Fix Required

Implement _execute_tool() to:

  1. Read self.config.tools to get the list of tool names
  2. Look up each tool in the Tool Registry
  3. Invoke the tool with parameters from self.config.metadata
  4. Return the tool's actual output

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

## Bug Report ### Feature Area Actor System Compilation — GRAPH-type actor tool node execution ### What Was Tested Code-level analysis of `src/cleveragents/langgraph/nodes.py` against the specification's tool node behavior for GRAPH actors. ### Expected Behavior (from spec) Per `docs/specification.md` lines 20554-20558, tool nodes in GRAPH actors should execute specific tools: ``` | `tool` | `tool_name`, `parameters` | Deterministic tool execution | ``` Tool nodes are described as "deterministic, non-LLM steps in a workflow — e.g., spawning a child plan, running validation, or executing a migration." The tool node should invoke the named tool from the Tool Registry with the specified parameters. ### Actual Behavior (from code) `src/cleveragents/langgraph/nodes.py` lines 289-290 show that `_execute_tool()` is a stub that returns a hardcoded dict without invoking any tool: ```python async def _execute_tool(self) -> dict[str, Any]: return {"tool_executed": True, "node": self.name} ``` The method: - Does not read `self.config.tools` (the list of tool names) - Does not look up any tool in the Tool Registry - Does not invoke any tool function - Does not pass any parameters to any tool - Always returns `{"tool_executed": True}` regardless of what tool is configured ### Impact - **GRAPH actors with tool nodes are completely non-functional** — they silently return a fake success response instead of executing the configured tool. - The `NodeConfig.tools` field (list of tool names) is populated by the compiler but never used during execution. - Workflows that depend on tool nodes (e.g., running migrations, spawning subplans, executing validations) will silently produce incorrect results. - This affects the entire GRAPH actor compilation feature which is a core v3.x deliverable. ### Code Location - `src/cleveragents/langgraph/nodes.py` line 289-290 (`_execute_tool()` stub) - `src/cleveragents/langgraph/nodes.py` line 117-118 (dispatch to `_execute_tool()`) - `src/cleveragents/actor/compiler.py` line 139 (populates `tools` list in NodeConfig) ### Fix Required Implement `_execute_tool()` to: 1. Read `self.config.tools` to get the list of tool names 2. Look up each tool in the Tool Registry 3. Invoke the tool with parameters from `self.config.metadata` 4. Return the tool's actual output --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-09 06:59:58 +00:00
Author
Owner

Label compliance fix applied:

  • Added missing labels and/or milestone to bring issue into compliance with CONTRIBUTING.md

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

Label compliance fix applied: - Added missing labels and/or milestone to bring issue into compliance with CONTRIBUTING.md --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Critical — GRAPH actor tool nodes are stub-only. _execute_tool() doesn't invoke real tools. This means GRAPH actors cannot actually execute any tools — a core feature of the actor system is completely non-functional.
  • Milestone: v3.5.0 — GRAPH actor execution is part of the autonomy hardening milestone
  • Story Points: 8 — XL — implementing real tool invocation in GRAPH actor nodes requires connecting to the tool execution pipeline
  • MoSCoW: Must Have — GRAPH actors are a core actor type. Without tool execution, they cannot perform any work.
  • Parent Epic: Needs linking to the actor execution epic

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

Issue triaged by project owner: - **State**: Verified - **Priority**: Critical — GRAPH actor tool nodes are stub-only. `_execute_tool()` doesn't invoke real tools. This means GRAPH actors cannot actually execute any tools — a core feature of the actor system is completely non-functional. - **Milestone**: v3.5.0 — GRAPH actor execution is part of the autonomy hardening milestone - **Story Points**: 8 — XL — implementing real tool invocation in GRAPH actor nodes requires connecting to the tool execution pipeline - **MoSCoW**: Must Have — GRAPH actors are a core actor type. Without tool execution, they cannot perform any work. - **Parent Epic**: Needs linking to the actor execution epic --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
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#5462
No description provided.