Repository navigation
SigMap 8.80.1
Patch. A blast-radius query on a language the graph cannot read says "not tracked" instead of "No importers found", the Ruby extractor finds the classes and modules nested inside other modules and lists each method under its owner, the npm description is no longer cut off mid-word, and every claim about another tool is dated and sourced.
Fixed
- "No importers found" for languages the dependency graphs cannot read (#979, PR #1009) —
--impact,get_impactandplananswered with the words for "nothing depends on this" for every file in a language the import graph does not read (PHP, C#, C/C++, Objective-C, Swift, Dart, Lua, GDScript, Vue, Svelte, Astro): Laravel'sStr.php, imported by 164 files, printed it. An empty result for such a file is nowgraph: unsupported-language — PHP imports are not tracked (the import graph reads …). This is not evidence that nothing depends on this file., and--jsonadds"graph":"unsupported-language"and"language".--callers,--calleesandget_method_impactname the file when a symbol is declared in a language the call graph cannot read, and say how many files they could not search when it is unknown;plan,get_diff_context, the PR evidence report,ask --with-sourceandverify-planno longer print a zero blast radius (verify-planno longer says "blast radius … in bounds") for such files. A file with importers, and every readable language, is unchanged: across 53 files in 17 pinned clones the only differences were the two added keys. The readable families are declared once (GRAPH_FAMILIES,CALL_GRAPH_FAMILIES), and the walks use the same lists. - Ruby: classes and modules at any indentation, every
defunder its owner (#981, PR #1010) — the extractor read only column-0class/modulelines and listed every method with no owner, so in the usual layout (classes inside a module) most classes were dropped. Against Ruby's own parser (Ripper 2.6) on 757 Rails and Sidekiq files: class 13.8% → 100.0%, module 44.0% → 100.0%, method 82.7% → 98.7%, and methods listed under the class that defines them 3.5% → 100.0% (7,291 of 7,292). Across all 3,398 Ripper-parsable Ruby files the number ofdeflines equals Ripper's in 3,375 files, up from 3,206: the old extractor also listeddeflines inside heredocs. The source is masked (comments, strings, heredocs, regexps,%-literals,=begin,__END__) andendis matched against the keywords that open a block; a class is listed by the name the source gives it, as the Python and Java extractors do. Ruby stays Tier 3 (no:start-endanchors). Retrieval is unchanged (xrepo hit counts identical; two Sidekiq misses moved rank);validate:grounding-coveragepasses but Rails reads 73.8% (was 75.3%) and Sidekiq 81.1% (was 83.6%) because the universe now includes the nested classes and modules. - The npm description was cut mid-word on every release (#977, PR #1008) — npm keeps 255 characters of
description; ours was 363 and ended "… so they stop h". It is now 249 characters, a complete sentence, and leads with verified grounding. The README'ssigmap verifysample was hand-written and did not match the real messages; it is now real output, "Try it now" gainsnpx sigmap verify answer.md, and "no agentic-grep loop, and no competitor" is "an agentic-grep loop cannot". - Claims about other tools (#973, PR #1005) — the comparison page said RepoMix has no MCP support (it has
repomix --mcp) and gave it an unsourced token-reduction figure. Every column about another tool is now labelled "characterized", linked to the tool's README at a pinned commit and dated (2026-10-18); codebase-memory-mcp, code-review-graph and Headroom have sections. SigMap's tool count reads 22 by default and 7 withmcp.tools: core. The README shows the third-party corpus (63.3% hit@5, 81 of 128 questions over 25 repositories, 95% interval 54.7–71.1%) beside the honest-corpus headline; the figure is generated fromxrepo-baseline.json.
Added
doctorreports the files the import graph cannot read (#979) — an "Import graph" line counting them by language, a warning from a tenth of the code, quiet about a few stray files;KNOWN_LIMITATIONS.mdlists the languages each graph reads.scripts/extraction-recall/ruby.mjs(#981) — dev-only: the Ripper comparison above, committed as the first case of the extraction-recall benchmark. It reproduces the issue's table exactly against the old extractor, prints "unmeasured" and exits 0 without Ruby or the clones, and--min-class/--min-module/--min-method/--min-ownerexit 1 below a floor. Never shipped.mcpNameinpackage.json(#977) — the official MCP Registry verifies ownership through the published package, so a listing needs a release that carries it. Inert for npm and for SigMap.- Tests:
graph-unsupported-languages.test.js(34; 15 of the first 21 fail on the old code),ruby-nesting.test.js(30; 17 fail on the old extractor, and a sweep of 30 one-line mutants is killed in full), two cases insurface-docs.test.js(the npm description fits 255 characters; every messageverifyprints appears in the README), andcomparison-claims.test.js.
Known
sigmap verifyreports "✓ no hallucinations detected" for a fabricated function when the repository has never been indexed, because the symbol check is skipped (#1007;--jsonalready sayschecks.symbols: false). Runsigmapfirst.