# PROGRESS · 生时校正「盘型口径」研究(2026-09-30) 任务书:`TASK-rectification-varga-resolution-research-20260930.md`(BUG-1105)。执行:Claude fork 子代理。分支 `codex/rectification-varga-resolution-research-20260930`,基线 `origin/staging` @ `c3162cdc`。只 commit 不 push。 ## 一句话 盘型口径在 v5 上成立:±10 六题后 D9 / D10 头段 = 真值 88% / 86%,占比 ≥ 0.6 留一法 92% / 90%;±30 只有约 1/4–1/3 用户能给可信分盘;±60 分盘 blocked(真值段保留低于基线)。按段选题在 ≤ ±30 有 +3~+7 例收益;提前停不过红线;「不用校正」出口只对只需 D1 的问题成立(三种策略均 0/77)。**建议立实现单**,要点在研究文档 §7。 ## 结果文件 - `docs/research/rectification_varga_resolution_2026_09_30.md`(结论、表、实现要点) - `docs/research/varga_resolution_baseline_2026_09_30.json`(M0 两张表 + 每例区间) - `docs/research/varga_resolution_research_2026_09_30.json`(M1–M3、稳健性,含每例) - `scripts/research/varga_resolution_lib.py`、`varga_resolution_probe.py`;`tests/test_varga_resolution_research.py`(17 条:15 合成 + 2 复现锁数) ## 硬红线逐条 | # | 要求 | 结果 | | --- | --- | --- | | 1 | 真值段保留 ≥ 76 / 76 / 75 | ±10、±30 所有盘 76 = 基线,过;±60 D9 / D10 / 组合 74 < 75,**不过** → ±60 分盘写 blocked。提前停(0.7 / 0.8)在 ±10 D9 保留 75 < 76,不过 → 不作为停止条件 | | 2 | 阈值-准确率留一法 + 全集对照 | 研究文档 §3.3 / §3.4 | | 3 | 稳健性:答错 1 / 2 题、±7 天、LMT 单列 | §6;±7 天与基线逐格相同(出题与作答未变);LMT 7 例单列 | | 4 | 生产代码零改动、对账、复跑一致 | `git diff --name-only` 只在 `scripts/research/`、`tests/`、`docs/`、`references/`(无);六题回放走线上 `posterior_state` 同一路径(`fewer_probes_card_replay` 逐例区间 0 差,见下);`PYTHONHASHSEED=0` 两次完整运行 `cmp` 逐字节一致 | | 5 | 快速门与基线一致、隐私守卫 | 见「门禁」 | | 6 | 负结果完整 | 提前停、±60、「不用校正」0/77、uniform 无收益、LMT 都写了 | ## M0 复现 - 表 1(窗内几种上升)与任务书逐格一致。 - 表 2(交付区间盘型)与任务书逐格一致。复现时修了起点脚本两处口径:跨午夜端点(23:15 出生、端点 00:01–23:59)偏移按 1440 折回;并列时取区间内最早出现的段,并新增「并列」计数——±30 起「多数 = 真值」有 21–42 例是并列后取先出现的段,这一列不能当准确率读。 - 与起点脚本 `v5_intervals.json` 逐例比区间端点:231 行 0 差。 ## 门禁 - 开工基线:`test_scoring_research.py` + `test_holdout_v5_schema.py` + `test_rectification_validation_integrity_gate.py` + `test_repo_privacy_markers.py` = 31 passed。 - 新增:`test_varga_resolution_research.py` 17 passed;隐私守卫 passed。 - 快速门:见文末(合并阶段补)。 ## 耗时 - 上下文缓存冷启动(77 例 × 三档)约 3 分钟;完整 M0–M3 + 稳健性一次约 12 分钟(run1 11m53s,run2 11m35s)。任务书估计「六题回放约 1 小时一次」偏高:`compute_candidate_static_contexts` 有磁盘缓存后,回放本身只需秒级。 ## 缺口 - 段级汇总的「质量」用的是线上簇分数(≥0)按簇内均摊;候选步长 2 分钟,段内奇数分钟按均摊补上。实现时若用逐分钟打分,数字会略有不同,需按实现重放。 - 按段选题的信息增益把「中性」候选当 ½ / ½ 的均匀硬币,与线上卡片更新(中性 delta 0)一致但不是唯一选择;只在 ≤ ±30 报收益。 - 提前停在 ±10 丢 1 例真值段:原因是答题不足时真值簇落后头名 ≥ 8 分;没有试「停后再多问一题」的变体。 - 开放集非盲测;封存盲测(`sealed_holdout_rerun.py`)不受影响。 ## 与另一会话 08:49 归档(staging `bedb4d7b`)的关系 - 该归档是同一任务书的**部分**执行:M0 首轮 + M1,M2/M3 `not_started`,第二次复跑未闭环,隐私扫描只覆盖提交子集。本分支为完整执行(M0–M3 + 稳健性,两次完整运行逐字节一致),合并时以本分支的 `varga_resolution_lib.py` / `varga_resolution_probe.py` / 测试为准。 - 两边表 1 的 D9/D10 段数在 ±30/±60 略有差异(如 ±30 D10 5.30 vs 5.60):对方按「连续段」计数(同一星座不连续再出现算两段),本分支按「不同上升星座数」计数;±10/±15 两边一致。 - 对方新增的 `scripts/research/varga_resolution_m1.py` 依赖其自有 lib 的函数名,与本分支 lib 不兼容,随合并移除;`artifacts/varga-resolution/` 两个 JSON 为其中间产物,一并移除;`BLOCKED.md` 与 `pre_work_error_ledger.md` 中对方的记录保留不改。