From 54e63fe46e0995f99f13e3d4534859dbaa5eafd2 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Tue, 29 Sep 2026 19:20:53 +0800 Subject: [PATCH] =?UTF-8?q?research(rectification):=20holdout=20v5=20?= =?UTF-8?q?=E2=80=94=20event=20cutoff=20rule=20in=20protocol=20and=20schem?= =?UTF-8?q?a=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8 --- docs/research/holdout_v5_protocol_2026_09_29.md | 1 + tests/test_holdout_v5_schema.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docs/research/holdout_v5_protocol_2026_09_29.md b/docs/research/holdout_v5_protocol_2026_09_29.md index 3dcd95e3..076cb08d 100644 --- a/docs/research/holdout_v5_protocol_2026_09_29.md +++ b/docs/research/holdout_v5_protocol_2026_09_29.md @@ -9,6 +9,7 @@ 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. 排除规则 diff --git a/tests/test_holdout_v5_schema.py b/tests/test_holdout_v5_schema.py index 7725d93c..c36dae2d 100644 --- a/tests/test_holdout_v5_schema.py +++ b/tests/test_holdout_v5_schema.py @@ -108,6 +108,8 @@ def test_events_domains_dates_and_precision(v5: dict) -> None: assert event["id"] not in seen seen.add(event["id"]) assert int(str(event["date"])[:4]) >= int(case["birth"]["date"][:4]), event["id"] + # replay harnesses evaluate at 2026-09-14; the scoring contract rejects later events + assert str(event["date"])[:4] < "2026" or (event["precision"] != "year" and str(event["date"]) <= "2026-09-14"), event["id"] def test_strata_and_summary_agree(v5: dict) -> None: