test(query): 锁定 mixed/session-only/message-only displayRow 契约
加 3 条测试覆盖 ranking.shouldUseDisplayRow 的展示行选择规则:
- mixed: 同 session 同时含 strong session hit 与 weak message hit 时,
displayRow 选 message (matchSeq 是 number,read-range 可重锚),
但 sessionScore 仍由 titlePhrase/titleTermHits 顶上去压过 message-only
对照 session
- session-only: 仅 session-level 命中 → matchSource = "session", matchSeq = null
- message-only: 仅 message body 命中 → matchSource = "message", matchSeq 为
number,作为对照基线
锁定"session signal 提排名 + message signal 给定位"双轨契约。对应
review 报告 P1-2。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Entire-Checkpoint: de3ec2613fde