fix(rectification): anchor candidate windows to civil dates across midnight
Independent Staging Quality Gate / validate (push) Successful in 13m27s
Independent Staging Quality Gate / publish (push) Failing after 1h0m1s

Carry explicit local date intervals instead of inferring the day from clock
order. Cluster width, delivery, adoption, and reports keep the actual civil
date; adopted date is stored separately from the reported birth_date.

Algorithm identity is scoring-9 / spec-v5. Scoring weights, confirmation
thresholds, and Skill version are unchanged. Isolated Linux final-3 gates
passed; four pre-existing Python failures remain. This is not a production
release.
This commit is contained in:
jesse-ux
2026-09-21 02:55:00 +08:00
parent 3be740f84d
commit b85c4a686a
115 changed files with 106484 additions and 315 deletions
@@ -81,11 +81,11 @@ const diagnosticReport = JSON.parse(readFileSync(
verified_minute_claim_allowed: boolean;
};
};
// 原值:docs/research/sealed_holdout_rerun_2026_09_20.json
// 新值:docs/research/sealed_holdout_rerun_cross_midnight_2026_09_20.json
// 原因:BUG-981 修复后重跑另存报告;旧报告保留,确认门行为与阈值不变。
// 原值:docs/research/sealed_holdout_rerun_cross_midnight_2026_09_20.json
// 新值:docs/research/sealed_holdout_rerun_midnight_anchor_2026_09_21.json
// 原因:午夜日期锚点修复的新冻结重跑另存报告;旧报告保留,确认门行为与阈值不变。
const currentTreeRerun = JSON.parse(readFileSync(
new URL("../../docs/research/sealed_holdout_rerun_cross_midnight_2026_09_20.json", import.meta.url),
new URL("../../docs/research/sealed_holdout_rerun_midnight_anchor_2026_09_21.json", import.meta.url),
"utf8",
)) as {
frozen_record: { implementation_sha256: string };
@@ -207,7 +207,7 @@ test("sealed holdout aggregates match the v3 report and still block confirmation
);
assert.equal(
productHoldout.current_tree_scorer.source_report,
"docs/research/sealed_holdout_rerun_cross_midnight_2026_09_20.json",
"docs/research/sealed_holdout_rerun_midnight_anchor_2026_09_21.json",
);
assert.equal(currentTreeRerun.official_valid_independent_blind, false);
assert.equal(productHoldout.current_tree_scorer.matches_metrics_scorer, false);