docs(research): measure dated probe supply after six answers
Independent Staging Quality Gate / validate (push) Successful in 11m55s
Independent Staging Quality Gate / publish (push) Successful in 8m53s

Offline holdout replay shows refresh-only R3+R4 add discriminative dated probes; R1/R2 do not meet the gate.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-13 12:59:46 +08:00
co-authored by Cursor
parent da048676ba
commit b063c66835
4 changed files with 23412 additions and 0 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,101 @@
# 六题之后刷新出题供给测量(2026-09-13)
- 任务:`docs/tasks/TASK-rectification-probe-supply-research-20260913.md`
- 代码基线:`da048676ba24242d1e7372d0ff63ec5664a63e6a``codex/rectification-probe-supply-research-20260913`
- 数据:`references/real_case_calibration/minute_rectification_holdout_v3.json`20 例公开 AA`source_audit_status=invalidated_after_replay`,只作开发集趋势,不是发布指标)
- 性质:离线测量。生产 `event_probes.py` 默认行为未改。
## 方法
1. 每例用 holdout 公开事件对声明分钟 ±`candidate_radius_minutes` 打分,生成生产路径带年月题。
2. 按信息增益取前 6 道,用对真实分钟最优的 yes/no 回放(真实分钟落在 yes 组答 yes,落在 no 组答 no)。
3. 剩余活动簇代表若多于 5 个,保留真实簇并按后验截到 5 个,模拟「六题后剩余 ≤5 候选」。
4. 对该剩余集按 `refresh_probes=true` 再生成题:baseline 走生产函数;R1–R4 只在本脚本里临时改封锁年、事件家族、`MIN_BOUNDARY_DAYS`、Vimshottari 第三级与 D9/D10 上升 Narayana。
5. 新题按最优答案继续回放,比较头名命中与剩余范围宽度。
有分辨力:真实分钟(或其簇代表)能落到 yes 或 no,且另一组里还有剩余候选。相同 yes/no 划分只计一次 unique split。收益门槛是相对生产刷新 **多出** ≥1 道独立划分,且头名不降。
## 放宽项
| 代号 | 改法 |
| --- | --- |
| R1 | 刷新时只封已问/已知的确切年,去掉 ±1 年封锁 |
| R2 | 事业按入职/升职/离职、感情按结婚/分手,同域同年可再出一道 |
| R3 | 刷新阶段 `MIN_BOUNDARY_DAYS` 45→30 |
| R4 | 边界加 Vimshottari pratyantar,以及 D9/D10 上升的 Narayana |
问满 6 道且剩余 ≥2 因而进入刷新测量的例子:12/20。
## 总表
| 方案 | 平均新增题 | 相对生产多出题 | 平均有分辨力 | 平均独立划分 | 相对生产多出划分 | 有分辨力的例子 | 六题后头名 | 回放后头名 | 头名差 | 六题后宽度 | 回放后宽度 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| baseline | 1.75 | 0.0 | 1.75 | 1.333 | 0.0 | 7/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 9.5 |
| R1 | 1.833 | 0.083 | 1.833 | 1.417 | 0.084 | 8/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 9.58 |
| R2 | 2.5 | 0.75 | 2.5 | 1.583 | 0.25 | 8/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.67 |
| R1+R2 | 2.5 | 0.75 | 2.5 | 1.583 | 0.25 | 8/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.67 |
| R3 | 3 | 1.25 | 3 | 2.333 | 1.0 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 9.25 |
| R1+R3 | 3 | 1.25 | 3 | 2.333 | 1.0 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 9.17 |
| R2+R3 | 3.833 | 2.083 | 3.833 | 2.417 | 1.084 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8 |
| R1+R2+R3 | 3.917 | 2.167 | 3.917 | 2.417 | 1.084 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.42 |
| R4 | 3.25 | 1.5 | 3.25 | 2.417 | 1.084 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.67 |
| R1+R4 | 3.5 | 1.75 | 3.5 | 2.75 | 1.417 | 11/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.5 |
| R2+R4 | 4.333 | 2.583 | 4.333 | 2.5 | 1.167 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.5 |
| R1+R2+R4 | 4.25 | 2.5 | 4.25 | 2.667 | 1.334 | 11/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.75 |
| R3+R4 | 3.5 | 1.75 | 3.5 | 2.833 | 1.5 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.42 |
| R1+R3+R4 | 3.667 | 1.917 | 3.667 | 2.75 | 1.417 | 11/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.58 |
| R2+R3+R4 | 4.25 | 2.5 | 4.25 | 2.75 | 1.417 | 10/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8.25 |
| R1+R2+R3+R4 | 4.833 | 3.083 | 4.833 | 2.75 | 1.417 | 11/12 | 0.9167 | 0.9167 | 0.0 | 11.33 | 8 |
## 结论
**有收益,可另立实现单。**
- 判定:`benefit`
- 原因:at least one relaxation added >=1 unique true-cluster split vs production refresh without dropping top-1
- 立实现单:是
- 达到门槛的组合:R3, R1+R3, R2+R3, R1+R2+R3, R4, R1+R4, R2+R4, R1+R2+R4, R3+R4, R1+R3+R4, R2+R3+R4, R1+R2+R3+R4
## 建议实现范围
立实现单只做 **刷新阶段 R3 + R4**
- R3:刷新时 `MIN_BOUNDARY_DAYS` 45→30。单独达到门槛(相对生产 +1.0 独立划分、+1.25 题),改动最小。
- R4:刷新边界加 Vimshottari pratyantar 与 D9/D10 上升 Narayana。单独 +1.084 独立划分、+1.5 题。`_vim_start_dates` 已有 `include_pratyantar`,生产默认仍为 false。
- 合做 R3+R4+1.5 独立划分、+1.75 题;头名 0.9167 不降,宽度 11.33→8.42。
- **不做 R1**:只多 0.084 划分。
- **不做 R2**:多出的题大多是同一 yes/no 划分的家族复题;单独只多 0.25 划分。
- 即使 R3+R4,仍有例子问满 6 道后刷新还是 0 题。定向补事(方案 A)仍要保留。
## 分例
| 例子 | 问了几道 | 剩余 | 截断 | 真实还在 | baseline 新题 | 最好组合 | 该组合新题 | 该组合分辨力 |
| --- | ---: | ---: | --- | --- | ---: | --- | ---: | ---: |
| barack_obama_1961_aa_v4_holdout | 6 | 5 | capped_to_5 | True | 1 | R2+R4 | 9 | 9 |
| angelina_jolie_1975_aa_v4_holdout | 6 | 5 | natural | True | 0 | R2+R3 | 8 | 8 |
| tiger_woods_1975_aa_v4_holdout | 0 | 5 | capped_to_5 | True | 0 | R2+R3 | 8 | 8 |
| elizabeth_taylor_1932_aa_v4_holdout | 6 | 5 | natural | True | 3 | R1 | 4 | 4 |
| elizabeth_montgomery_1933_aa_v4_holdout | 4 | 5 | natural | True | 2 | R1+R2 | 8 | 8 |
| pablo_picasso_1881_aa_v4_holdout | 0 | 5 | capped_to_5 | True | 0 | R1+R2 | 9 | 9 |
| sigmund_freud_1856_aa_v4_holdout | 0 | 5 | capped_to_5 | True | 0 | R2+R3 | 11 | 11 |
| salma_hayek_1966_aa_v4_holdout | 6 | 4 | natural | True | 1 | R3 | 5 | 5 |
| steve_reich_1936_aa_v4_holdout | 4 | 5 | capped_to_5 | True | 0 | R1+R2+R4 | 7 | 7 |
| albert_brooks_1947_aa_v4_holdout | 0 | 5 | capped_to_5 | True | 0 | R1+R2+R3+R4 | 8 | 8 |
| paul_ryan_1970_aa_v4_holdout | 3 | 5 | natural | True | 0 | R2 | 7 | 7 |
| tom_kennedy_1927_aa_v4_holdout | 6 | 4 | natural | True | 1 | R2+R4 | 7 | 7 |
| andrew_windsor_1960_aa_v4_holdout | 6 | 2 | natural | True | 0 | R3 | 4 | 4 |
| sean_lennon_1975_aa_v4_holdout | 6 | 4 | natural | True | 0 | R2+R4 | 7 | 7 |
| joseph_kennedy_iii_1980_aa_v4_holdout | 6 | 3 | natural | True | 0 | baseline | 0 | 0 |
| kurt_cobain_1967_aa_v4_holdout | 6 | 4 | natural | True | 7 | R1+R2+R3+R4 | 10 | 10 |
| john_robbins_1947_aa_v4_holdout | 6 | 2 | natural | True | 0 | R1+R4 | 1 | 1 |
| chad_everett_1937_aa_v4_holdout | 6 | 4 | natural | True | 3 | R2+R3+R4 | 5 | 5 |
| bernd_eichinger_1949_aa_v4_holdout | 2 | 5 | capped_to_5 | True | 0 | R1+R2+R3+R4 | 5 | 5 |
| iwao_takamoto_1925_aa_v4_holdout | 6 | 5 | natural | True | 5 | R2 | 7 | 7 |
## 边界
- 最优答案是相对已公布 Rodden AA 分钟的上界,不是真实用户会怎么答。
- holdout 已被 `invalidated_after_replay`,不得写成发布准确率。
- R2 若只换事件家族文案、分盘激活规则不变,yes/no 划分可能与默认家族重复。
- 未把研究脚本接到生产路径。
@@ -0,0 +1,44 @@
# TASK · 刷新阶段放宽换运边界(R3 + R4)(2026-09-13
- 基线:以合入研究结论时的 `origin/staging` 为准
- 分支:`codex/rectification-refresh-r3-r4-20260913`,基于 `origin/staging`
- 执行方:coding agent;验收:Claude
- BUG 编号起点:**BUG-664**(开工时核对 `docs/BUG_HISTORY.md` 最大号;661–663 留给定向补事单)
- 决策来源:`TASK-rectification-probe-supply-research-20260913.md` 测量结论有收益;只实现刷新阶段 R3 + R4。研究原文:`docs/research/probe_supply_after_six_2026_09_13.md`
- 不改首轮出题、不改计分、不改确认门。
## 1. 为什么做
20 例公开 AA holdout 里,问满 6 道带年月题且剩余 ≥2 的 12 例:生产刷新平均还能出 1.75 道题。相对生产再放宽:
| 方案 | 相对生产多出题 | 相对生产多出独立划分 | 头名 |
| --- | ---: | ---: | ---: |
| R1 去掉邻近年封锁 | +0.083 | +0.084 | 不降 |
| R2 同域同年换家族再问 | +0.75 | +0.25 | 不降 |
| **R3 刷新 MIN_BOUNDARY_DAYS 45→30** | **+1.25** | **+1.0** | 不降 |
| **R4 pratyantar + D9/D10 Narayana** | **+1.5** | **+1.084** | 不降 |
| **R3+R4** | **+1.75** | **+1.5** | 不降 |
R1/R2 达不到「平均多 ≥1 道有分辨力的独立划分」。R2 的额外题大多是同一 yes/no 划分。本单不实现 R1/R2。
即使 R3+R4,仍有例子刷新 0 题。方案 A 定向补事是另一条线,不在本单。
## 2. 实现范围
- **T1BUG-664R3**:仅当 `request.refresh_probes is True` 时,`_boundary_windows` / `_union_boundary_dates` 使用 `MIN_BOUNDARY_DAYS=30`;首轮出题保持 45。
- **T2BUG-665R4**:仅刷新阶段,`_vim_start_dates(..., include_pratyantar=True)`;对剩余候选的 D9 / D10 上升再算 Narayana 边界并并入 `_union_boundary_dates`。本命上升 Narayana 与 Vimshottari MD/AD 保持原样。
- **T3 测试**:刷新剩余 ≤5 时,45 天内、跨年、pratyantar、D9/D10 上升不同的边界可以出题;首轮 `refresh_probes` 缺省路径题量与现网一致。不得把研究脚本接到生产。
- **T4 记录**BUG-664/665、CHANGELOG、PROGRESSSkill 若用户可见题变多则升补丁号。
## 3. 硬红线
- 不得改 `EXISTENCE_NEARBY_YEARS` 默认值,不得按事件家族拆同一年的题。
- 不得改 `SCORE_DELTA`、收敛门、无年月题计分(BUG-629)。
- 刷新仍走 `discriminating_event_probes` 的 distinguish 合同:必须一组会发生、一组不会。
- 研究脚本 `scripts/research/probe_supply_after_six.py` 保持离线,不进 API。
## 4. 验收
1. 首轮出题回归:未开 `refresh_probes` 的既有 event_probes 测试断言不放宽。
2. 刷新用例:剩余 5 个候选、已问 6 个 semantic_key 时,R3 能收入 3044 天的同年边界;R4 能收入 pratyantar 或 D9/D10 上升不同而产生的新年月题。
3. 真机:方案 A 之前的「六题后 no_new_probes」序列,在剩余候选 D9/D10 或第三级换运有差时,应出现至少一道新的带年月选择题;若仍无题,走定向补事,不得报「没有拿到下一个问题」。
File diff suppressed because it is too large Load Diff