Files
Jyotisha/docs/tasks/PROGRESS-rectification-holdout-expansion-20260929.md
T
Jesse_ChenandClaude Fable 5.1 0120765f42
Independent Staging Quality Gate / validate (push) Successful in 12m11s
Independent Staging Quality Gate / publish (push) Successful in 4m8s
docs(tasks): Claude acceptance for holdout v5 expansion (BUG-1090 resolved)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-29 19:53:33 +08:00

83 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROGRESS · 生时校正开放评价集扩到 ≥60 例(v5,2026-09-29)
任务书:`TASK-rectification-holdout-expansion-20260929.md`。分支 `codex/rectification-holdout-expansion-20260929`,基线 `origin/staging` @ `5febb111`(开工时 head;`78b9c5b6` 之后的提交与本单无关,未 rebase)。BUG:**BUG-1090**(开工核对最大号 1089)。
## 结果一句话
v5 已建:**77 例**(v4 20 例原样继承 + 57 例新增公开 Rodden-AA),964 件事件;v4 子集在三个回放脚本上的基线数字与已发布数字**逐格一致**;分层配额除 **UTC+8 5/6** 外全部达标;生产代码零改动。
## T1 选例协议与名单
- 协议:`docs/research/holdout_v5_protocol_2026_09_29.md`(入选标准、排除规则、分层配额、核对流程、2026 年事件上限)。
- 名单:`references/real_case_calibration/holdout_v5_roster.json`(57 例,每例 Astro-Databank URL、AA 评级、采集人、镜像页 URL、时区与地名核对结果)。
- **环境缺口**:astro.com 在 2026-09-29 对自动访问返回"One moment..."拦截页,Wayback 快照间歇 000;评级与出生资料从 Astro-Seek famous-people 页读取(逐字转载 Astro-Databank 评级、采集人、日期、时间、地点、坐标、UTC 修正)。记录里同时写原页 URL 与镜像 URL。验收时若 astro.com 可访问,请抽样回到原页复核。
- 分层统计:
| 维度(配额) | v5 | 达标 |
| --- | --- | --- |
| 出生年代 ≥3 段 | 14 段(1850s–1990s) | 是 |
| 纬度带三档 | <25° 14 / 25–45° 44 / >45° 19 | 是 |
| 南半球 ≥8 | 12 | 是 |
| 22:00–02:00 ≥6 | 9 | 是 |
| UTC+8 ≥6 | **5** | **否**(原因与已扫范围见构建说明 §1) |
## T2 事件抽取与核对
- 事件从英文 Wikipedia 纯文本(API `extracts`)逐句筛候选、人工选择并标注领域 / 日期 / 精度;每条保存 `source.quote`(逐字引文),构建脚本核对引文存在后才写入;找不到引文的行被拒收而非静默丢弃。
- 新增 57 例:每例 8–20 件,领域 ≥4;精度 day 185 / month 143 / year 493。领域键取自 `DOMAIN_CONFIG`。
- 拒收记录(不改数字凑合):Borges、Allende、Arrau(时区不一致)、Corazon Aquino(地名距记录坐标 129 km)、Juan Perón(生日两源不一致)、Pope Francis(只 3 个领域)、Rod Chang / Aga Muhlach / Eugene Domingo(传记不足 4 领域)。
- 删掉 2026 年事件 2 条(Messi、Zidane):回放脚本固定 2026-09-14 评估,计分合同拒绝晚于"今天"的事件;协议 §1.6 与构建脚本 `EVENT_CUTOFF` 已固化。
- schema 测试:`tests/test_holdout_v5_schema.py` 9 项通过(门槛、口径、v4 原样、出生记录字段、核对字段、引文、领域 / 日期 / 精度、分层汇总、roster / events 与数据集一致、构建确定性)。
## T3 构建脚本
- `scripts/research/holdout_v5_build.py`:从 v4 + roster + events 生成 v5;`--check` 只校验。两次构建 md5 一致(`3f8f…`→ 最终版由 `test_build_is_deterministic` 锁定)。
- v4 的 20 例在 v5 中出生资料与事件逐字段一致(测试 `test_v4_cases_are_inherited_verbatim`)。
## T4 基线成绩单
- `scripts/research/holdout_v5_baseline.py`:把 `minute_resolution_sweep` / `cluster_width_probe` / `futile_collect_stop_replay`(经 `guided_collect_holdout_replay.load_cases`)的模块常量指到指定数据集与独立输出文件,只跑 `baseline` 变体;不改这三个脚本。
- **硬红线 5**:`--dataset v4` 复跑,三个脚本共 7+12+6 组数字与 `minute_resolution_2026_09_14.json`、`cluster_width_2026_09_14.json`、`futile_collect_stop_replay_2026_09_29.json` 逐格一致(表在 `holdout_v5_build_2026_09_29.md` §3;JSON `holdout_v5_baseline_v4_all_2026_09_29.json`)。
- v5 全集:`holdout_v5_baseline_v5_all_2026_09_29.json`,数字见构建说明 §4。
- 发现并处理:`cluster_width_probe.run` 会顺手重写 `minute_resolution_2026_09_14.md` 里的勘误表(数值相同、格式 `15.0`→`15`)。已 `git checkout` 还原该文件,并在 `holdout_v5_baseline.py` 里把 `append_previous_errata` 置空,保证复跑不碰已发布文档。
| 半径 | 引擎先验头名(v4) | 六题回放头名(v4) | 六题后真值在区间(v4) | 六题后宽度中位(v4) | D1 六格真值在区间 truth / opposite |
| --- | --- | --- | --- | --- | --- |
| ±10 | 0.18(0.35) | 0.64(0.80) | 76/77(20/20) | 15(15) | 76/77,76/77 |
| ±30 | 0.08(0.15) | 0.49(0.55) | 76/77(20/20) | 35(33) | 76/77,76/77 |
| ±60 | 0.06(0.10) | 0.26(0.35) | 75/77(20/20) | 63(56) | 75/77,75/77 |
真值被挤出的例与说明见构建说明 §4。
## T5 文档
- `docs/research/holdout_v5_build_2026_09_29.md`、`docs/research/ACTIVE_FRONTS.md`(索引)、定论页 §8、`docs/tasks/README.md` 状态板、`docs/BUG_HISTORY.md` BUG-1090。
## 门禁与测试
- 生产代码零改动(`git diff origin/staging --stat` 只有 `docs/`、`references/real_case_calibration/`、`scripts/research/holdout_v5_*.py`、`tests/test_holdout_v5_schema.py`)。
- `tests/test_repo_privacy_markers.py` 全绿;`test_minute_resolution_research.py`、`test_cluster_width_research.py` 全绿(09-14 的 JSON 未改写)。
- 快速门:见文末「快速门」节。
## 遗留
- UTC+8 差 1 例;astro.com 原站抽样复核;Rod Chang(台湾 AA)若能找到可靠传记可补。
- 拒收的 3 例时区不一致(阿根廷 / 智利 1899–1908)值得在 astro.com 可访问后核对原记录的时区注释。
## 快速门
- 开工基线(`origin/staging` @ `5febb111`,本 worktree,Node 22 in PATH):Python 步 **1001 passed / 1 skipped**;随后 `npm test` 在 `frontend` 报 `sh: 1: tsx: not found`(worktree 没装前端依赖)→ 门失败。
- 改动后(`ca54d357`):Python 步 **1001 passed / 1 skipped**,同一处 `tsx: not found`,与基线逐条一致。前端零改动,未在 worktree 安装依赖(环境缺口,非回归)。
- 定向:`tests/test_holdout_v5_schema.py` 9 passed;`test_minute_resolution_research.py` + `test_cluster_width_research.py` + `test_repo_privacy_markers.py` 全绿。
## Claude 验收(2026-09-29)
- 范围:改动只在 `docs/`、`references/real_case_calibration/`(v5 三个新文件)、`scripts/research/holdout_v5_*.py`、`tests/test_holdout_v5_schema.py`;v3 / v4 数据与 10 个冻结文件零改动,校正验证完整性门禁绿。
- 确定性:`holdout_v5_build.py --check` 退出 0(rebase 前后各一次)。
- 硬红线 5:`holdout_v5_baseline_v4_all_2026_09_29.json` 里 v4 子集 sweep(±10/±30/±60 头名 0.35/0.15/0.10、覆盖 1.00、宽度 21/61/121、并列 0.05/0.05/0.00、六题回放 0.80/0.55/0.35)、cluster_width(15/33/56、覆盖 1.00)、futile 六格(20/20,宽度 14/15/15/15/34/33/34/33/53/56/53/56)与 09-14 / 09-26 / 09-29 已发布数字逐格一致。
- 来源抽样(新增 57 例的 10%,seed 20260929 抽 6 例:Bush / Kubitschek / Nadal / Dantes / Ali / Aniston):astro.com 原页对验收方同样返回浏览器验证页;Astro-Seek 镜像页(curl 跟随 301)逐条核对出生日期、本地时间、UT 偏移(含 Kubitschek LMT +2:54)全部与 roster 一致,采集人姓名一致;评级字母在镜像页为图标非文本,未能机器提取。Nadal 两件事件与 Wikipedia 正文一致。
- 测试:schema 9 + 隐私 + 两轮研究测试 + 完整性门禁 + 打分研究测试 = 54 passed。
- 分层:年代 14 段、纬度 14/44/19、南半球 12、跨午夜 9 达标;UTC+8 5/6 未达——执行方已扫全部镜像,无更多可用 AA,属数据可得性缺口,**接受**并保留在 BUG-1090 记录。
- 已 rebase 到 `origin/staging`(四处文档冲突均为双方追加,保留两侧;定论页 §8 v5 在 §9 研究单之前)。
- 结论:通过,合入 staging。下一步:研究单在 v5 上跑 R-A / R-B / R-C 判定。