# Holdout v5 选例与核对协议(2026-09-29) 任务书:`docs/tasks/TASK-rectification-holdout-expansion-20260929.md`。本页写清 v5 的入选标准、分层配额、排除规则与来源记录格式;数字与统计见 `holdout_v5_build_2026_09_29.md`。 ## 1. 入选标准 1. **出生资料**:Astro-Databank 记录、Rodden **AA**(出生证 / 出生记录 / 医院记录)。A、B、C、DD、X、XX 一律不收。 2. **公开名人**:只收有英文 Wikipedia 条目的公众人物;不收本仓任何真实用户、库主、协作者或其亲友。 3. **事件**:每例 ≥7 件带年月事件、≥4 个领域;领域键取 `scripts/active_rectification_event_engine.py::DOMAIN_CONFIG`。 4. **来源独立**:事件出处与出生资料出处互不相同(`independent_of_birth_source=true`)。 5. **精度诚实**:`year` / `month` / `day` 按来源页所写的精度标注;来源只写"某年"就标 `year`,不得补成 1 月或 1 日。 6. **时间上限**:回放脚本固定在 2026-09-14 评估(`minute_resolution_sweep.TODAY`),计分合同拒绝晚于"今天"的事件;年精度事件落在当年内,所以 **2026 年的事件一律不收**,月/日精度不得晚于 2026-09-14(构建脚本 `EVENT_CUTOFF` 强制)。 ## 2. 排除规则 - 出生时间在 Astro-Databank 上标为 rectified / from memory / 无时间(X)的不收。 - 同一家族多人只取一人(v4 已有 Sean Lennon、Joseph Kennedy III;v5 新增的 Serena 与 Venus Williams 为姐妹,按本条**仍收**——两人出生资料独立、事件独立,且任务书分层需要;已在构建说明中注明)。 - 核对未通过(时区不一致、坐标与地名不符)的记录**不收**,不改数字凑合,见 §4。 ## 3. 分层配额(任务书硬红线 4) | 维度 | 配额 | | --- | --- | | 出生年代 | ≥3 个年代段 | | 纬度带 | \|φ\| <25° / 25–45° / >45° 三档都有 | | 南半球 | ≥8 例 | | 出生时间 22:00–02:00 | ≥6 例 | | UTC+8 | ≥6 例 | 达不到的写进 PROGRESS,不得静默。 ## 4. 来源核对流程(每例) 1. **评级与出生资料**:astro.com 在 2026-09-29 对自动访问返回"One moment..."拦截页,Wayback 快照间歇不可达。因此评级与出生资料从 Astro-Seek 的 famous-people 页读取——该页逐字转载 Astro-Databank 的评级字母、采集人(Rodden / Scholfield / Borges …)、出生日期、当地时间、地点、坐标与 UTC 修正。记录里同时写 Astro-Databank 原页 URL(`birth.source.url`)与镜像页 URL(`birth.source.verified_via.url`)。**这是环境缺口**:验收时若 astro.com 可访问,应抽样回到原页复核。 2. **时区核对**:用 `timezonefinder` + `zoneinfo` 按坐标与出生时刻算 UTC 偏移,与记录偏移比对。三种通过规则: - `zoneinfo_match`:完全一致; - `standard_time_kept_dst_disagreement`:tzdata 把时区代表城市的夏令时史套到整个时区,而出生记录保持标准时(例:1941 年 Duluth、1922 年 Grand Rapids、1963 年 Owensboro); - `lmt_from_birthplace_longitude`:1890 年前后欧洲的地方平时,tzdata 只有代表城市的 LMT,记录用出生地经度的 LMT(例:1879 Ulm、1890 Lille)。 其他不一致一律拒收(本轮拒收 Borges 1899 Buenos Aires、Allende 1908 Valparaíso)。 3. **地名核对**:Nominatim 地理编码记录里的地名,与记录坐标距离 ≤60 km。不一致拒收(本轮拒收 Corazon Aquino:记录地名 Paniqui,镜像坐标为马尼拉,相距 129 km)。 4. **事件**:从英文 Wikipedia 正文(API `extracts`,纯文本)逐句筛出带年份的候选句,人工选择并标注领域 / 日期 / 精度;每条事件保存来源页 URL 与**逐字引文**(`source.quote`),构建脚本核对引文确实出现在页面文本里,找不到即拒收。模型草稿(候选句列表)不进数据集。 ## 5. 数据文件 | 文件 | 内容 | | --- | --- | | `references/real_case_calibration/holdout_v5_roster.json` | 新增例的出生记录、评级、核对结果(`checks`) | | `references/real_case_calibration/minute_rectification_holdout_v5_events.json` | 新增例的事件(含引文) | | `references/real_case_calibration/minute_rectification_holdout_v5.json` | 构建产物:v4 的 20 例原样 + 新增例 | | `scripts/research/holdout_v5_build.py` | 构建脚本(`--check` 只校验不写) | | `tests/test_holdout_v5_schema.py` | schema 测试 | ## 6. 口径 ayanamsa `raman`、node mode `mean`、候选步长 2 分钟、三档半径 ±10 / ±30 / ±60 写在数据集上。v5 是开放评价集(`truth_hidden_from_ranker=false`),不是封存盲测;`sealed_holdout_rerun.py` 与 reported-offset 记录不因本单改变。