feat: frozen SCIP oracle — true precision/recall and the HONEST DENOMINATOR (build-required grader, zero-build product) #49
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#49
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?
P3 — biggest lift, biggest measurement unlock. Justification narrowed by the 2026-07-28 spike.
From
_prdoc/records/brainstorm-2026-07-28-oss-corpus-test-system.md§2.3.The reframe
The build-vs-buy verdict archived SCIP because it is build-required and the moat is zero-build. That verdict was about ingest. As a test oracle the objection evaporates:
Pipeline: build the repo once → run the authoritative indexer → convert to a compact frozen oracle (
{file,line,col} → symbol identity) → commit the artifact → grade forever at zero runtime cost. Refresh quarterly; review the oracle diff as a first-class change, version-stamped with the grader version.Candidate graders (all need verification before commitment)
rust-analyzer scipscip-typescript(tsc-backed)scip-python(pyright-backed)scip-dotnet(Roslyn)scip-ruby(Sorbet)scip-phpStart with Rust + TypeScript + Python only. Seven toolchains in CI is not worth it; three prove the concept and cover the two lowest-scoring languages in #46.
The two payoffs
resolution == "resolved", so the oracle is needed only over our resolved set — a far smaller problem than grading all refs. Any confident disagreement is a proven defect.Narrowed justification (post-spike)
The 2026-07-28 mutation testing found 0 phantoms / 1413 resolved cross-file refs. So the oracle's role is measurement, not discovery — whatever precision defects exist did not surface under mutation. Budget it accordingly; it is not the fastest route to a bug.
Risk: the oracle is wrong too
rust-analyzer and pyright have bugs. Count a disagreement as a phantom only where the oracle is confident (a real definition symbol, not a local/unknown). Keep
known_oracle_disagreements.tomlwith a written reason per entry — reusing thename_fallback_ceilingdevice.Acceptance
known_oracle_disagreements.tomlwith mandatory reasons