Context
Make-or-break for the "graph has independent value" thesis. Deployed EGO mixture (hand-set weights) scores below its own lexical component (0.352 < 0.402); union proves the ceiling ≥0.473. Instead of hand-tuning 10 category multipliers, learn a linear ranker over per-candidate features. Runtime stays a dot product: deterministic, zero-model-cost identity preserved, weights are interpretable (and are the per-category calibration Section 4.3 promised).
Features (initial set, ~15–20)
bm25_score, ego_score, ppr_score, cochange_count, import_hop_distance, same_dir, test_link, path_token_overlap, identifier_overlap, fragment_kind one-hot, I(f) importance prior, file_size_tokens, in_degree, sibling, proximity_decay
Tasks
Gate (pre-registered)
- held-out nontrivial_file_recall ≥ 0.50 AND file_precision ≥ 0.30
- If failed: RRF stays deployed default and paper v3 states plainly that the graph is a complement, not a dominant signal. Commit the negative result with REVERT-tag discipline.
Depends on: 04-cochange-corpus, 06-multihop-imports
Context
Make-or-break for the "graph has independent value" thesis. Deployed EGO mixture (hand-set weights) scores below its own lexical component (0.352 < 0.402); union proves the ceiling ≥0.473. Instead of hand-tuning 10 category multipliers, learn a linear ranker over per-candidate features. Runtime stays a dot product: deterministic, zero-model-cost identity preserved, weights are interpretable (and are the per-category calibration Section 4.3 promised).
Features (initial set, ~15–20)
bm25_score, ego_score, ppr_score, cochange_count, import_hop_distance, same_dir, test_link, path_token_overlap, identifier_overlap, fragment_kind one-hot, I(f) importance prior, file_size_tokens, in_degree, sibling, proximity_decay
Tasks
ScoringMode::Learned; weights table committed + printed by--explainGate (pre-registered)
Depends on: 04-cochange-corpus, 06-multihop-imports