feat: resolution_gaps — rank index blind spots and explain how to improve them #36
Labels
No labels
code-review
correctness
dos
performance
security
severity/high
severity/low
severity/medium
tech-debt
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
h-dv/code-index#36
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Product
Make unresolved-reference telemetry queryable so users know where graph answers are weak and maintainers know which extractor/resolver improvement buys the most coverage.
Queries
Why
Graph features are only as trustworthy as resolution coverage. Current evidence already identifies a dominant actionable gap: method calls resolve at ~6.8% versus ~31.7% for plain calls; 2,619 unresolved method calls have exactly one in-repo name candidate and 590 more need receiver disambiguation (#29). Today those measurements require bespoke SQL.
This tool creates a virtuous loop: expose blind spots → prioritize extraction work → add fixtures → measure recovered edges → improve every graph product.
Boundaries
read_codeboundaries and project routingAcceptance
Shipped in v0.5.20 (I029 Track D) as the
resolution_gapsMCP tool + a per-languageresolutionblock inproject_overview.Deterministic reason codes (
external,missing_receiver_single_candidate/_ambiguous,no_candidate,unreachable_unique,ambiguous) computed against the SAME candidate universe the resolver uses (kind-aware, same-language, impl/assoc-item-excluded pools); example handles decode from a single aggregated key so they always name a real ref site (review-caught: the naive MIN(path)+MIN(line) fabricated locations); full ORDER BY tiebreaks for cross-build determinism; unknownlangrejected withdid_you_meaninstead of confident zeros (the D3 trap).It already did its job: the tool corrected #29's unlock estimate — the brainstorm's 2,619 was lang-blind; the resolver-faithful measurement is 757 single-candidate + 597 receiver-disambiguable method calls (reproducible from public output, per this issue's acceptance). The 7-language e2e asserts per-lang rows and that reason-code aggregates account for exactly the unresolved remainder, end to end through the RPC/serde/tool layers.