# 生时校正「候选分不开」两轮研究的结论页(2026-09-14) > 这一页是索引与定论。**下次有人想从"打分权重不够"或"簇合并把候选并没了"出发再查一遍之前,先读这页。** > 口径:ayanamsa `raman`、node mode `mean`,步长 2 分钟,样本 `references/real_case_calibration/minute_rectification_holdout_v4.json`(20 例公开 Rodden-AA,每例 ≥7 件带年月事件、≥4 个领域)。不得与上游 true-node 数字直接对比。 ## 0. 起因 真机反复出现:带年月的选择题问完,仍剩 4–5 个候选并列(例如相对可能性 26% / 26% / 20%),用户只能蒙。 最初的假设有三个,两轮离线测量后**两个被证伪、一个被缩小**。 | 原始假设 | 结论 | | --- | --- | | A. 打分尺度对分钟不敏感(窗内恒定项 ≈ 11.5 分 vs 随分钟变化项 ≈ 2.1 分,约 5:1),加权重就能拉开 | **证伪**:五个改法三档半径无一过门 | | B. 交付区间宽度永远等于整个搜索窗(簇合并"从不丢簇") | **证伪**:那是不含淘汰的测量口径产物;线上含淘汰后是 15 / 33 / 56 分钟 | | C. 上游 `yinduzhanxing` 有我们缺的技法 | **证伪**:校正相关增量为零;上游自己也停在"整窗零淘汰" | ## 1. 已经定论的事实 ### 1.1 交付区间宽度:没有想象中糟,真值也从没丢 按线上口径(`unionStillValidRange` = 未淘汰且落后头名不足 8 分的簇覆盖并集),答完六题后: | 搜索半径 | 不含淘汰的并集(旧口径) | **线上真实宽度中位** | 真值落在交付区间 | | --- | ---: | ---: | ---: | | ±10 | 21 | **15** | 20/20 | | ±30 | 61 | **33** | 20/20 | | ±60 | 121 | **56** | 20/20 | ### 1.2 簇合并根本没运行过 `cap_clusters_by_adjacent_merge` 的 docstring 写着 *"Keep the whole window…merge adjacent weak ones"*,容易让人以为弱簇被并回整窗。**实测三档半径上合并次数中位都是 0**:步长 2 分钟时候选最多 61 个,低于 `MAX_PUBLIC_CLUSTERS = 64`,函数压根不触发。真值簇独立率三档都是 20/20。 **→ 「簇合并把候选并没了」是假线索,不要再从这里查。** ### 1.3 加权重类改法:全部不过门 | 改法 | 结果 | | --- | --- | | R1 分盘项除数(`2·len` → `len` / `√len` / 2) | 只在 ±10 提升头名命中 0.35→0.45,宽窗消失 | | R2 去底座(每事件减窗内最小值) | 命中与宽度都不动,仅引擎熵略降 | | R3 **KP 宫头子主计分** | ±10 命中 0.35 → 0.20(权重越大越差)。**不是假阴性**:20/20 例窗内子主确实变 5–9 次 | | R4 年精度事件改边际似然(max / lse) | `max` 命中升到 0.50,但并列率 0.05 → 0.50,把峰值摊成平手 | | R5 动态签名层 | 命中下降或持平,熵上升 | | W1 提高簇上限 / W2 按分差拒绝合并 | 无收益(见 1.2,合并不触发) | | W3 交付区间改分位覆盖 | ±10 / ±60 能收窄且覆盖不降,但 **±30 有一例把真值挤出区间** → 按红线不放行 | ### 1.4 问答链本身是有效的 基线引擎头名簇命中只有 0.35 / 0.15 / 0.10;**按真值方向回放六题后升到 0.80 / 0.55 / 0.35**。 也就是说:问对题是有用的,瓶颈不在"问了没用"。 ## 2. 还没解决的,只剩一件 **区间内部的候选并列。** 真机 26% / 26% / 20% 属于这一类:宽度已经收窄,但区间里前两名分数相等。 两轮实测的共同结论是:**靠调打分尺度拉不开**。要真正分开,只有两条路—— 1. 用户再提供**带年月的新经历**(这是目前唯一被证明有效的信息源); 2. 接受并列,把它诚实地呈现成"这两分钟分不开",而不是给一个看似有推荐的代表分钟。 第 2 条已经在产品侧落地(风格参考题前置、并列时说明"按现有信息分不开")。 ## 3. 产品决策存档 - **2026-09-14:KP 宫头子主参与评分**(产品负责人拍板,推翻 BUG-325 防复发条里的"不得把 KP 观察计分")。方向仍然有效,但 **R3 实测表明默认权重不能直接上线**,需要单独标定后再谈实现单。 - **2026-09-14:风格题(D9/D10)在出交付卡之前必问**(放宽版 A),仍然不淘汰候选、只做 ±1 排序微调;并删除了风格题的事件锚点闸,保留"候选在该分盘上上升星座 ≥2 种"的区分力门。 - **2026-09-14:领域门槛暂不收紧。** 上游 R3 要求淘汰与定案需 ≥3 个领域,本仓是 `MIN_ACCEPTANCE_DOMAINS=2`(`scripts/rectification/decision_policy.py:35`)。产品决定**先不动**,等 BUG-689(交付卡上邀请补经历)上线、有真机数据后再评估——那之后用户更容易补到第三个领域,收紧的代价更小。现在收紧会与「永远给结果」的口径冲突。 ## 4. 明确不采用 上游 `scripts/ashtakavarga.py` 的 `PL9_BAV_CELL_OVERRIDES`——为对齐某份 PDF 硬编码覆写特定行星/星座的 bindu 值。那是对答案,不是算法修正。 ## 5. 索引 | 文档 | 内容 | | --- | --- | | `docs/research/upstream_rectification_gap_2026_09_14.md` | 与上游 `yinduzhanxing` 的逐项能力对照、许可证边界 | | `docs/research/minute_resolution_2026_09_14.md` | 第一轮:R1–R5 打分尺度测量(**文末有勘误,务必读**) | | `docs/research/cluster_width_2026_09_14.md` | 第二轮:宽度口径校正、簇结构画像、W1–W3 | | `docs/research/holdout_v4_build_2026_09_14.md` | v4 封存基准的构建与标注协议 | | `docs/research/precision_gate_2026_09_14.md` | 出题闸门分档与 M1b 分盘配权。**勘误:M1b 的 V1/V2 标为未测**(与 V0 数字完全相同,且 V0 采集未打分盘标签);V3 结论保留 | | `scripts/research/minute_resolution_sweep.py` / `cluster_width_probe.py` | 两轮的测量脚本(离线,未接生产) | | `tests/test_minute_resolution_research.py` / `test_cluster_width_research.py` | 两轮脚本的回归测试 | ## 6. 给下一个人的三条提醒 1. **先确认指标口径再下结论。** 第一轮的头条结论就是被"不含淘汰"的宽度口径带偏的;第二轮 M0 才把它纠回来。 2. **不要从 docstring 推断行为。** 簇合并那条假线索就是这么来的——实测它从未触发。 3. **真值覆盖率优先于区间宽度。** 把区间做窄很容易,把真实分钟挤出去是更严重的错误(`AGENTS.md` Part B B4)。W3 就是卡在这一条。 ## 7. 勘误与补充(2026-09-26 离线研究) - §5 索引里「M1b 的 V1/V2 标为未测」已过时:2026-09-26 重跑后,V1/V2 **已实测、无收益**。它们在 ±30 / ±60 上按定义等于等权,在 ±10 上只微调分数、不改六题后指标。 - 任务书和 BUG-689 邀请语依据里的「1 分钟 ≈ 1.1 天大运边界位移」有误,实测中位 3.8 天(1.3–5.9)。45 天闸门对应 8–34 分钟,不是 40 分钟。 - 新增答错容错:答错 1 题,真值在区间 98–100%;答错 2 题,±30 / ±60 上 7–10% 的回放会挤出真值(两道反答 = 8 分 = 淘汰线)。 - 全文见 `docs/research/rectification_offline_research_2026_09_26.md`。 ## 8. v5 已建,后续判定以 v5 为准(2026-09-29) - 本页所有「过门 / 不过门」都在 20 例上判,1 例 = 5 个百分点,判定在噪声线上(任务书 `TASK-rectification-holdout-expansion-20260929.md`)。 - 开放评价集已扩到 **v5:77 例**(v4 的 20 例原样继承 + 57 例新增公开 Rodden-AA),每例 ≥7 件带引文的事件、≥4 领域;协议见 `holdout_v5_protocol_2026_09_29.md`,构建说明与基线成绩单见 `holdout_v5_build_2026_09_29.md`。 - v5 中 v4 子集的基线数字与本页 §1 逐格一致(复现表在构建说明里)。**此后任何打分方案的判定必须在 v5 上做**;`TASK-rectification-scoring-research-20260929.md` 的 R-A / R-B / R-C 以 v5 为准。 ## 9. 后续(2026-09-29 打分方法研究单,脚手架阶段) - §1.3「加权重类改法全部不过门」说的是**人拍权重**。2026-09-29 研究单换了路线:每条规则的权重由数据估(似然比,leave-one-case-out),允许负权重(只奖不罚是结构性问题),KP / Pranapada / D60 作为特征进入由数据定权重;另测「缺席证据」与「对已说事件追问月份」。 - 脚手架与 v4 流水线见 `docs/research/rectification_scoring_research_2026_09_29.md`;**判定必须在 v5(≥60 例)上做**,v4 上的数字只是调试参考(BUG-1090 / BUG-1091)。本页 §1–§7 的结论不因此改变。 - **2026-09-30 v5 判定(77 例,留一法按案例,`raw` 口径):全部不过门。** R-A 三个方案(只奖 / 加 KP·Pranapada·D60 / 允许负权重)在 ±10 / ±30 / ±60 × truth/opposite 六格头名全降(±10 0.68 → 0.57–0.60,±60 0.32 → 0.22–0.25);42 个特征里 36–39 个的 bootstrap 区间跨 0,其余 |log LR| ≤ 0.15,**v4 与 v5 同时稳定同号的特征为 0**。R-B 缺席年扣分按卡片强度把真值在区间从 76 / 76 / 75 压到 55 / 33 / 19,低强度不挤真值但头名全降。结论:**线上 11 条规则连同分钟级观察,对"哪一分钟"几乎没有信息;可校准的权重不存在。** §1.3 的结论由此从"人拍权重不过门"升级为"数据驱动权重也没有东西可校准"。BUG-560 维持 blocked,BUG-1091 closed_by_design。R-C(对已说的经历追问月份)与同子集基线比也没有一致收益(`rectification_scoring_research_2026_09_29.md` §4)。三条路都关闭。 ## 10. 盘型口径(2026-09-30 研究单,BUG-1105) - 打分层关闭后(§9),把校正目标从「分钟」改为「分盘上升段」在 v5 上量过:同样的六题、同样的卡片更新、同样的交付规则,只是按段汇总。±10 六题后 D1 头段 = 真值 76/77,D9 68/77(88%)、D10 66/77(86%);头段占比 ≥ 0.6 时留一法 92% / 90%。±30 D9 / D10 只有 57% / 64%,但占比 ≥ 0.6 的 18 / 24 例留一法 94% / 92%。±60 真值段保留 74/77 低于基线 75,分盘只能 blocked。 - 按段重排同一题库:≤ ±30 头段命中 +3~+7 例、宽度 −2 分钟、真值段保留不降;±60 更差。提前停(占比 0.7 / 0.8)少问 1–2 题但丢 1 例真值段,不过红线。 - 「不用校正」出口对婚恋 / 事业 / 综合三种取盘策略都是 0/77——D9 / D10 在 ±10 里总会换至少一次;只对只需 D1 的问题成立(±10 64/77)。 - 全文与实现要点:`docs/research/rectification_varga_resolution_2026_09_30.md`。