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
@@ -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 或第三级换运有差时,应出现至少一道新的带年月选择题;若仍无题,走定向补事,不得报「没有拿到下一个问题」。