Skip to content

SigMap 8.80.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 06:01
· 104 commits to main since this release
6926dd2

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_impact and plan answered 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's Str.php, imported by 164 files, printed it. An empty result for such a file is now graph: unsupported-language — PHP imports are not tracked (the import graph reads …). This is not evidence that nothing depends on this file., and --json adds "graph":"unsupported-language" and "language". --callers, --callees and get_method_impact name 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-source and verify-plan no longer print a zero blast radius (verify-plan no 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 def under its owner (#981, PR #1010) — the extractor read only column-0 class / module lines 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 of def lines equals Ripper's in 3,375 files, up from 3,206: the old extractor also listed def lines inside heredocs. The source is masked (comments, strings, heredocs, regexps, %-literals, =begin, __END__) and end is 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-end anchors). Retrieval is unchanged (xrepo hit counts identical; two Sidekiq misses moved rank); validate:grounding-coverage passes 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's sigmap verify sample was hand-written and did not match the real messages; it is now real output, "Try it now" gains npx 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 with mcp.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 from xrepo-baseline.json.

Added

  • doctor reports 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.md lists 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-owner exit 1 below a floor. Never shipped.
  • mcpName in package.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 in surface-docs.test.js (the npm description fits 255 characters; every message verify prints appears in the README), and comparison-claims.test.js.

Known

  • sigmap verify reports "✓ no hallucinations detected" for a fabricated function when the repository has never been indexed, because the symbol check is skipped (#1007; --json already says checks.symbols: false). Run sigmap first.