You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ship the analysis suite: impact, cycles, hierarchy, dead code, hotspots, and coupling (#32)
Six analysis features arrive behind a new analyze MCP tool, /api/analysis
routes, and a dashboard Analysis tab with symbol-local Impact and Calls
sections. Blast radius walks the inbound closure over stable ids with
bounded depth; import cycles are canonicalized, including self-imports;
call hierarchy expands callers and callees binding overloads to their
implementation; unreferenced exports are presented as candidates with
their caveats stated, not as verdicts; hotspots and change coupling are
computed from indexed git history that now reports its own coverage
truthfully: total commits, window size, and whether truncation actually
happened, with the numeric window named only when it did. Ownership was
deliberately deferred because the graph stores authors, not committers,
and shipping it under the wrong name would lie.
Every traversal enforces the target's project boundary from inside the
query, every response carries normalized inputs, truncation flags, and
user-facing caveat strings, and the same question through the service,
the route, and the persona returns the same answer, held together by a
66-assertion cross-surface harness.
Also fixed here after live use caught it: vector search threw away the
whole response when an embedded File node appeared in the hits, because
Files carry a derived identity rather than a persisted symbol id. File
rows now derive their canonical id at the mapping boundary. This bug
shipped with the identity redesign and is fixed on top of it.
One adversarial review round found three blocker classes, all repaired
red-first and re-verified against the reviewer's own harness.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+44-6Lines changed: 44 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# CodeGraph — AI Assistant Skill Document
2
2
3
-
CodeGraph indexes codebases into a graph database (FalkorDB) and provides MCP tools for code search, context retrieval, knowledge management, and raw graph queries.
3
+
CodeGraph indexes codebases into a graph database (FalkorDB) and provides MCP tools for code search, context retrieval, repository analysis, knowledge management, and raw graph queries.
Every result carries display-ready caveat strings and truncation metadata from the analysis layer. Hotspots and change coupling also report `historyCoverage`, including the observed commit count and date range. Impact, call hierarchy, import cycles, and unreferenced exports are static evidence, not proof of runtime behavior. Dead-code results are candidates and must never drive automated deletion. Git-backed results cover indexed history only.
119
+
120
+
### 5. `query`: Raw Cypher (power users)
95
121
96
122
Execute read-only Cypher against the code graph.
97
123
98
-
**Schema:** Nodes: File, Function, Class, Interface, Variable, Type, Component, Entity. Edges: CONTAINS, CALLS, IMPORTS, IMPORTS_SYMBOL, EXTENDS, IMPLEMENTS, EXPORTS, PARENT_SECTION, ABOUT, RELATES_TO. SAID is not a separate edge label: it's a RELATES_TO edge with a `type` property set to "SAID" (deliberate design, same as every other relationship kind RELATES_TO carries via its `type` property).
124
+
**Schema:** Nodes: File, Function, Class, Interface, Variable, Type, Component, TypeRef, Entity, Project, Commit, Metadata, MarkdownDocument, Section, CodeBlock, Link. Edges: CONTAINS, IMPORTS, IMPORTS_SYMBOL, CALLS, EXTENDS, IMPLEMENTS, USES_TYPE, RETURNS, HAS_PARAM, HAS_METHOD, HAS_PROPERTY, RENDERS, INTRODUCED_IN, MODIFIED_IN, DELETED_IN, EXPORTS, PARENT_SECTION, ABOUT, RELATES_TO. SAID is not a separate edge label: it is a RELATES_TO edge with a `type` property set to "SAID", like every other relationship kind carried by RELATES_TO.
0 commit comments