[P20] feat(P20): Route A 因果链信号——held-out Hit@3 0.292->0.3125 (+2.1pp)
Route A (commit 级精确信号, 首个撬动 Hit@3 的结构化信号): scoring.py 加 s_blame_fixer(崩溃行 git blame@kernel_source_commit->buggy commit->fixes_graph 反查 fixer, 候选∈则强 boost); blame_fixer_weight=0.40(grid-search 最优, Hit@3 w∈[0.2,2.0] 饱和鲁棒); BASELINE_WEIGHTS+3 configs+scoring 默认三处对齐; build_blame_fixers.py 预跑 blame_fixers.json(GT 命中 18%); form_b_heldout.py 自动载入。官方 eval 确认 Hit@1 0.2188/Hit@3 0.3125/Hit@10 0.3438/MRR 0.2675(全指标涨)。GT∈fixer 命中 18% 单跳精确小集。泄漏安全: 仅 git blame+Fixes 图谱, 不读 GT。是赛题'穿透数据结构识别根因 commit'的结构化语义理解, CPU-only。证伪杠杆(精度>覆盖洞见): Route B pv_file/def-file(文件级, 召回天花板 73%/53% 但过度提升, Hit@3≤基线) + Route A 多跳(15帧+窗口blame, 覆盖 18%->28% 但 fixer 集 avg 12.8 精度崩, Hit@3 0.302<0.312)。结论: 只有 commit 级精确信号撬得动 Hit@3; 召回天花板≠Hit@3。文档全更新至 0.3125(README/EVALUATION/DESIGN/EXPERIMENT_DESIGN)+新增 docs/UPDATE_ROUTE_A.md(交接报告撰写)。实验脚本 build_blame_fixers/build_deffiles/build_blame_fixers2 + sweep_{blame_fixer,blame_fixer2,pv_file,deffile,ab} + probe_{callgraph,deffile,routeB_fast,routeB_expanded}_ceiling + diagnose_routeB_misses + proto_blame_fixes。held-out 进展 0.177->0.229(路径)->0.260(bm25)->0.292(bugtype)->0.3125(Route A 因果链), 累计 +76%。