feat: add Kotlin universal evidence adapter - #254
Merged
Conversation
forhappy
marked this pull request as ready for review
August 16, 2026 02:12
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.
Summary
spring-kotlinframework pack and remove its replaced legacy publisherImpact
Kotlin code graphs now use the universal evidence pipeline and Spring Kotlin participates through a universal framework pack. The adapter remains
UniversalCandidate: the independent 2,000-accepted-relationship precision/recall audit is not complete, and the pinned Spring Framework corpus still shows a cold-build performance regression.The incremental fix reduces the 388-file Spring Kotlin one-file restoration from the previous 30.13-second observation to 1.01 seconds with zero graph assembly and zero new immutable objects. Release-build checks also covered ripgrep/Rust, go-git/Go, NestJS/TypeScript, the FastAPI production package/Python, and ASP.NET Core Http.Extensions/C#; all edited runs used the fact-neutral path and published valid SQLite-backed graphs. Detailed observations are recorded in
PERFORMANCE.mdanddocs/implementation/kotlin-universal-qualification.md.Root cause
compass updatewas excluded from the existing fact-neutral path. Kotlin also encoded whole-file hashes, ranges, and range-derived internal IDs into normalized extraction facts, so harmless EOF edits appeared semantic. Once resolution was skipped, publication still rebuilt broad store indexes and ran full graph-store garbage collection on ordinary edits. The fix makes the proof update-aware, preserves exact anchors and unrelated partial diagnostics, validates secondary-index invariants before point updates, and falls back to complete publication whenever the proof fails.Validation
cargo fmt --all -- --checkcargo clippy -p compass-graph -p compass-core --lib --bins --all-features --locked -- -D warningscargo test -p compass-core --lib --locked(76 passed)cargo test -p compass-graph --test store_snapshot --locked(20 passed)cargo test -p compass-languages --test kotlin_universal_conformance --lockedcargo test -p compass-resolve --test universal_resolution kotlin --locked./scripts/qualify_code_graph_v1.sh --fixtures-only(clean/warm/forced/incremental-restored/alternate byte equality)sh scripts/check_product_boundary.shThe broader
compass-graph --lib --testsrun still exposes the pre-existing Markdown URI assertion inmarkdown_identity; the focused graph snapshot suite and the complete code-graph v1 qualification gate pass.