Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
83 lines
7.9 KiB
Markdown
83 lines
7.9 KiB
Markdown
# 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 判定。
|