RCA infrastructure for AI-built code. Code knowledge graph + opinionated RCA engine, exposed via MCP (Cursor / Claude Code / Cody / Cline / Continue / Windsurf / Zed) plus CLI and library. RCA is the wedge; the same engine covers code review, refactor blast-radius, and grounding for any agent's structural claims.
code-graph-rca demonstrates solid domain-specific tool design with clear, actionable descriptions and well-structured schemas. All 9 tools have descriptions (avg 156 chars) and input schemas with typed parameters. Naming follows verb_noun convention (definitionOf, callersOf, calleesOf, etc.). However, output schemas are not documented in the visible code, parameter descriptions lack constraint details (ranges, formats), and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write semantics. The RCA-specific tools (cgrca_rca, cgrca_rcaWithReasoning) are sophisticated but lack recovery guidance for edge cases.
Forward call tree from a symbol. Returns nodes (callees) up to depth, deduped by (file, name). Default depth 1.
Reverse call tree from a symbol. Returns nodes (callers) up to depth, deduped by (file, name), with confidence. Default depth 2, min confidence 0.5.
Find every declaration of a symbol by name. Returns file, line range, signature, exported flag, language, subsystem. Optionally filter by language ('typescript' | 'python') or subsystem.
Compute blast radius (impact) of a change. Takes a symbol name, returns all downstream symbols that would be affected by a change to that symbol.
Trigger a full re-index of the repository. Scans all source files, extracts symbols and call edges, rebuilds the knowledge graph. Returns file count, symbol count, edge count, import count, unparsed count.
Run root-cause analysis on a failure. Takes a failure scope (file + line range, or symbol name), returns ranked causal candidates with confidence scores, file/line, and impact (blast radius).
Output schemas not documented. Tools return complex objects (call trees, RCA candidates, impact graphs) but LLMs cannot see field structure, types, or chaining IDs. Forces agents to guess at response shape.
No tool annotations (readOnlyHint/destructiveHint). cgrca_index is clearly destructive (rebuilds graph), but LLMs cannot detect this from schema alone. Agents may retry without understanding side effects.
Parameter constraints lack detail. 'depth' has min/max but no guidance on performance impact. 'minConfidence' (0-1) lacks explanation of what confidence means. 'sinceDays' and 'maxCommits' lack rationale or typical values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Run RCA and return an LLM-ready prompt (system + user) for the host LLM to reason over inline. No API key needed; the host LLM (Claude in Claude Code, etc.) provides the reasoning.
Find symbols near recently-changed files. Queries git log for the last N days, returns symbols in changed files ranked by proximity to the failure. Requires git in PATH.
List all symbols defined in a file. Returns name, line, signature, exported flag, language.
Error handling not visible. No guidance on what happens if symbol not found, git unavailable, or index stale. Agents cannot distinguish retryable vs fatal failures.
cgrca_rcaWithReasoning returns 'LLM-ready prompt' but structure unclear. Does it return {system, user} object? String? How should agent parse and forward to LLM? Ambiguous interface.