Repository navigation
SigMap 8.82.0
Minor. The third-party benchmark grows from 128 questions over 25 repositories to 208 over 35, the gates print an exact paired test beside every won/lost count, and a head-to-head harness against two code-graph tools exists, unpublished (#984, #972). Nothing SigMap ships changes: gen-context.js, src/ and packages/ are the v8.81.0 files apart from their version strings, and the npm package has the same 222 files. The third-party headline moves because the corpus grew and not because the ranker changed: 81 of 128 (63.3%, 95% interval 54.7–71.1%) to 116 of 208 (55.8%, 49.0–62.4%), with all 25 earlier repositories reproducing task for task. The re-recorded signal-arm report shows one thing the guide now says plainly: on hard body words read −1, so by the guide's own rule they would not be a default (the flag stays on; the call is the maintainer's).
Added
- The gates print an exact paired test beside every won/lost count (#984) —
scripts/lib/paired-test.mjscomputes the exact two-sided sign test (McNemar's exact test) on the tasks that changed hit status.benchmark:xreponow prints against the baseline (compared, new, won, lost, p and a plain-words verdict;vsBaselinein--json), and--signalson the xrepo and retrieval gates and the signal arms ofbenchmark:honestprint it under each arm that changed a task. Report-only: no floor or no-regress rule changed. Fewer than six changed tasks can never be decisive, and the output says so. Test:paired-test.test.js(16 cases, a 19-mutant sweep of the test and its wiring caught in full, the arithmetic checked against integer binomials for every count up to 40 each). - The third-party corpus (xrepo) grows to 208 questions over 35 repositories (#984) — adds Svelte, Fastify, FastAPI, dplyr, Akka, rust-analyzer, Abseil, Gson, GORM and Zod, eight questions each (Java, Scala, R and Svelte are new; JavaScript, Python, Rust, C++, Go and TypeScript gain a second repository), blind-labelled from
git archiveexports of the pinned commits and double-annotated by a second annotator who saw only the questions: 79 of 80 file sets matched exactly (122 of 125 since x084), none disjoint. The baseline is re-recorded with--save: 81/128 (63.3%, 54.7–71.1%) → 116/208 (55.8%, 49.0–62.4%), the interval 3 points narrower. All 25 earlier repositories reproduce exactly and none of their baseline entries changed; the drop is the ten new repositories (35 of 80), five of whose answers are absent from the zero-config index (Akka 2, rust-analyzer 3; a run indexes 786 of 4,623 and 700 of 2,266 files, cause not investigated). R leaves the known-gaps list ofbenchmarks/corpus-coverage.json(dplyr has eight labelled tasks). No ranker change.benchmarks/latest.json, the README and the compare page quote the new third-party figure (npm run metrics:sync); the signal-arm and sweep tables in the guide still describe the 83-task record. - A head-to-head harness against codebase-memory-mcp and code-review-graph (#972, PR #1023) —
scripts/run-head-to-head.mjsruns SigMap and the two tools on the xrepo tasks with one file-level scorer (hit@5, MRR@10, Wilson 95%), resolving every ambiguity in the other tool's favour and reporting a task it has no nodes for apart from a miss. It is exploratory only: it refuses to run without--exploratoryand--out, and refuses an--outunderbenchmarks/, so nothing is published until the run on the enlarged corpus. It is never a dependency: nothing is installed bynpm install, nothing ships in the npm package, and a test fails if a rival enterspackage.jsonorbenchmarks/enters the packagefiles.benchmarks/rivals.jsonpins each tool to an exact release and the SHA-256 of its artifact; the harness refuses to run one whose hash differs from the pin and from the release's ownchecksums.txt, and runs it with a scratchHOMEand a minimal environment on a throwaway copy of each pinned clone. Method:benchmarks/HEAD_TO_HEAD.md. Test:head-to-head.test.js(21 cases; a sweep of 28 mutants of the harness is caught in full).
Changed
- The signal-arm report is re-recorded on the 208-task corpus (#984) —
npm run benchmark:signalsat v8.81.0; the guide's signal table, bullets and body-words figures follow it, and a test holds them to it. The verdicts stand (centrality blend and surface enrichment deprecated, mined expansions and the call-graph boost opt-in, no import graph a configuration), and body words are worth −38 tasks when switched off on the third-party corpus (116 → 78 of 208, MRR 0.380 → 0.244; was −17 of 83). One thing it found, written into the guide instead of smoothed over: onhardthe words now read −1 (they win 3 tasks and lose 4: h006, h031, h045, h064), so by the rule as written (no other corpus net-negative) they would not be a default.hardis 90 tasks scored against this repository and moves with every commit, the v8.74.0 tree read the same, the flag stays on and nothing in the code changed; the call is the maintainer's. The three sweeps stay dated experiments on the first 83 tasks and were not re-run. - Compare page: the codebase-memory-mcp column is re-read against its current README (2026-10-22); its "about 120× fewer tokens" headline is now described there as an earlier comparison.
Fixed
- An intermittent CI failure in the live-overlay watcher test (#1021) — the Node 22 job of the v8.81.0 release PR failed once: the test read the regeneration count before the watcher had finished a regeneration. It now waits for the count, and a mutant that delays the telemetry write by 3 s is caught where the old test passed it by luck. Test-only; no shipped code changes.
Notes
- A first run with
python3on PATH costs about 60% more CPU than v8.80.1's, measured after v8.81.0 shipped (#982) — Django 1.68 s to 2.7 s (median of five, same machine, same minute); the cache-off arm of v8.81.0 is as slow (2.87 s), so it is the Python AST tier extracting up to 200 signatures a file where it stopped at 30, and the index file written 56% larger, not the cache. Withoutpython3the first run is about 11% cheaper (1.74 s to 1.55 s). A re-run is unaffected (0.45–0.5 s). Not fixed.