docs(research): measure minute-resolution scoring; no variant clears all radii
Independent Staging Quality Gate / validate (push) Failing after 9m27s
Independent Staging Quality Gate / publish (push) Skipped

Build holdout v4 from the public AA set, correct the two v3 dates, and sweep
R1–R5 plus pairs offline. No production scoring defaults change. No
implementation brief: delivered width stays the full window on every radius.
This commit is contained in:
jesse-ux
2026-09-14 20:43:27 +08:00
parent 9943a05a01
commit 2d2467dca1
11 changed files with 60785 additions and 4 deletions
@@ -0,0 +1,49 @@
# Holdout v4 构建说明(2026-09-14
- 口径:ayanamsa `raman`node mode `mean`
- 父集:`references/real_case_calibration/minute_rectification_holdout_v3.json`20 例公开 Rodden-AA)。
- 产物:`references/real_case_calibration/minute_rectification_holdout_v4.json`
- 生成脚本:`scripts/research/holdout_v4_build.py`
- 隐私:只用公开名人传记,不用真实用户资料。
## 为什么 v3 不能当尺度改动的否决门
| 项 | v3 | 真实会话 / 本产品 |
| --- | --- | --- |
| 每例事件 | 恰好 3 | 518 |
| 每例领域 | 2–3 | ≥4 才像一次问完的会话 |
| 搜索半径 | 全部 ±10 | 产品有 ±15/30/60/120 |
| 来源审计 | `invalidated_after_replay`(两处日期错) | 应用工作日期必须是核实过的 |
| 事件精度 | 多为 year | 会话里 year 也多,但 3 条 year 事件几乎没有分钟方差 |
BUG-560 用 v3 否决 offset(覆盖 12/20)时,窗口本身只有 21 分钟、每例 3 件事。底座 11.5 对变化项 2.1 的比例在这种样本上几乎看不到差异。v4 用来量尺度,不是新的封存盲测门。
## v3 日期修正(任务 0
| 事件 | 提交值 | 核实值 | 来源 |
| --- | --- | --- | --- |
| `robbins_marriage_1968` | 1968(年) | 1967-03-10 | Wikipedia *John Robbins (author)* |
| `takamoto_joined_disney_1947` | 1947(年) | 1945(年) | Wikipedia *Iwao Takamoto* |
v3 的 `source_audit_status` 改为 `corrected_known_date_errors`。它仍是每例 3 件事,**不是发布门**。
## v4 协议
1. 出生时间与地点原样继承 v3 的 Astro-Databank AA 记录。
2. 每例补到 ≥7 件带年月事件、≥4 个领域。事件来自 Wikipedia / Britannica / 奥斯卡官方 / 白宫档案等公开页,且 `independent_of_birth_source=true`
3. 工作日期用核实过的公历,不再保留已被审计否定的盲测错年。
4. 三档半径 ±10 / ±30 / ±60 写在数据集上,由测量脚本分别跑。真实分钟所在簇随打分方案变,记在 sweep 结果里,不写死在 holdout 里。
5. `truth_hidden_from_ranker=false`:这是开放评价集,用来看尺度,不是第二份封存盲测。
## 与 v3 的差异
- 20 例名单不变。
- 事件从 3 增到 ≥7,领域从 2–3 增到 ≥4。
- 两处错年按核实值改正,并进入 v4 工作日期。
- 明确三档半径和本仓口径。
## 基线成绩单
当前线上算法在 v4 上的五个指标见 `docs/research/minute_resolution_2026_09_14.md`。那份表才是后续改法的对照,不是 v3 的 12/20。
摘要:±10 / ±30 / ±60 头名簇命中 0.35 / 0.15 / 0.10,区间覆盖 1.00,宽度中位等于整窗(21 / 61 / 121),并列率 0.05 / 0.05 / 0.00。
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,181 @@
# 分钟分辨率打分尺度测量(2026-09-14)
- 口径:ayanamsa `raman`node mode `mean`。不得与上游 true-node 数字直接对比。
- 数据:`references/real_case_calibration/minute_rectification_holdout_v4.json`20 例公开 Rodden-AA,每例 ≥7 件事、≥4 个领域。
- 半径:±10, ±30, ±60,步长 2 分钟。
- 性质:离线测量。生产 `active_rectification_event_engine.py` / `scoring_service.py` / `candidate_contrast.py` 默认值未改。
- D1:KP 宫头子主计分方向已拍板;本文件只报告权重收益,不改线上默认。
- 过门标准(任务书):命中率与区间覆盖率不降、并列率下降、区间宽度中位数下降。三档半径要一致才算「有收益」。
## 结论
**没有改法在 ±10 / ±30 / ±60 同时过门,不立实现单。** 线上默认权重保持不动。
读数字时先看这件事:三个半径上,所有方案的交付区间宽度中位数都等于整个搜索窗(21 / 61 / 121)。公开簇并集铺满了窗口,所以「去底座 / 加权 / 换签名」几乎改不了用户看到的范围卡宽度。这是本轮最硬的结果。
| 改法 | 判定 | 要点 |
| --- | --- | --- |
| **R1 分盘除数** | 不确定 | ±10 头名簇命中 0.35→0.45`len` / `sqrt`),宽窗上消失。宽度不变。 |
| **R2 去底座** | 无收益 | 三档半径命中和宽度都不动;引擎熵有下降(±10:2.56→2.39),但过门不看熵。 |
| **R3 KP 子主计分** | 无收益 / 不确定 | 20/20 例在 ±10 窗内宫头子主都变了(5–9 次),不是「窗内不变」的假阴性。±10 命中从 0.35 降到 0.20(权重 1.0),权重越大越差。产品方向仍有效,**默认权重不能直接上线**。 |
| **R4 年精度边际** | 无收益 / 不确定 | `lse` 与基线几乎相同。`max` 在 ±10 命中到 0.50,但并列率 0.05→0.50,把峰值摊成平手。 |
| **R5 动态签名层** | 无收益 | 命中下降或持平,熵上升。 |
| 两两组合 | 无收益或不确定 | 没有一组三档半径同时过门。`R1+R2` 只在 ±10 复制了 R1 的命中提升。 |
基线本身:真分钟从未被挤出交付区间(覆盖率 1.00);引擎头名簇命中只有 0.35 / 0.15 / 0.10。六题真值方向回放后头名 0.80 / 0.55 / 0.35——会话里「问完仍并列」主要不是 holdout 上的引擎头名问题,而是**范围卡宽度等于整窗**。
若下一轮还做,优先查「为什么公开簇并集永远铺满搜索窗」(签名层在 ±10 内是否几乎每分钟一组,或 `cap_clusters_by_adjacent_merge` 把弱簇并回整窗),而不是继续加权重。R3 若要再试,需要单独标定,且不得降低 ±10 命中。
### 分方案判定明细
| 改法 | 判定 | 说明 |
| --- | --- | --- |
| R1@len | **uncertain** | ±10:benefit;±30:no_benefit;±60:no_benefit |
| R1@sqrt | **uncertain** | ±10:benefit;±30:no_benefit;±60:no_benefit |
| R1@fixed2 | **uncertain** | ±10:benefit;±30:benefit;±60:no_benefit |
| R2 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R3@0.5 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R3@1.0 | **uncertain** | ±10:no_benefit;±30:benefit;±60:no_benefit |
| R3@2.0 | **uncertain** | ±10:no_benefit;±30:benefit;±60:no_benefit |
| R4@max | **uncertain** | ±10:uncertain;±30:uncertain;±60:uncertain |
| R4@lse | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R5 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R1+R2 | **uncertain** | ±10:benefit;±30:no_benefit;±60:no_benefit |
| R1+R3 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R1+R4 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R1+R5 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R2+R3 | **uncertain** | ±10:no_benefit;±30:benefit;±60:no_benefit |
| R2+R4 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R2+R5 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
| R3+R4 | **uncertain** | ±10:no_benefit;±30:benefit;±60:no_benefit |
| R3+R5 | **uncertain** | ±10:no_benefit;±30:benefit;±60:no_benefit |
| R4+R5 | **no_benefit** | ±10:no_benefit;±30:no_benefit;±60:no_benefit |
## 基线成绩单
| 半径 | N | 真分钟在头名簇 | 真分钟在交付区间 | 区间宽度中位 | 并列率 | 引擎熵 | 真值被挤出 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| ±10 | 20 | 0.35 | 1 | 21 | 0.05 | 2.559 | 0 |
| ±30 | 20 | 0.15 | 1 | 61 | 0.05 | 4.038 | 0 |
| ±60 | 20 | 0.1 | 1 | 121 | 0 | 4.992 | 0 |
## 分半径指标
### ±10 分钟
| 方案 | 头名簇命中 | 区间覆盖 | 宽度中位 | 并列率 | 熵0 | 熵6 | 挤出 | 过窄 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| baseline | 0.35 | 1 | 21 | 0.05 | 2.559 | 2.141 | 0 | 0 |
| R1@len | 0.45 | 1 | 21 | 0.05 | 2.554 | 2.139 | 0 | 0 |
| R1@sqrt | 0.45 | 1 | 21 | 0.05 | 2.554 | 2.139 | 0 | 0 |
| R1@fixed2 | 0.4 | 1 | 21 | 0.05 | 2.559 | 2.141 | 0 | 0 |
| R2 | 0.35 | 1 | 21 | 0.05 | 2.387 | 2.034 | 0 | 0 |
| R3@0.5 | 0.25 | 1 | 21 | 0 | 2.56 | 2.142 | 0 | 0 |
| R3@1.0 | 0.2 | 1 | 21 | 0 | 2.56 | 2.143 | 0 | 0 |
| R3@2.0 | 0.15 | 1 | 21 | 0 | 2.557 | 2.142 | 0 | 0 |
| R4@max | 0.5 | 1 | 21 | 0.5 | 2.56 | 2.143 | 0 | 0 |
| R4@lse | 0.35 | 1 | 21 | 0.05 | 2.559 | 2.141 | 0 | 0 |
| R5 | 0.25 | 1 | 21 | 0.05 | 2.648 | 2.194 | 0 | 0 |
| R1+R2 | 0.45 | 1 | 21 | 0.05 | 2.356 | 2.025 | 0 | 0 |
| R1+R3 | 0.25 | 1 | 21 | 0 | 2.556 | 2.142 | 0 | 0 |
| R1+R4 | 0.35 | 1 | 21 | 0.05 | 2.554 | 2.139 | 0 | 0 |
| R1+R5 | 0.35 | 1 | 21 | 0.05 | 2.643 | 2.192 | 0 | 0 |
| R2+R3 | 0.2 | 1 | 21 | 0 | 2.485 | 2.088 | 0 | 0 |
| R2+R4 | 0.35 | 1 | 21 | 0.05 | 2.386 | 2.035 | 0 | 0 |
| R2+R5 | 0.25 | 1 | 21 | 0.05 | 2.47 | 2.104 | 0 | 0 |
| R3+R4 | 0.2 | 1 | 21 | 0 | 2.56 | 2.143 | 0 | 0 |
| R3+R5 | 0.15 | 1 | 21 | 0 | 2.649 | 2.196 | 0 | 0 |
| R4+R5 | 0.25 | 1 | 21 | 0.05 | 2.648 | 2.195 | 0 | 0 |
### ±30 分钟
| 方案 | 头名簇命中 | 区间覆盖 | 宽度中位 | 并列率 | 熵0 | 熵6 | 挤出 | 过窄 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| baseline | 0.15 | 1 | 61 | 0.05 | 4.038 | 2.576 | 0 | 0 |
| R1@len | 0.15 | 1 | 61 | 0.05 | 4.03 | 2.576 | 0 | 0 |
| R1@sqrt | 0.15 | 1 | 61 | 0.05 | 4.03 | 2.576 | 0 | 0 |
| R1@fixed2 | 0.2 | 1 | 61 | 0.05 | 4.037 | 2.576 | 0 | 0 |
| R2 | 0.15 | 1 | 61 | 0.05 | 3.915 | 2.546 | 0 | 0 |
| R3@0.5 | 0.1 | 1 | 61 | 0 | 4.039 | 2.577 | 0 | 0 |
| R3@1.0 | 0.15 | 1 | 61 | 0 | 4.039 | 2.577 | 0 | 0 |
| R3@2.0 | 0.15 | 1 | 61 | 0 | 4.036 | 2.577 | 0 | 0 |
| R4@max | 0.2 | 1 | 61 | 0.25 | 4.039 | 2.578 | 0 | 0 |
| R4@lse | 0.15 | 1 | 61 | 0.05 | 4.038 | 2.576 | 0 | 0 |
| R5 | 0.1 | 1 | 61 | 0.05 | 4.096 | 2.576 | 0 | 0 |
| R1+R2 | 0.15 | 1 | 61 | 0.05 | 3.874 | 2.541 | 0 | 0 |
| R1+R3 | 0.1 | 1 | 61 | 0 | 4.033 | 2.577 | 0 | 0 |
| R1+R4 | 0.15 | 1 | 61 | 0.05 | 4.03 | 2.576 | 0 | 0 |
| R1+R5 | 0.1 | 1 | 61 | 0.05 | 4.088 | 2.576 | 0 | 0 |
| R2+R3 | 0.15 | 1 | 61 | 0 | 3.973 | 2.557 | 0 | 0 |
| R2+R4 | 0.15 | 1 | 61 | 0.05 | 3.91 | 2.547 | 0 | 0 |
| R2+R5 | 0.1 | 1 | 61 | 0.05 | 3.97 | 2.546 | 0 | 0 |
| R3+R4 | 0.15 | 1 | 61 | 0 | 4.039 | 2.578 | 0 | 0 |
| R3+R5 | 0.15 | 1 | 61 | 0 | 4.097 | 2.577 | 0 | 0 |
| R4+R5 | 0.1 | 1 | 61 | 0.05 | 4.096 | 2.576 | 0 | 0 |
### ±60 分钟
| 方案 | 头名簇命中 | 区间覆盖 | 宽度中位 | 并列率 | 熵0 | 熵6 | 挤出 | 过窄 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| baseline | 0.1 | 1 | 121 | 0 | 4.992 | 2.678 | 0 | 0 |
| R1@len | 0.1 | 1 | 121 | 0 | 4.986 | 2.677 | 0 | 0 |
| R1@sqrt | 0.1 | 1 | 121 | 0 | 4.987 | 2.677 | 0 | 0 |
| R1@fixed2 | 0.1 | 1 | 121 | 0 | 4.992 | 2.678 | 0 | 0 |
| R2 | 0.1 | 1 | 121 | 0 | 4.918 | 2.668 | 0 | 0 |
| R3@0.5 | 0.05 | 1 | 121 | 0 | 4.995 | 2.678 | 0 | 0 |
| R3@1.0 | 0.05 | 1 | 121 | 0 | 4.996 | 2.678 | 0 | 0 |
| R3@2.0 | 0.1 | 1 | 121 | 0 | 4.995 | 2.678 | 0 | 0 |
| R4@max | 0.1 | 1 | 121 | 0.2 | 4.993 | 2.678 | 0 | 0 |
| R4@lse | 0.1 | 1 | 121 | 0 | 4.992 | 2.678 | 0 | 0 |
| R5 | 0.1 | 1 | 121 | 0 | 5.033 | 2.677 | 0 | 0 |
| R1+R2 | 0.1 | 1 | 121 | 0 | 4.903 | 2.667 | 0 | 0 |
| R1+R3 | 0.05 | 1 | 121 | 0 | 4.992 | 2.678 | 0 | 0 |
| R1+R4 | 0.1 | 1 | 121 | 0 | 4.987 | 2.677 | 0 | 0 |
| R1+R5 | 0.1 | 1 | 121 | 0 | 5.027 | 2.677 | 0 | 0 |
| R2+R3 | 0.05 | 1 | 121 | 0 | 4.954 | 2.671 | 0 | 0 |
| R2+R4 | 0.1 | 1 | 121 | 0 | 4.919 | 2.669 | 0 | 0 |
| R2+R5 | 0.1 | 1 | 121 | 0 | 4.956 | 2.668 | 0 | 0 |
| R3+R4 | 0.1 | 1 | 121 | 0 | 4.996 | 2.679 | 0 | 0 |
| R3+R5 | 0.05 | 1 | 121 | 0 | 5.037 | 2.678 | 0 | 0 |
| R4+R5 | 0.1 | 1 | 121 | 0 | 5.033 | 2.677 | 0 | 0 |
## R3 KP 窗内变化
只统计 ±10 窗内目标宫宫头子主至少变化一次的例子。
| 例子 | 窗内变化次数 | 计入 R3 |
| --- | ---: | ---: |
| barack_obama_1961_aa_v4_holdout | 8 | yes |
| angelina_jolie_1975_aa_v4_holdout | 8 | yes |
| tiger_woods_1975_aa_v4_holdout | 7 | yes |
| elizabeth_taylor_1932_aa_v4_holdout | 9 | yes |
| elizabeth_montgomery_1933_aa_v4_holdout | 7 | yes |
| pablo_picasso_1881_aa_v4_holdout | 8 | yes |
| sigmund_freud_1856_aa_v4_holdout | 5 | yes |
| salma_hayek_1966_aa_v4_holdout | 7 | yes |
| steve_reich_1936_aa_v4_holdout | 7 | yes |
| albert_brooks_1947_aa_v4_holdout | 7 | yes |
| paul_ryan_1970_aa_v4_holdout | 8 | yes |
| tom_kennedy_1927_aa_v4_holdout | 7 | yes |
| andrew_windsor_1960_aa_v4_holdout | 8 | yes |
| sean_lennon_1975_aa_v4_holdout | 6 | yes |
| joseph_kennedy_iii_1980_aa_v4_holdout | 9 | yes |
| kurt_cobain_1967_aa_v4_holdout | 7 | yes |
| john_robbins_1947_aa_v4_holdout | 8 | yes |
| chad_everett_1937_aa_v4_holdout | 8 | yes |
| bernd_eichinger_1949_aa_v4_holdout | 8 | yes |
| iwao_takamoto_1925_aa_v4_holdout | 7 | yes |
## 方法
1. 每个例子先算生产静态盘(含 KP 观察),再按事件抽样日打生产分。
2. R1 按 `*_domain_varga` 规则把 `2*len` 换成 `len` / `sqrt(len)` / 固定 2。
3. R2 在事件级减去当前窗口最小值。
4. R3 把目标宫 KP 子主/次子主与当时 Vim MD/AD/PD 比对,权重 0.5 / 1.0 / 2.0。
5. R4 对年精度 12 个月样本取 max 或 log-sum-expT=1)。
6. R5 按本例有证据的领域动态取签名层,去掉同日恒定的 `md`
7. 交付区间 = 公开簇成员分钟的并集。并列 = 头名簇分数并列。
8. 熵曲线用生产探针 + 真值方向最优答,最多 6 题。
配对组合用 R1=`len`、R3=1.0、R4=`lse`
@@ -0,0 +1,44 @@
# 进度 · 分钟分辨率打分尺度研究(2026-09-14)
## 范围
- 分支:`codex/rectification-minute-resolution-research-20260914`(基于 `origin/staging` @ `9943a05a`
- 任务单:`docs/tasks/TASK-rectification-minute-resolution-research-20260914.md`
- 结果:`docs/research/minute_resolution_2026_09_14.md` + 同名 `.json`
- v4`references/real_case_calibration/minute_rectification_holdout_v4.json``docs/research/holdout_v4_build_2026_09_14.md`
- 脚本:`scripts/research/minute_resolution_sweep.py`(离线,不进 API
- 未改 `active_rectification_event_engine.py``scoring_service.py``candidate_contrast.py`、确认门、并列判据
- 本单不占 BUG 号
## 完成
- 开工读了对照报告、BUG-325 / 560 / 570。D1 推翻的是 BUG-325「不得把 KP 观察计分」这一条;确认门仍不动。
- 任务 0:v3 两处错年写入工作日期(Robbins 婚期 1967-03-10Takamoto 入职迪士尼 1945),`source_audit_status=corrected_known_date_errors`。v4 仍是 20 例公开 AA,每例 ≥7 件事、≥4 个领域,半径 ±10/±30/±60。
- 任务 1:五个改法单独测 + 两两组合。口径 ayanamsa=`raman`、node mode=`mean`。20/20 例跑完,错误 0。
- R3:±10 窗内 KP 宫头子主 20/20 都变(5–9 次),没有「窗内不变」的例子被稀释。
## 验收数字
- 基线(v4,当前线上算法):
| 半径 | 头名簇命中 | 区间覆盖 | 宽度中位 | 并列率 | 引擎熵 | 六题回放头名 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| ±10 | 0.35 | 1.00 | 21 | 0.05 | 2.56 | 0.80 |
| ±30 | 0.15 | 1.00 | 61 | 0.05 | 4.04 | 0.55 |
| ±60 | 0.10 | 1.00 | 121 | 0.00 | 4.99 | 0.35 |
- 所有方案的交付宽度中位数都等于整个搜索窗。真值挤出 = 0,过窄 = 0。
- R1 `len`/`sqrt`:±10 命中 0.35→0.45,宽窗上无提升。
- R2:命中/宽度不动,±10 熵 2.56→2.39。
- R3 权重 1.0:±10 命中 0.35→0.20。
- R4 `max`:±10 命中 0.50,并列率 0.05→0.50。
- 判定:**没有改法三档半径同时过门,不立实现单。**
- `python -m pytest tests/test_minute_resolution_research.py`9 passed(本机 pytest 9.1;仓库 `minversion` 8.0)。
- 本机无项目 `.venv`,未跑 `run_quality_gate.py --profile quick`。脚本与测试会进门禁路径。
## 未做
- 未改线上计分
- 未把研究脚本接到 API
- 未立实现单(过门失败)
- 未做 PyJHora / VedAstro / jyotishganit 同一盘对照
+1 -1
View File
@@ -184,7 +184,7 @@
| `TASK-rectification-targeted-card-dead-20260913.md` | `PROGRESS-rectification-targeted-card-dead-20260913.md` | **P0**:定向补事卡在快照投影里拿不到 `choice_card`(承接焦点分支不重建 `choice_frame`),卡片看得见点不动、流程停在采集等待态;模型还会把定向题改写成口述题(BUG-669~671)。先于 tie-break 修复单执行 | 待验收 | `codex/rectification-targeted-card-dead-20260913` |
| `TASK-rectification-minute-resolution-research-20260914.md` | `PROGRESS-rectification-minute-resolution-research-20260914.md` | **研究单**:候选分不开的根因是打分尺度——窗口内恒定项 11.5 分 vs 随分钟变化项 2.125 分(≈5:1)。先修封存基准(v3 每例仅 3 件事且被标 invalidated)出 v4,再离线量五个改法:分盘除数、去底座、**KP 宫头子主计分(产品 09-14 拍板,推翻 BUG-325 一条红线)**、年精度事件改边际似然、聚类签名层对齐。有收益才立实现单 | 待执行 | `codex/rectification-minute-resolution-research-20260914` |
| `TASK-rectification-minute-resolution-research-20260914.md` | `PROGRESS-rectification-minute-resolution-research-20260914.md` | **研究单**:候选分不开的根因是打分尺度——窗口内恒定项 11.5 分 vs 随分钟变化项 2.125 分(≈5:1)。先修封存基准(v3 每例仅 3 件事且被标 invalidated)出 v4,再离线量五个改法:分盘除数、去底座、**KP 宫头子主计分(产品 09-14 拍板,推翻 BUG-325 一条红线)**、年精度事件改边际似然、聚类签名层对齐。有收益才立实现单 | 待验收 | `codex/rectification-minute-resolution-research-20260914` |
| `TASK-rectification-tiebreak-before-card-20260914.md` | `PROGRESS-rectification-tiebreak-before-card-20260914.md` | **P0**:点「再答两道参考题」服务端 ok 但界面无反应(`requestTieBreak` 的 `loadCaseSnapshot()` 不带合并回调,新 turn 不入对话区)(BUG-685);产品拍板放宽版 A——出交付卡前只要参考题可用且没用过就先问两道(不看分差),卡上收起按钮(BUG-686);交付文案列出用户已拒答的线(BUG-687) | 待验收 | `codex/rectification-tiebreak-before-card-20260914` |