A Rust-based agent engine with event-sourced session log, branching, turn loop, tool dispatch, and Lua plugin support. Includes TUI, HTTP server, and CLI modes.
rness exposes 13 tools with critical definition gaps. Most tools lack visible input schemas in the source code provided, only 6 of 13 have documented input parameters (ToolSearch, run_code, Bash, job_output, job_kill, subagent). Descriptions are present but generic (10 - 80 chars, well below the 50 - 200 char baseline for LLM-optimized docs). No output schemas documented. Tools like Read, Edit, Write, Grep, Glob, job_list, read_image have no visible parameter definitions. Error handling and recovery guidance are absent. Tool names are inconsistent: some are verbs (run_code, Edit, Write, Bash), others are nouns (ToolSearch, Grep, Glob, job_output, job_list, job_kill, subagent, read_image). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (IRREVERSIBLE, WRITE, DESTRUCTIVE). Composition is weak, no evidence of chaining IDs or downstream parameter alignment.
Execute bash commands in the workspace with streaming output
Edit file contents with diff-based changes
Find files matching glob patterns
Search for patterns in files using regex
Read file contents from the workspace
Search and filter available tools by query, with ranking of partial matches and scope restrictions
Write new file contents to the workspace
Kill a background job
7 of 13 tools have no visible input schema in source code (Read, Edit, Write, Grep, Glob, job_list, read_image).
Descriptions are generic and under 50 chars for 10 tools (Read, Edit, Write, Grep, Glob, job_output, job_list, job_kill, read_image). LLM cannot determine when to select these tools. Baseline is 50 - 200 chars.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Baseline: 100% of A+ tools document return types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | <=2025-11-25 | v2 |
List all background jobs
Get output from a background job
Read and process image files from the workspace
Execute Lua code with access to tools.call(), tools.parallel(), and other runtime functions
Spawn or fork a subagent to delegate work
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels declared (IRREVERSIBLE, WRITE, DESTRUCTIVE). Agents cannot infer safety without annotations.
Inconsistent naming: mix of verbs (run_code, Edit, Write, Bash) and nouns (ToolSearch, Grep, Glob, job_output, job_list, job_kill, subagent, read_image). LLMs struggle to parse intent from inconsistent conventions.