Files
Jyotisha/docs/tasks/TASK-rectification-varga-resolution-research-20260930.md
T

9.1 KiB
Raw Blame History

TASK · 生时校正「盘型口径」研究:以分盘上升段为目标(研究单,2026-09-30)

基线

  • origin/staging @ 84475195(写作时 head;开工时以最新 origin/staging 为准)。
  • 分支 codex/rectification-varga-resolution-research-20260930,工作树 .worktrees/rectification-varga-resolution-research-20260930。
  • 离线研究,不改生产代码:不动 scripts/research/sealed_holdout_rerun.py::PRODUCTION_FILES 的 10 个冻结文件、active_rectification_event_engine.py、任何常数、frontend/。研究侧复用 scripts/research/scoring_research_lib.py(已与线上 score_candidates 逐分对账 0 差)与 futile_collect_stop_replay.py::evaluate_case(六题回放)。
  • 数据:references/real_case_calibration/minute_rectification_holdout_v5.json(77 例公开 AA;BUG-1090)。
  • 起点材料(Claude 2026-09-30 已算,未入库,在 /tmp/claude-1000/-workspace-Jyotisha/6c057fd4-eb1e-47e4-9dc1-3192c44dcc49/scratchpad/):chart_configs.py(77 例 ±60 逐分钟 D1/D9/D10/D12 上升,chart_configs_v5.json)、v5_intervals.py(truth 方向六题后交付区间,v5_intervals.json,231 行)。M0 先把它们入库并复现下表。

先读

  • docs/research/rectification_scoring_research_2026_09_29.md(打分层三条 no_benefit;稳定特征 0 个)
  • docs/research/rectification_minute_resolution_closure_2026_09_14.md §1–§2、§8–§9
  • docs/research/holdout_v5_build_2026_09_29.md(v5 基线:六题后头名 0.64 / 0.49 / 0.26,真值在区间 76/77、76/77、75/77,宽度 15 / 35 / 63)

事故实证与已算出的数字

产品 2026-09-29 真机:31 分钟窗答完题范围不动;2026-09-30 三轮打分研究证明星盘先验在分钟级几乎不携带信息(42 个特征在 77 例上 36–39 个是噪声,数据定权重比人拍权重更差)。产品追问"那用户信息没用了?"——答案是:分钟不可分,但用户真正要的是"用哪张盘解读",而分盘上升段远少于候选分钟。

Claude 2026-09-30 用 v5 实测(步长 1 分钟,raman / mean):

窗口内有几种上升(77 例)

窗口 D1 只有 1 种 D9 平均种数 D10 平均种数 D1×D9×D10 平均组合数
±10 64/77 2.4 2.5 3.8
±15 51/77 3.2 3.3 5.3
±30 37/77 5.4 5.3 9.7
±60 10/77 9.3 8.5 18.3

六题后交付区间(线上口径 unionStillValidRange,truth 方向)里盘型能否定下来

半径 盘 区间内只剩 1 种 ≤2 种 区间内多数分钟的盘型 = 真值盘型
±10 D1 75/77 77/77 76/77
±10 D9 22/77 68/77 68/77(88%)
±10 D10 27/77 63/77 65/77(84%)
±10 D1×D9×D10 15/77 34/77 52/77(68%)
±30 D9 / D10 7 / 4 24 / 22 33 / 34
±60 D9 / D10 1 / 2 11 / 10 15 / 25

读法:±10 级窗口,D1 几乎总是定的;D9 / D10 六题后能收到二选一(82–88%),按"多数"选对 84–88%——比"最可能的分钟"(头名 0.64)有用得多。±30 起分盘也分不开。

根因(产品层,不是算法层)

  1. 目标函数是"分钟":选题按"分开候选分钟"排序、交付按分钟区间展示、并列按分钟数。用户要的是"用哪张盘"。
  2. 窗口内 D1 / D9 / D10 一次都不换的用户(±15 时 D1 有 2/3)照样走完整流程。
  3. 不按问题域取盘:问事业的人被 D9 分歧点的题占用额度,反之亦然。
  4. 没有"分盘不可判"的诚实出口:±30 以上仍给分钟区间,实际上分盘已不可靠。

决策记录(产品 2026-09-30)

  • 批准本研究单:目标从"分钟"改为"分盘上升段";先在 v5 上量,不做实现。实现单等本单数字出来后另立。
  • 不改:引擎、11 张计分分盘、MIN_SEPARATION_LEAD、45 天闸门、七条采集线、选择题形式、采用 / 确认门、来源标签(BUG-690)、训练门与留一件对照。研究侧只在这些之上加"按段汇总"与"按段选题"。
  • 不加静态题(外貌、兄弟姐妹数、父母资料):D1 在窗内基本不变、D3 40 分钟一换,静态信息对所有候选同真,2026-09-30 产品已知悉。
  • 按问题域取盘:事业 → D1 + D10;婚恋 → D1 + D9;综合 / 报告 → D1 + D9 + D10(可加 D12 作参考,不作目标)。
  • 可信度按档位说话,阈值由本单校准,不得报假精度。
  • 打分层研究已关闭(BUG-1091 closed_by_design),本单不得重开权重 / 特征类实验。

硬红线

  1. 真值所在段不得被排除:每个盘、每档半径,"真值盘型段仍在候选段集合内"的比例 ≥ 现在"真值在区间"的比例(76/77、76/77、75/77)。任何一格变差即该方案不过门,把数字写进 PROGRESS,不得调阈值凑。
  2. 阈值-准确率表必须用留一法 / 分折给出(阈值在训练折定、在验证折量),并报全集拟合作对照。
  3. 稳健性必测:答错 1 题、答错 2 题(09-26 R1 口径);事件日期 ±7 天;LMT 时代记录(1900 年前出生)单独一列,不得剔除。
  4. 生产代码零改动;研究计分器与线上逐分对账(沿用 scoring_research_lib.reconcile_rows);PYTHONHASHSEED=0,所有 JSON 两次复跑逐字节一致。
  5. 快速门与开工基线逐条一致;隐私守卫全绿;文档不写真机会话内容。
  6. 负结果完整写出,不得只报有利档位或有利分盘。

任务分解

  • M0 入库起点(BUG-1105)
    • 把 chart_configs.py / v5_intervals.py 整理为 scripts/research/varga_resolution_lib.py + varga_resolution_probe.py(CLI:--radii、--vargas、--json-out),复现上面两张表,数字逐格一致;JSON 进 docs/research/varga_resolution_baseline_2026_09_30.json。
    • 验收:tests/test_varga_resolution_research.py(段切分正确性、跨午夜偏移、与上表逐格一致、两次复跑一致)。
  • M1 段级汇总与可信度校准
    • 定义:某盘的"段" = 窗口内该盘上升相同的连续分钟;段质量 = 段内候选分数之和(三种口径:raw、percent、均匀)。六题后(沿用线上出题)计算每盘"最强段占比"。
    • 输出:每盘 × 每档半径的阈值-准确率表(占比 ≥ t 时最强段 = 真值段的比例,t = 0.5 / 0.6 / 0.7 / 0.8 / 0.9),留一法;"剩余 ≤2 段"比例;真值段被排除比例(硬红线 1)。
    • 验收:表进研究文档;三口径对比;给出推荐口径与档位(较可信 / 倾向 / 分不开)的候选阈值。
  • M2 按段选题
    • 研究侧实现"段级信息增益"排序:同一探针池(event_probes 现有候选题,不改其文件),按"两侧候选分属不同段的质量差"排序,替代按分钟排序;只针对目标盘出题。
    • 比较(同样六题,或达到 M1 推荐阈值即停):题数、真值段保留率、最强段准确率、与线上选题逐格差异。
    • 验收:表进文档;若按段选题反而更差,如实写并给原因。
  • M3 按问题域取盘 + "不用校正"比例
    • 三种取盘策略(事业 / 婚恋 / 综合)各跑一遍:题数、准确率;并统计每档半径"目标盘在窗内只有 1 段"的比例(= 可以直接告知"不用校正"的用户)。
    • 验收:三策略表 + "不用校正"比例表。
  • M4 结论与实现单要点
    • docs/research/rectification_varga_resolution_2026_09_30.md:一句话结论表(M1–M3 各一行 + 是否建议实现)、推荐口径、档位阈值、每档半径的诚实出口(±30 以上只给 D1)、实现单要点(录入后段扫描 / 选题目标 / 段级汇总与停止 / 交付卡与采用卡文案,须点名要改的模块与不改的模块)。
    • docs/research/ACTIVE_FRONTS.md 索引;定论页 §10;docs/tasks/PROGRESS-rectification-varga-resolution-research-20260930.md;BUG-1105 状态;docs/tasks/README.md 行。

让步顺序

M0 > M1 > M3 > M2 > M4 的图表。M0 与 M1 缺一不可合入;M2 / M3 未做写 not_started,不得写成结论。

开工前置命令

git fetch origin --prune
git worktree add -b codex/rectification-varga-resolution-research-20260930 .worktrees/rectification-varga-resolution-research-20260930 origin/staging
cd .worktrees/rectification-varga-resolution-research-20260930
export PYTHONHASHSEED=0
python3 -m pytest -q tests/test_scoring_research.py tests/test_holdout_v5_schema.py tests/test_rectification_validation_integrity_gate.py tests/test_repo_privacy_markers.py   # 基线
python3 scripts/research/scoring_research.py --help
python3 scripts/research/futile_collect_stop_replay.py --help

BUG 编号

开工时核对 docs/BUG_HISTORY.md 最大号(写作时 BUG-1104)。本单:BUG-1105(校正目标函数是分钟而非用户要用的分盘;窗内盘型不变的用户被迫答题;无"分盘不可判"出口)。执行方以 investigating 登记,研究结束按结果改 resolved(有实现单)或 closed_by_design。关联 BUG-560、BUG-1084、BUG-1090、BUG-1091。