feat: gap miner — rank unresolved refs into a mission queue clamped by phantom==0 #47

Open
opened 2026-07-28 20:39:29 +02:00 by buildagent · 0 comments
Member

P3 — the mechanism that turns the corpus into a development engine. Depends on #40, #45.

From _prdoc/records/brainstorm-2026-07-28-oss-corpus-test-system.md §5.1.

What

After each corpus run, aggregate unresolved refs by (lang, reason_code, syntactic shape of the call site) and rank by frequency × repos affected:

lang=ruby   reason=unresolved_bare  shape=block_yield_call    n=1204  repos=3
lang=rust   reason=no_candidate     shape=macro_expanded      n= 890  repos=4
lang=php    reason=unresolved_qual  shape=facade_static_call  n= 655  repos=2  [WONTFIX: unresolvable]

Every row is a mission candidate shipping with its own success metric: fix it, re-run, watch n drop.

Why it matters

This is the I025/I026/I037 process — which has a strong track record — but prioritised by real-world frequency across many codebases instead of by whatever happened to annoy someone while dogfooding this one repo. All three of those missions started from a single anecdotal observation.

The clamp (non-negotiable)

Every recall mission is gated by the Tier-A phantom count staying at 0 (#43, precision_gate.rs). Recall may only rise while phantoms stay at zero. Without that clamp "improve recall" degenerates into "resolve more, guess more" — the exact failure this project has spent I023/I025/I026/I033/I037 avoiding, and the reason the build-vs-buy verdict rejected ctags.

WONTFIX rows are a feature

Laravel facades, Rails method_missing, proc-macro-generated call sites are unresolvable in principle. Marking them as documented ceilings — the same device as oracle.toml's name_fallback_ceiling — keeps them out of the queue permanently and turns the honesty stance into a recorded engineering decision rather than an omission.

Acceptance

  • miner runs off corpus output, no new schema
  • ranked table emitted as a CI artifact per run
  • WONTFIX classification supported with a mandatory reason
  • each row carries a reproducible measurement so a mission can show its own delta
  • documented that no recall mission merges with phantom_count > 0
**P3 — the mechanism that turns the corpus into a development engine. Depends on #40, #45.** From `_prdoc/records/brainstorm-2026-07-28-oss-corpus-test-system.md` §5.1. ## What After each corpus run, aggregate unresolved refs by `(lang, reason_code, syntactic shape of the call site)` and rank by frequency × repos affected: ``` lang=ruby reason=unresolved_bare shape=block_yield_call n=1204 repos=3 lang=rust reason=no_candidate shape=macro_expanded n= 890 repos=4 lang=php reason=unresolved_qual shape=facade_static_call n= 655 repos=2 [WONTFIX: unresolvable] ``` Every row is a mission candidate shipping with its own success metric: fix it, re-run, watch `n` drop. ## Why it matters This is the I025/I026/I037 process — which has a strong track record — but prioritised by **real-world frequency across many codebases** instead of by whatever happened to annoy someone while dogfooding this one repo. All three of those missions started from a single anecdotal observation. ## The clamp (non-negotiable) **Every recall mission is gated by the Tier-A phantom count staying at 0** (#43, `precision_gate.rs`). Recall may only rise while phantoms stay at zero. Without that clamp "improve recall" degenerates into "resolve more, guess more" — the exact failure this project has spent I023/I025/I026/I033/I037 avoiding, and the reason the build-vs-buy verdict rejected ctags. ## WONTFIX rows are a feature Laravel facades, Rails `method_missing`, proc-macro-generated call sites are **unresolvable in principle**. Marking them as documented ceilings — the same device as `oracle.toml`'s `name_fallback_ceiling` — keeps them out of the queue permanently and turns the honesty stance into a recorded engineering decision rather than an omission. ## Acceptance - [ ] miner runs off corpus output, no new schema - [ ] ranked table emitted as a CI artifact per run - [ ] WONTFIX classification supported with a mandatory reason - [ ] each row carries a reproducible measurement so a mission can show its own delta - [ ] documented that no recall mission merges with phantom_count > 0
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
h-dv/code-index#47
No description provided.