docs: update competitive analysis for v3.2.0 and March 2026 landscape#559
docs: update competitive analysis for v3.2.0 and March 2026 landscape#559carlos-alm wants to merge 13 commits intomainfrom
Conversation
Re-rank codegraph from #8 (4.0) to #5 (4.5) reflecting v3.2.0 features: 41 CLI commands, 32 MCP tools, dataflow across all 11 languages, CFG, sequence diagrams, architecture boundaries, unified graph model. Add new competitors: GitNexus (#1, 18k stars), DeusData/codebase-memory-mcp (#6, 793 stars in 25 days). Update star counts and feature status across all 85+ ranked projects. Mark 7 roadmap items as DONE. Flag stagnant projects. Update joern.md (3,021 stars, 75 contributors, 4 community MCP wrappers) and narsil-mcp.md (129 stars, SPA frontend, +36 security rules, development paused since Feb 25).
|
Claude finished @carlos-alm's task —— View job Reviewing PR #559: Competitive Analysis Update
|
Greptile SummaryThis PR refreshes the competitive analysis to reflect the v3.2.0 feature release and the March 2026 landscape. It promotes codegraph from #8 (4.0) to #5 (4.5), introduces GitNexus as the new #1 (18,453 stars, LadybugDB, CLI+MCP+Web UI) and DeusData/codebase-memory-mcp as #6 (793 stars in 25 days), and refreshes star counts and feature status across 85+ ranked projects.
Confidence Score: 4/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph Tier1["Tier 1: Direct Competitors (score ≥ 3.0)"]
G1["#1 GitNexus — 4.5 ⭐18,453 🆕"]
G2["#2 joern — 4.5 ⭐3,021"]
G3["#3 narsil-mcp — 4.5 ⭐129"]
G4["#4 code-graph-rag — 4.5 ⭐2,168"]
G5["#5 codegraph (us) — 4.5 ⭐32 ↑ from #8"]
G6["#6 codebase-memory-mcp — 4.3 ⭐793 🆕"]
G7["#7 cpg — 4.2 ⭐424"]
G8["... #8–#37 ..."]
end
subgraph Tier2["Tier 2: Niche & Single-Language (score 2.0–2.9)"]
T38["#38 CodeInteliMCP — 2.9"]
T39["#39 aider — 2.8 ⭐42,198"]
T40["... #40–#86 ..."]
end
subgraph Tier3["Tier 3: Minimal or Inactive (score < 2.0)"]
T87["#87+ ..."]
end
Tier1 --> Tier2
Tier2 --> Tier3
G1 -.->|"PolyForm NC\nnon-commercial only"| warn1["⚠️ License restriction"]
G6 -.->|"25 days old\n793 stars"| warn2["⚠️ Very immature"]
Reviews (7): Last reviewed commit: "fix: correct ranking inversion at positi..." | Re-trigger Greptile |
| | 10 | 3.8 | [anrgct/autodev-codebase](https://github.com/anrgct/autodev-codebase) | 111 | TypeScript | None | 40+ languages, 7 embedding providers, Cytoscape.js visualization, LLM reranking | | ||
| | 1 | 4.7 | [abhigyanpatwari/GitNexus](https://github.com/abhigyanpatwari/GitNexus) | 18,453 | TS/JS | PolyForm NC | Zero-server knowledge graph engine with Graph RAG Agent, CLI + MCP + Web UI, tree-sitter native + WASM, LadybugDB (custom graph DB), multi-editor support (Claude Code hooks, Cursor, Codex, Windsurf, OpenCode), auto-generated AGENTS.md/CLAUDE.md. **Non-commercial license. Viral growth (18k stars in ~8 months)** | | ||
| | 2 | 4.5 | [joernio/joern](https://github.com/joernio/joern) | 3,021 | Scala | Apache-2.0 | Full CPG analysis platform for vulnerability discovery, Scala query DSL, multi-language, daily releases (v4.0.508), 75 contributors | | ||
| | 3 | 4.5 | [postrv/narsil-mcp](https://github.com/postrv/narsil-mcp) | 129 | Rust | Apache-2.0 | 90 MCP tools, 32 languages, taint analysis, SBOM, dead code, neural semantic search, single ~30MB binary, SPA web frontend (v1.6.1) | |
There was a problem hiding this comment.
SPA version attribution mismatch
The ranking table summary says SPA web frontend (v1.6.1), implying the SPA was delivered in v1.6.1. However, the detailed "vs narsil-mcp" section further down in the same file (lines 222–223) correctly attributes it to v1.6.0:
"SPA web frontend: Full web UI with file tree sidebar, syntax-highlighted code viewer, dashboard, per-repo overview, CFG visualization (added v1.6.0)"
narsil-mcp.md is also consistent — the SPA appears as "(v1.6.0)" in both the Visualization comparison table (line 163) and the Ecosystem table (line 273). The current narsil release is v1.6.1, but the SPA was introduced in v1.6.0.
This creates a verifiable factual inconsistency within COMPETITIVE_ANALYSIS.md itself and across the two sibling documents.
| | 3 | 4.5 | [postrv/narsil-mcp](https://github.com/postrv/narsil-mcp) | 129 | Rust | Apache-2.0 | 90 MCP tools, 32 languages, taint analysis, SBOM, dead code, neural semantic search, single ~30MB binary, SPA web frontend (v1.6.1) | | |
| | 3 | 4.5 | [postrv/narsil-mcp](https://github.com/postrv/narsil-mcp) | 129 | Rust | Apache-2.0 | 90 MCP tools, 32 languages, taint analysis, SBOM, dead code, neural semantic search, single ~30MB binary, SPA web frontend (added v1.6.0, current v1.6.1) | |
There was a problem hiding this comment.
Fixed in commit d3f65d2. Line 18 now reads "SPA web frontend (added v1.6.0, current v1.6.1)" — distinguishing the version when the feature was introduced (v1.6.0) from the current release (v1.6.1), consistent with the detailed narsil-mcp.md entry.
generated/competitive/joern.md
Outdated
| | Language support | 11 | 16 (incl. binary/bytecode) | Joern | | ||
| | Query expressiveness | Fixed commands | Arbitrary graph traversals | Joern | | ||
| | Community & maturity | New | 7 years, IEEE award, 2,968 stars | Joern | | ||
| | Community & maturity | 32 stars, growing | 7 years, IEEE award, 3,021 stars, 75 contributors | Joern | |
There was a problem hiding this comment.
Stale codegraph star count not updated
The Key Metrics Summary hardcodes codegraph's star count as 32 stars, growing, but the ecosystem comparison table in the same document (line 241) uses Growing without a specific number — the pattern used everywhere else in this PR's updates. The value 32 appears to be leftover from an earlier version and was not refreshed as part of this PR's stated goal of updating star counts.
This is also internally inconsistent within joern.md: the table at line 241 avoids pinning a number, but the summary row below pins it at 32.
| | Community & maturity | 32 stars, growing | 7 years, IEEE award, 3,021 stars, 75 contributors | Joern | | |
| | Community & maturity | Growing | 7 years, IEEE award, 3,021 stars, 75 contributors | Joern | |
There was a problem hiding this comment.
Fixed in commit 63abc82. The "32 stars, growing" value hardcoded a stale star count that would go out of date immediately. Updated to "Growing" to match the consistent style used in other comparison tables throughout the competitive analysis.
…view Line 18 incorrectly stated "v1.6.1" as the version when the SPA feature was introduced. The SPA frontend was added in v1.6.0; v1.6.1 is the current release. Updated to "added v1.6.0, current v1.6.1" to match the detailed narsil-mcp.md entry.
The "32 stars, growing" value in the Community & maturity row hardcodes a stale star count. Other comparison tables use "Growing" consistently for codegraph's community status. Updated to match.
P1 fixes appliedBoth Greptile P1 factual inconsistencies have been resolved: 1. SPA version attribution (
2. Stale star count in joern comparison table (
|
| | **8** | **4.0** | **[@optave/codegraph](https://github.com/optave/codegraph)** | — | **JS/Rust** | **Apache-2.0** | **Sub-second incremental rebuilds, dual engine (native Rust + WASM), 11 languages, 18-tool MCP, qualified call resolution, `context`/`explain`/`where` AI-optimized commands, structure/hotspot analysis, node role classification (entry/core/utility/adapter/dead/leaf), dead code detection, zero-cost core + optional LLM enhancement** | | ||
| | 9 | 3.9 | [harshkedia177/axon](https://github.com/harshkedia177/axon) | 421 | Python | MIT | 11-phase pipeline, KuzuDB, Leiden community detection, dead code, change coupling, 7 MCP tools | | ||
| | 10 | 3.8 | [anrgct/autodev-codebase](https://github.com/anrgct/autodev-codebase) | 111 | TypeScript | None | 40+ languages, 7 embedding providers, Cytoscape.js visualization, LLM reranking | | ||
| | 1 | 4.7 | [abhigyanpatwari/GitNexus](https://github.com/abhigyanpatwari/GitNexus) | 18,453 | TS/JS | PolyForm NC | Zero-server knowledge graph engine with Graph RAG Agent, CLI + MCP + Web UI, tree-sitter native + WASM, LadybugDB (custom graph DB), multi-editor support (Claude Code hooks, Cursor, Codex, Windsurf, OpenCode), auto-generated AGENTS.md/CLAUDE.md. **Non-commercial license. Viral growth (18k stars in ~8 months)** | |
There was a problem hiding this comment.
GitNexus overall score doesn't match breakdown sub-scores
The ranking table lists GitNexus with an overall score of 4.7, but the scoring breakdown table (line 135) shows:
| Features | Analysis Depth | Deploy Simplicity | Lang Support | Code Quality | Community |
|---|---|---|---|---|---|
| 5 | 5 | 4 | 4 | 4 | 5 |
Simple average: (5+5+4+4+4+5) / 6 = 4.5, not 4.7. Every other entry in the table produces a score consistent with the arithmetic mean of its six sub-scores (e.g., joern = 27/6 = 4.5, narsil = 27/6 = 4.5, codegraph = 27/6 = 4.5). GitNexus is the only new entry, making this a discrepancy introduced in this PR.
If the intent is to keep GitNexus ranked #1, the overall score should either be corrected to 4.5, or at least one sub-score should be raised to 5 and the methodology for the weighted average documented — since 4.7 is not achievable with integer 1–5 scores in a simple 6-dimension average.
| | 1 | 4.7 | [abhigyanpatwari/GitNexus](https://github.com/abhigyanpatwari/GitNexus) | 18,453 | TS/JS | PolyForm NC | Zero-server knowledge graph engine with Graph RAG Agent, CLI + MCP + Web UI, tree-sitter native + WASM, LadybugDB (custom graph DB), multi-editor support (Claude Code hooks, Cursor, Codex, Windsurf, OpenCode), auto-generated AGENTS.md/CLAUDE.md. **Non-commercial license. Viral growth (18k stars in ~8 months)** | | |
| | 1 | 4.5 | [abhigyanpatwari/GitNexus](https://github.com/abhigyanpatwari/GitNexus) | 18,453 | TS/JS | PolyForm NC | Zero-server knowledge graph engine with Graph RAG Agent, CLI + MCP + Web UI, tree-sitter native + WASM, LadybugDB (custom graph DB), multi-editor support (Claude Code hooks, Cursor, Codex, Windsurf, OpenCode), auto-generated AGENTS.md/CLAUDE.md. **Non-commercial license. Viral growth (18k stars in ~8 months)** | |
There was a problem hiding this comment.
Fixed in commit a2a2a32. The overall score for GitNexus has been corrected from 4.7 to 4.5, which is the correct arithmetic mean of its six sub-scores: (5+5+4+4+4+5)/6 = 4.5, consistent with all other entries in the table.
There was a problem hiding this comment.
Fixed — GitNexus overall score was already corrected to 4.5 in the previous round (matches sub-score average of 27/6 = 4.5). Verified it remains consistent.
| |---|-------|---------|-------|------|---------|---------| | ||
| | 37 | 2.9 | [rahulvgmail/CodeInteliMCP](https://github.com/rahulvgmail/CodeInteliMCP) | 8 | Python | None | DuckDB + ChromaDB (zero Docker), multi-repo, lightweight embedded DBs | |
There was a problem hiding this comment.
Duplicate rank number at tier boundary
The Tier 1 table ends at rank #37 (cloud-property-graph, score 3.0) and the Tier 2 table immediately begins at rank #37 (CodeInteliMCP, score 2.9) — the same number is used for two different projects. With the addition of GitNexus (#1) and codebase-memory-mcp (#6) in this PR, Tier 1 now contains 37 entries, but the Tier 2 numbering was not incremented to start at 38.
The first Tier 2 entry should be renumbered to #38, and all subsequent Tier 2 entries should be incremented by one accordingly.
| - **Architecture boundary enforcement**: *(Gap closed: we now have `boundaries` command with onion/hexagonal/layered/clean presets)* | ||
| - **Tiered indexing**: fast/balanced/full modes for different use cases — we have one mode | ||
|
|
||
| ### vs jelly (#16, 417 stars) |
There was a problem hiding this comment.
Star count in section header diverges from ranking table
The ranking table (line 31) was updated to 423 stars for cs-au-dk/jelly, but the section header here still reads 417 stars. The PR description states "Update star counts and feature status across all 85+ ranked projects", so this looks like the ranking table update was not mirrored in the "Where Codegraph Loses" header.
| ### vs jelly (#16, 417 stars) | |
| ### vs jelly (#16, 423 stars) |
There was a problem hiding this comment.
Fixed — jelly section header was already updated to 423 stars in the previous round, matching the ranking table. Verified consistency.
- GitNexus overall score corrected from 4.7 to 4.5 to match the arithmetic mean of its six sub-scores (5+5+4+4+4+5)/6 = 4.5 - Tier 2 renumbered starting at #38 (was duplicating #37 with Tier 1); also resolves the pre-existing duplicate #43 (Bikach/ChrisRoyse now #44/#45), with all subsequent entries incremented accordingly - jelly section header updated from 417 to 423 stars to match the ranking table
…' into docs/competitive-analysis-update
| - **Vulnerability exposure analysis**: library usage pattern matching specific to the JS/TS ecosystem | ||
|
|
||
| ### vs aider (#38, 41,664 stars) | ||
| ### vs aider (#38, 42,198 stars — now Aider-AI/aider) |
There was a problem hiding this comment.
Stale rank number in "vs aider" section header
The section header on line 278 says #38 for aider, but after the Tier 2 renumbering fix (commit a2a2a32, which made Tier 2 start at #38 and pushed all subsequent entries up by one), aider is now at #39 in the ranking table (line 59):
| 38 | 2.9 | [rahulvgmail/CodeInteliMCP] | ← slot #38 is CodeInteliMCP
| 39 | 2.8 | [Aider-AI/aider] | ← aider is at #39
The vs joern, vs narsil-mcp, and other section headers were all correctly updated to reflect their new ranks. Aider's header was missed.
| ### vs aider (#38, 42,198 stars — now Aider-AI/aider) | |
| ### vs aider (#39, 42,198 stars — now Aider-AI/aider) |
generated/competitive/joern.md
Outdated
| |---------|-----------|-------|---------------| | ||
| | **GitHub stars** | New project (growing) | ~2,968 | **Joern** | | ||
| | **Contributors** | Small team | 64 | **Joern** | | ||
| | **GitHub stars** | 32 (growing) | ~3,021 | **Joern** | |
There was a problem hiding this comment.
Stale star count in Ecosystem feature-comparison table
This row in the Ecosystem & Community feature-by-feature table still pins codegraph's star count at 32 (growing). The previous review flagged the same issue in the Key Metrics Summary, which was fixed in commit 63abc82 to use Growing. However, this table entry was not updated as part of that fix, leaving the two tables internally inconsistent within joern.md:
- Feature-by-Feature (line 241):
32 (growing)← stale pinned number - Key Metrics Summary (line 337):
Growing← correctly unpinned
| | **GitHub stars** | 32 (growing) | ~3,021 | **Joern** | | |
| | **GitHub stars** | Growing | ~3,021 | **Joern** | |
There was a problem hiding this comment.
Fixed — changed codegraph star count from '32 (growing)' to 'Growing' in the Ecosystem feature-comparison table, matching the Key Metrics Summary table format on line 337.
| | 7 | cpg | 5 | 5 | 2 | 5 | 5 | 3 | | ||
| | 8 | CKB | 5 | 5 | 4 | 3 | 4 | 3 | | ||
| | 9 | axon | 5 | 5 | 4 | 2 | 4 | 3 | | ||
| | 10 | glimpse | 4 | 4 | 5 | 3 | 5 | 4 | |
There was a problem hiding this comment.
glimpse sub-scores don't match updated overall ranking score
This PR downgrades glimpse from 4.2 → 3.8 in the ranking table (line 25) to reflect "Stagnant since Jan 2026", but the scoring breakdown row was not updated. The current sub-scores still average to the old 4.2 value:
| Features | Analysis Depth | Deploy Simplicity | Lang Support | Code Quality | Community |
|---|---|---|---|---|---|
| 4 | 4 | 5 | 3 | 5 | 4 |
Sum = 25 / 6 = 4.17, which is inconsistent with the new overall score of 3.8 — the breakdown still describes a 4.2-tier tool, not a 3.8-tier one.
Every other entry in this table produces an overall score consistent with its arithmetic mean (e.g. the GitNexus fix from earlier on this PR corrected exactly this pattern). The stagnation signal should be reflected in the Community sub-score at minimum (currently 4 — arguably should drop to 2 or 1 for an inactive project), and/or Code Quality to bring the average in line with 3.8.
The same pattern affects autodev-codebase (line 157), which the PR also explicitly marks as stagnant. Its breakdown scores (5+3+3+5+3+3 = 22/6 = 3.67) don't match its overall ranking of 3.4.
There was a problem hiding this comment.
Fixed — adjusted sub-scores to reflect stagnation in Community dimension: glimpse Community 4→2 (avg 3.83≈3.8, matching ranking), autodev-codebase Community 3→1 (avg 3.33, ranking updated 3.4→3.3). Both now arithmetically consistent.
…gnant projects glimpse: Community 4→2 (stagnant since Jan 2026), avg now 3.83≈3.8 matching ranking. autodev-codebase: Community 3→1 (stagnant since Jan 2026), avg now 3.33, ranking updated 3.4→3.3.
| | 20 | 3.5 | [colbymchenry/codegraph](https://github.com/colbymchenry/codegraph) | 165 | TypeScript | MIT | tree-sitter + SQLite + MCP, Claude Code token reduction benchmarks, npx installer | | ||
| | 15 | 3.7 | [entrepeneur4lyf/code-graph-mcp](https://github.com/entrepeneur4lyf/code-graph-mcp) | 83 | Python | MIT | ast-grep for 25+ languages, complexity metrics, code smells, circular dependency detection. **Stagnant since Jul 2025** | | ||
| | 16 | 3.7 | [cs-au-dk/jelly](https://github.com/cs-au-dk/jelly) | 423 | TypeScript | BSD-3 | Academic-grade JS/TS points-to analysis, call graphs, vulnerability exposure, 5 published papers | | ||
| | 17 | 3.6 | [colbymchenry/codegraph](https://github.com/colbymchenry/codegraph) | 308 | TypeScript | MIT | tree-sitter + SQLite + MCP, Claude Code token reduction benchmarks, npx installer. **Nearly doubled since Feb — naming competitor** | |
There was a problem hiding this comment.
Sub-score mismatch on two updated entries
This PR explicitly updated Community sub-scores for colbymchenry/codegraph (3→4) and axon (2→3) to reflect their growth, but the corresponding overall ranking scores were not updated to match the new averages. This is the same pattern as the glimpse/autodev-codebase fix applied earlier in this PR.
colbymchenry/codegraph (scoring breakdown line 151):
- Sub-scores: 4 + 3 + 5 + 3 + 3 + 4 = 22 → 22/6 = 3.67 ≈ 3.7
- Ranking table (line 32) still shows: 3.6
axon (scoring breakdown line 143):
- Sub-scores: 5 + 5 + 4 + 2 + 4 + 3 = 23 → 23/6 = 3.83 ≈ 3.8
- Ranking table (line 24) still shows: 4.0
Every other entry whose sub-scores were touched in this PR had its overall score corrected to the arithmetic mean (glimpse: 23/6 = 3.83 → 3.8, autodev-codebase: 20/6 = 3.33 → 3.3). These two entries were missed.
There was a problem hiding this comment.
Fixed — updated colbymchenry/codegraph overall from 3.6→3.7 and axon from 4.0→3.8 to match their sub-score arithmetic means.
| | 23 | 3.3 | [anrgct/autodev-codebase](https://github.com/anrgct/autodev-codebase) | 111 | TypeScript | None | 40+ languages, 7 embedding providers, Cytoscape.js visualization, LLM reranking. **Stagnant since Jan 2026** | | ||
| | 24 | 3.4 | [Durafen/Claude-code-memory](https://github.com/Durafen/Claude-code-memory) | 72 | Python | None | Memory Guard quality gate, persistent codebase memory, Voyage AI + Qdrant | | ||
| | 25 | 3.3 | [NeuralRays/codexray](https://github.com/NeuralRays/codexray) | 2 | TypeScript | MIT | 16 MCP tools, TF-IDF semantic search (~50MB), dead code, complexity, path finding | |
There was a problem hiding this comment.
Ranking inversion: rank #23 (3.3) scored lower than rank #24 (3.4)
The table is ordered by descending score, but after the stagnation-driven downgrade of autodev-codebase from 3.8 → 3.3, its position was not adjusted. autodev-codebase now sits at rank #23 with score 3.3, while Claude-code-memory at rank #24 has a higher score of 3.4. A project with score 3.4 must be ranked above one with score 3.3.
Current (broken):
| 23 | 3.3 | anrgct/autodev-codebase |
| 24 | 3.4 | Durafen/Claude-code-memory |
Expected (fixed):
| 23 | 3.4 | Durafen/Claude-code-memory |
| 24 | 3.3 | anrgct/autodev-codebase |
| 25 | 3.3 | NeuralRays/codexray |
The scoring breakdown table at rows 23–24 should be reordered to match. This inversion was introduced when autodev-codebase's score was correctly reduced for stagnation but its table position was not updated.
| # Competitive Analysis — Code Graph / Code Intelligence Tools | ||
|
|
||
| **Date:** 2026-02-25 | ||
| **Scope:** 137+ code analysis tools evaluated, 82+ ranked against `@optave/codegraph` | ||
| **Date:** 2026-03-21 (updated from 2026-02-25) |
There was a problem hiding this comment.
PR description says "7 roadmap items" but 8 are marked DONE
The PR description states "Mark 7 roadmap items as DONE: path, complexity, visualization, co-change, communities, flow, dataflow, boundaries" — but counting the items in that list yields 8: path, complexity, visualization, co-change, communities, flow, dataflow, boundaries. The diff confirms 8 roadmap items were changed from TODO → DONE in this PR (the 6 Tier 3 items plus path in Tier 1 and complexity / formal code health metrics in Tier 2). The PR description count is off by one; consider updating it to "8 roadmap items" to keep the summary accurate.
There was a problem hiding this comment.
Fixed — updated PR description from '7 roadmap items' to '8 roadmap items' to match the actual count: path, complexity, visualization, co-change, communities, flow, dataflow, boundaries.
| | 1 | 4.5 | [abhigyanpatwari/GitNexus](https://github.com/abhigyanpatwari/GitNexus) | 18,453 | TS/JS | PolyForm NC | Zero-server knowledge graph engine with Graph RAG Agent, CLI + MCP + Web UI, tree-sitter native + WASM, LadybugDB (custom graph DB), multi-editor support (Claude Code hooks, Cursor, Codex, Windsurf, OpenCode), auto-generated AGENTS.md/CLAUDE.md. **Non-commercial license. Viral growth (18k stars in ~8 months)** | | ||
| | 2 | 4.5 | [joernio/joern](https://github.com/joernio/joern) | 3,021 | Scala | Apache-2.0 | Full CPG analysis platform for vulnerability discovery, Scala query DSL, multi-language, daily releases (v4.0.508), 75 contributors | | ||
| | 3 | 4.5 | [postrv/narsil-mcp](https://github.com/postrv/narsil-mcp) | 129 | Rust | Apache-2.0 | 90 MCP tools, 32 languages, taint analysis, SBOM, dead code, neural semantic search, single ~30MB binary, SPA web frontend (added v1.6.0, current v1.6.1) | | ||
| | 4 | 4.5 | [vitali87/code-graph-rag](https://github.com/vitali87/code-graph-rag) | 2,168 | Python | MIT | Graph RAG with Memgraph, multi-provider AI, code editing, semantic search, MCP server (added 2026) | |
There was a problem hiding this comment.
Pre-existing sub-score/overall-score mismatches on two untouched entries
The pattern of reconciling sub-score averages with overall ranking scores (applied this PR to GitNexus, glimpse, autodev-codebase, axon, colbymchenry/codegraph) leaves two Tier 1 entries still inconsistent. Both were not changed by this PR, but since the PR is actively editing the scoring tables it's worth catching them here:
code-graph-rag (#4, ranking line 19, breakdown line 138):
| Features | Analysis Depth | Deploy Simplicity | Lang Support | Code Quality | Community |
|---|---|---|---|---|---|
| 5 | 4 | 3 | 4 | 4 | 5 |
| Sum = 25 → 25/6 = 4.17 ≈ 4.2, but the ranking table shows 4.5 (off by 0.33). |
arbor (#13, ranking line 28, breakdown line 147):
| Features | Analysis Depth | Deploy Simplicity | Lang Support | Code Quality | Community |
|---|---|---|---|---|---|
| 4 | 4 | 5 | 4 | 5 | 3 |
| Sum = 25 → 25/6 = 4.17 ≈ 4.2, but the ranking table shows 3.7 (off by 0.47 — the largest gap in the table). |
Every other entry in the scoring breakdown now produces an overall score consistent with its arithmetic mean (all the fixes from this review round confirm that is the intended methodology). For arbor specifically the sub-scores describe a ~4.2-tier tool while the ranking places it at 3.7 — a half-point discrepancy that understates it relative to neighbours at 3.7 with sub-score averages of 3.67.

Summary
Test plan