perf(store): skip JVM scope scans in non-JVM repos - #256
Merged
Merged
Conversation
isink17
force-pushed
the
perf/cg-50-jvm-scope-gate
branch
from
October 1, 2026 12:49
b68c68d to
7195b20
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Incremental updates scanned all edges for JVM scoped spellings even when a repository contained no Java or Kotlin files. Reuse the existing repository-scoped active-language predicate to skip the scan; mixed/JVM selection is preserved.
Regression proof drops the edge table in a non-JVM fixture to prove no edge query runs, and checks mixed Java/Kotlin/PHP selection. No schema, cache, parser profile, or public API change.
Real Laravel acceptance at
6070a6d7e9804a490b12cb889173fbb926b8e3c8: 60 deterministic PHP-file changes update in 62.881s engine time, versus 114.597s initial fresh and 124.652s final-state fresh. Wall times are 63.816s, 170.875s, and 179.405s respectively. Fresh/incremental and baseline/candidate facts agree across 3,354 files, 36,609 symbols, 178,804 edges, 186,884 references, 11,905 imports, 2,825 scope rows, 17,251 scope imports and six Composer mappings. Competing test load prevents a causal end-to-end speedup claim. Preserved worker helper benchmark separately isolates scan cost (median 145.595ms to 9.252us).Validation: full
go test ./...; focused store and JVM/Java/Kotlin indexer lifecycle checks; targeted race; vet; build; real corpus index/update/stats; diff-check; read-only reviewer pass. Corpus evidence:/private/tmp/cg50-corpus-acceptance.md.Recovered patch integrated directly in its real worktree; no replacement implementation worker. Plane: CG-50.