[P18] feat(P18): bugtype 症状↔描述信号 + 语义rerank证伪 + 方法学文档——held-out 0.260->0.292 (+3.1pp)
bugtype 信号: crash 症状类型↔fix 描述关键词词法桥(memory_leak→leak/kasan→kasan/null_ptr_deref→null pointer/uaf/hung 等 9 特异性类型, warning/panic/bug 太通用不映射), bugtype_weight=0.12(Hit@3 峰值, 更高换 Hit@1/MRR 伤 Hit@3), eval BASELINE/3 YAML/scoring 默认三处对齐。官方脚本验证 +3.1pp。语义 rerank 证伪(通用编码器三测试一致有害): bi-encoder(bge-small) recall 0.177→0.135 更差 + cross-encoder(bge-reranker-v2-m3) rerank 把已命中 fix 推到 rank5-12(n=5 Hit@3 1.0→0.4) + RRF(lex+CE) 仍丢 case——根因=症状↔修复语义鸿沟+无监督(PatchFinder 80% 靠 CVE 描述天然对齐+4789 标注监督, 两者皆无)。诊断: 54% 失败是召回漏(fix 被同文件 commit 淹没, 文件信号无法区分同文件几百 commit), 3 词法杠杆(召回上限/df过滤/path 特异性 8 变体)均 null→词法天花板 0.292。新增 docs/METHODOLOGY.md 方法学文档(10章: 指标/泄漏/BM25/倒排/RRF/管线/信号/语义鸿沟/编码器证伪/PatchFinder/诊断/答辩叙事)。文档全更新至 0.292(README/EVALUATION/DESIGN/HANDOFF)。诊断脚本 diagnose_recall_misses/sweep_bugtype/sweep_recall_caps/sweep_path_specificity/test_symbol_dffilter/ce_save_pools/ce_phase2。held-out 进展 0.177→0.229(路径)→0.260(bm25)→0.292(bugtype)。