From 749c7541ad1b7baa1e2559a63f35169b4897d4e5 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Mon, 14 Sep 2026 14:36:10 +0000 Subject: [PATCH] docs(tasks): research the precision-adaptive probe gate, and ask for exact dates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 出生时间每差 1 分钟,Vimshottari 边界只平移约 1.1 天;而 _boundary_windows 用固定 45 天(刷新 30 天)闸门,且全文不读证据精度。20 分钟窗内候选边界全挤在三周内被 整批丢掉——这就是「六题之后引擎出不来题」的算术原因。研究单量闸门按年/月/日分档 的收益,必测 ±3/±7/±14 天记错时真值是否被挤出(挤出即不推荐)。v4 实测有 59 件日 精度事件可用。BUG-689 的邀请文案同步加 D1b:优先请用户说记得确切日期的事,但不得 承诺能定到分钟。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu --- docs/tasks/README.md | 2 + ...ion-adaptive-boundary-research-20260914.md | 110 ++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 docs/tasks/TASK-rectification-precision-adaptive-boundary-research-20260914.md diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 60abf15c..42aadbbd 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -186,6 +186,8 @@ | `TASK-rectification-tiebreak-hold-exit-fix-20260914.md` | `PROGRESS-rectification-tiebreak-hold-exit-20260914.md` | **P0 回归修复单**:BUG-686 的风格题前置把耗尽与收口路径的交付也压住了,`npm test` 由 27 红涨到 33(6 条「该交付却不交付」)。后续 `6fd7925a` 只改断言把它们改绿:4 条文案放宽可接受,2 条实质弱化(「恰好一条交付闸」退化成短路、参考题确认语被算作出口载体)必须恢复;行为层根因未动。hold 要带出口、不得作用于 exhausted/closed-ceiling,最多 hold 一次(BUG-688)。尚未部署,未影响线上 | 待验收 | `codex/rectification-tiebreak-hold-exit-20260914` | +| `TASK-rectification-precision-adaptive-boundary-research-20260914.md` | `PROGRESS-rectification-precision-gate-research-20260914.md` | **研究单**:出题闸门 `MIN_BOUNDARY_DAYS=45`(刷新 30)不看证据精度,而出生时间每差 1 分钟大运边界只平移约 1.1 天——20 分钟窗内的候选边界全挤在三周内被整批丢掉,这就是「六题后出不来题」的算术原因。量闸门按年/月/日分档(G0–G4)的收益,并必测答错容忍度(±3/±7/±14 天偏移下真值是否被挤出) | 待执行 | `codex/rectification-precision-gate-research-20260914` | + | `TASK-rectification-open-collect-invite-20260914.md` | `PROGRESS-rectification-open-collect-invite-20260914.md` | **P0**:固定七条采集线问完后只说「能问的都问完了」,用户不知道还能补经历、也不知道补了有用;而两轮研究证明补带年月经历是唯一有效手段。产品拍板:交付卡照出 + 卡上给不限领域的补充邀请(举七条线之外的例子),补完必须可见生效(BUG-689) | 待执行 | `codex/rectification-open-collect-invite-20260914` | | `TASK-rectification-cluster-width-research-20260914.md` | `PROGRESS-rectification-cluster-width-research-20260914.md` | **研究单**:上一轮证明调权重改不动交付区间宽度——所有方案宽度中位数都等于整个搜索窗。先确认 sweep 的宽度口径是否含淘汰(M0),再画簇结构像(M1),最后量三个改法:放宽簇上限、按分差决定是否合并、交付区间改分位覆盖(M2)。真值覆盖率不得下降 | 待验收 | `codex/rectification-cluster-width-research-20260914` | diff --git a/docs/tasks/TASK-rectification-precision-adaptive-boundary-research-20260914.md b/docs/tasks/TASK-rectification-precision-adaptive-boundary-research-20260914.md new file mode 100644 index 00000000..bde9c5df --- /dev/null +++ b/docs/tasks/TASK-rectification-precision-adaptive-boundary-research-20260914.md @@ -0,0 +1,110 @@ +# 研究单 · 出题闸门按证据精度分档(2026-09-14) + +- 基线:`origin/staging` @ `558d43c8`(代码 `963c147c`,staging 已部署)。 +- 分支:`codex/rectification-precision-gate-research-20260914`,worktree `.worktrees/rectification-precision-gate-research-20260914`。 +- 性质:**离线测量,不改线上行为。** 有收益且风险可控才另立实现单。 +- 前序:`docs/research/rectification_minute_resolution_closure_2026_09_14.md`(两轮定论:加权重、改聚类都不行,唯一有效的是用户补带年月经历)、`docs/research/probe_supply_after_six_2026_09_13.md`(R3/R4 已实现,收益有限)。 + +## 1. 问题:现在的闸门是固定的,不看证据精度 + +引擎造"能区分候选"的题,靠的是两个候选分钟在同一段时间里的**大运边界落在不同月份**。但有一道固定闸: + +```python +# scripts/rectification/event_probes.py:543 _boundary_windows +if one.year == two.year and abs((one - two).days) < threshold: # MIN_BOUNDARY_DAYS = 45,刷新阶段 30 + continue +``` + +配合这个换算(月亮每分钟约 0.0092°,Vimshottari 1° ≈ 122 天): + +> **出生时间每差 1 分钟,所有 Vimshottari 边界整体平移约 1.1 天。** + +| 候选相隔 | 边界相差 | 45 天闸 | 30 天闸(刷新) | +| --- | ---: | --- | --- | +| 40 分钟 | ≈ 45 天 | 可出题 | 可出题 | +| 27 分钟 | ≈ 30 天 | 不可 | 勉强 | +| **20 分钟(真机常见窗口)** | **≈ 22 天** | **不可** | **不可** | +| 2 分钟 | ≈ 2 天 | 不可 | 不可 | + +**这解释了"六题之后引擎就出不来题"**:剩余候选已经挤在 20 分钟内,它们的大运边界全部落在三周之内,被闸门整批丢掉。闸门本身是对的——月精度的记忆分不开相差 20 天的两条边界,问了也是白问。 + +**缺口在于:`event_probes.py` 从不读证据的日期精度**(全文没有 `date_precision` / `precision` 字样,`min_days` 只有两个固定取值)。所以哪怕用户给的是「2020 年 4 月 13 日入职」这种**日精度**事件,闸门仍按 45 天卡。可日精度事件本来可以分辨相差 5 天的边界——对应约 **5 分钟**的出生时间分辨率,正好是目前卡住的那一档。 + +## 2. 要量的东西 + +样本:`references/real_case_calibration/minute_rectification_holdout_v4.json`(20 例公开 AA)。实测精度分布:**日精度 59 件、年精度 84 件**,平均每例约 3 件日精度事件——够做这次测量。 + +### M0 · 精度处理三组(必做,用来隔离"精度本身"的收益) + +真机会话以**月精度**为主,而 v4 只有年/日两档。所以同一批案例跑三组: + +| 组 | 处理 | +| --- | --- | +| A | 原样(日 59 / 年 84) | +| B | 全部日精度降级成月精度 | +| C | 全部降级成年精度 | + +三组都按当前生产闸门跑一遍,得到基线;这样后面的收益能归因到"精度"而不是"样本差异"。 + +### M1 · 闸门分档 + +把 `_boundary_windows` 的 `threshold` 从固定值改成**按参与该题的证据精度取值**,测这几档: + +| 档 | 年精度证据 | 月精度证据 | 日精度证据 | +| --- | ---: | ---: | ---: | +| G0(现状) | 45 | 45 | 45 | +| G1 | 45 | 30 | 10 | +| G2 | 45 | 30 | 7 | +| G3 | 45 | 21 | 5 | +| G4 | 60 | 30 | 3 | + +指标沿用既有五项 + 两项新的:真实分钟命中率、**真值落在交付区间的比例(不得下降)**、区间宽度中位、并列率、每轮熵降;新增 **出题数**(每例新增几道)与 **每道题的区分力**(真值簇能否落到 yes/no 一侧且另一侧还有候选)。 + +### M2 · 答错容忍度(必做,这是本单最大的风险) + +日精度门槛越低,越依赖用户记准日子。模拟用户记错:把日精度事件的日期**随机偏移 ±3 / ±7 / ±14 天**,各跑一遍,统计: + +- **真值被淘汰出交付区间的例数**(这是最严重的错误,`AGENTS.md` Part B B4); +- 头名命中率的下降幅度。 + +**判定规则:任何一档若在 ±7 天偏移下出现真值被挤出,该档不得推荐上线。** + +### M3 · 体验代价 + +统计每档下"问满六题之后还能再出几道题",以及这些题的平均区分力。若某档新增 8 道题但平均只收窄 1–2 分钟,要在结论里标明"问答成本高于收益"。 + +## 3. 交付 + +- `scripts/research/precision_gate_sweep.py`(新,离线,不接生产)+ `docs/research/precision_gate_2026_09_14.md` / `.json`。 +- 口径声明与前两轮一致(ayanamsa `raman`、node mode `mean`),不得与上游 true-node 数字直接比。 +- 结论只允许三种:**有收益**(命中率上升或宽度下降,真值覆盖率不降,且 ±7 天偏移下不挤出)→ 立实现单并给推荐档位;**无收益** → 关闭;**不确定** → 说明缺什么。 +- 不得改 `scripts/rectification/event_probes.py` 的线上默认值。 + +## 4. 硬红线 + +1. Python 改动跑 `.venv/bin/python scripts/run_quality_gate.py --profile quick`(已知既有缺口:`test_shadbala_endpoint_returns_ranked_planet_strength`,时区依赖缺失,基线同样红,不计入)。 +2. **真值覆盖率优先于区间宽度**:任何把真实分钟挤出交付区间的档位一律不推荐,哪怕命中率更高。 +3. 不得放宽置信度或确认门控;不得让性格题参与淘汰(既有红线)。 +4. 不得使用真实用户资料。 +5. 结论必须落到数字。 + +## 5. 与 BUG-689 的联动 + +本单若有收益,`TASK-rectification-open-collect-invite-20260914.md` 的邀请文案要同步:**优先请用户说"记得确切是哪一天"的事**(登记结婚那天、入职第一天、手术那天、孩子出生那天、拿到录取通知那天),并说明"记得到天的事比记得到月的事有用得多"。该文案改动已写进 BUG-689 单的 D1,不必等本单结论——但"有用得多"这句的强度要按本单结果调整,**不得在没有数据前承诺能定到分钟**。 + +## 6. 开工前置命令 + +```bash +git fetch origin --prune +git worktree add -b codex/rectification-precision-gate-research-20260914 \ + .worktrees/rectification-precision-gate-research-20260914 origin/staging +cd .worktrees/rectification-precision-gate-research-20260914 +ln -s /workspace/Jyotisha/.venv .venv +python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45 +``` + +开工前读:`docs/research/rectification_minute_resolution_closure_2026_09_14.md`、`docs/research/probe_supply_after_six_2026_09_13.md`、`scripts/rectification/event_probes.py` 的 `_boundary_windows` 与 `_union_boundary_dates`。 + +## 7. BUG 编号 + +- 研究单,**不新增 BUG 编号**。