Files
Jyotisha/docs/research/sealed_holdout_rerun_2026_09_20.md
T
jesse-uxandClaude Code aa46da1016 fix(rectification): use candidate dates for cross-midnight dasha scoring
Add date-isolated caches and regression coverage, align scoring identity, and freeze full research reruns while preserving historical artifacts. Record unresolved cache/receipt identity and end-to-end acceptance gaps for branch review only.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 13:56:11 +08:00

9.9 KiB
Raw Blame History

当前冻结实现的 v3 固定口径重跑(2026-09-20,BUG-981 后重新冻结)

当前正式结果已迁到 sealed_holdout_rerun_cross_midnight_2026_09_20.json;旧同名 JSON 与旧 .freeze.json 原字节保留,不代表本轮身份。本文修订前的 Markdown、JSON、冻结记录、契约和评测器均逐字节归档在 history/rectification_pre_cross_midnight_2026_09_20/,由 manifest.json 校验。历史冻结不刷新、不追认。

结论

已补上当前实现可归属、可复算的成绩;没有补成新的独立官方盲测。 既有 v3/v4 人物与成绩已经曝光,重新冻结今天的打分文件不能消除曝光。任务书 T2 中「首次口径干净的官方盲测」在既有 BUG-427 / BUG-428 红线下仍为 blocked,不得改名通过。确认门保持关闭。

这是每例只有 3 件事的低信息量(任务书称「下限」)口径,不代表真实会话;事件少不等于数学上保证成绩更低,因此也不是准确率下界。

固定口径与可审计文件

项目 本次实际值
数据集 references/real_case_calibration/minute_rectification_holdout_v3.json
数据集 SHA-256 45aa76ab79dfc6c6404b6252083e1aa5c7e2e2b7de811fc11042a8ad2da3f0ea
计算规格 ayanamsa raman / node mode mean
半径 / 步长 ±10 分钟 / 1 分钟,含两端;真值为窗心
算法 birth-time-event-fact-ranker-v4-shadow,不是生产 V9 问答链
当前打分身份 b15d9ea15227cd58b3097555537fa7c37fb5a993905ada4f5aa04f52de1f8f18(前缀 b15d9ea15227cd58)
样本 / 事件 20 例 / 每例 3 件;validator 排除 0 例
资料审计状态 corrected_known_date_errors,不等同全新独立人工重审
排名标签隔离 排序和稀疏证据判定完成后才读取真值标签
独立官方盲测 official_valid_independent_blind=false;有效官方盲测试次仍为 0

本轮冻结记录:sealed_holdout_rerun_cross_midnight_2026_09_20.final.freeze.json。在 2026-09-20T04:56:54.914584+00:00 以独占创建模式预冻结,然后重跑。12 文件身份继续为 b15d9ea15227cd58b3097555537fa7c37fb5a993905ada4f5aa04f52de1f8f18;实际修复在这 12 文件之外,故增加以下身份,不能拿旧 12 文件哈希不变冒充生产未变:

身份 SHA-256
扩展生产评分(18 文件,含 scoring_service.py 与 dasha_transition_proximity.py) 7fffd1db612af1f244a8b5d5eac2f1a3f5a8e9e138c09ac6b3743b98f9a47a51
研究/校验(7 文件) 2931d4661bf53dde5c57f6492de65be4c00877293b7277353279a05eda5af215
本轮冻结文件 b74f70d21011f98b78f141535b1bfa49b20701418812a3ad97f9350cc793c67d
旧产物归档 manifest 6102a26a840be207b5858b3a4c0509274468ae9071e86d308cbbac7371d6864e

每个文件的字节哈希与有序文件集身份均在冻结记录内;评分前后都核对数据集、评测器与扩展实现。文件集为显式范围,不冒称完整传递依赖或环境锁。历史 v3 frozen_scoring 原值 f41c298dd6cdcebe… 未改。

脱敏逐例结果:sealed_holdout_rerun_cross_midnight_2026_09_20.json,只含公开集序号、排名、误差、门禁原因,不含出生分钟、坐标或事件正文。复算:

python scripts/research/sealed_holdout_rerun.py --json

五项预注册指标与门槛

本表统一口径:v3 / raman / mean / ±10 / 1 分钟 / b15d9ea15227cd58。

指标 实测 预注册门槛 数值对照
top-1(旧协议竞争排名,含并列) 0.45 ≥0.60 未通过
top-3(旧协议竞争排名,含并列) 0.50 ≥0.85 未通过
头名平均绝对分钟误差(哈希打破并列) 6.45 分钟 ≤2.00 分钟 未通过
误确认率(全样本分母) 0.00 ≤0.05 通过,但无确认覆盖,不能证明确认精度
信息不足正确拒绝率(每例仅首件事件) 1.00 ≥0.90 通过
确认覆盖率(补充) 0.00 本单禁止抬高 保持关闭
作为独立盲测发布成绩的资格 不适用 新封存、未曝光、独立审计 blocked,不可当发布指标

重要口径纠正:旧 top-1/top-3 不是哈希选中那个分钟的命中率。 现有评测的 true_rank = 1 + 严格高于真值分数的候选数 会把同分的多个分钟全算第一;本次为保证与旧协议可比保留它,同时增加哈希全序的真实选中指标,不暗改预注册定义。

附加指标(同一上述口径) 实测
_opaque_winner 真正选中的头名命中 0.05
同一哈希全序中的 top-3 命中 0.10

这两个数字不能与旧 0.45/0.50 混称同一种准确率。没有据此改权重、换半径、换案例或剔除失败例。

契约改了什么、没有改什么

  • current_tree_scorer 绑定本次真实哈希及新报告,新增固定口径试次数与成绩;旧 current_tree_unfrozen_diagnostic 历史块保留。
  • source_audit_status 对齐数据集;evaluated_on 表示最新固定口径重跑日期,并新增作用域说明。历史顶层指标仍有 metrics_produced_by 的旧日期与来源,未伪装成本次结果。
  • status、valid_public_aa_cases、required_cases、top_1_rate、confirmation_coverage_rate、sealed_benchmark_id 六个 runtime 键的值与类型全不变;尤其 status=not_ready、确认覆盖率为零。
  • official_eval_implementation_hash_matches=false、official_eval_trial_count=0 保留;新增重跑记录不冒充已重新获得独立性。
  • 本轮生产代理修复 transition-proximity 候选日期并将矩阵算法身份升为 rectification-v5-matrix-scoring-8,落在历史 12 文件之外。本研究未改权重、候选/事件/半径,未改 _candidate_moments() 或 request_from_case()。

BUG-981 前后逐例对比

20/20 例全部字段相同,改变 0 例;五项指标和附加 opaque 指标均不变。 当前 JSON 的 historical_comparison.trials 保留全部 20 例 before/after 与 changed_fields,包括未变化行,并校验旧报告 SHA-256。不是只保留变化样本。

原因边界:本协议是 shadow fact ranker,build_feature_fact_rows() 原先已使用 candidate_at 日期,不调用被修复的 transition-proximity helper。扩展生产身份用于标识同一工作树上下文,不得写成该 shadow 路径执行了生产 helper。旧成绩因身份更新不再充当当前报告,但不能把数值本身说成错误;重新冻结也不恢复独立盲测资格。

准备阶段曾生成两份 *.freeze.json 和一个 *.cross_midnight.rerun.json。因安全工具拒绝覆盖旧 JSON,改用新的正式报告路径,停止未完成的 900 组合准备运行,评测器最终路径修改后重新冻结再完整重跑。所有准备产物保留并由历史目录的 preparation_manifest.json 标为 superseded_preparation_not_final_report;不得当最终结果。

防复发与既有断言变更

新增 tests/test_sealed_holdout_contract_freshness.py 钉死当前树身份、审计状态、冻结记录、报告汇总与独立性声明;冻结身份不符必须在计算前拒绝。tests/test_rectification_validation_integrity_gate.py 将其和偏差评测回归纳入现有 test_rectification_*.py 快速门,不改 workflow。

原断言 新断言 原因
Python / 前端:current_tree_scorer.implementation_sha256 等于旧 post-audit sidecar 的哈希 等于新固定口径报告 frozen_record.implementation_sha256,另验证当前树与新报告 契约当前树块的含义就是当前实现;继续绑定旧报告会强制过期。新增身份断言更严格,不弱化门禁
官方标志 false、官方试次 0、六键等于历史报告、确认门全套行为断言 原值保留,另加固定口径重跑身份/试次和独立盲测 false 固定口径重跑不是新的独立盲测,不借元数据迁移打开确认门

本轮既有测试调整三栏(此前 BUG-978 的三栏保留在上表):

原值 / 原断言 新值 / 新断言 原因
FREEZE 指向旧 sealed_holdout_rerun_2026_09_20.freeze.json,当前 REPORT 指向旧同名 JSON 指向新 sealed_holdout_rerun_cross_midnight_2026_09_20.final.freeze.json 与新 JSON;保留原完整身份相等断言 历史冻结不可刷新,新实现/评测器必须重新预冻结;旧文件继续逐字节校验
当前树身份只核对 12 文件 保留 12 文件相等与数量断言,另核对生产 18 文件、研究 7 文件、每文件哈希、归档 manifest、契约及报告 修复位于旧 12 文件之外;新增身份漂移拒绝,不弱化原断言
当前报告与冻结身份一致 原断言全部保留,另核对冻结时间早于评分开始、评分前后身份一致、全部旧新逐例对比、六键类型与值不变 防止事后追认、选样与误开确认门
Python 确认合同仅比较 legacy 实现身份 原断言保留,新增扩展身份相等与 helper 在文件集内 原 12 文件不变不足以证明当前修复已被绑定
前端确认测试读取旧固定口径 JSON 由 T4 协调改为新正式 JSON,原门禁与身份断言保留 报告地址迁移,不改变确认行为

本轮定向四文件合计 52/52 通过(含 quick 桥接重复收集),身份/历史字节/全部 before-after 独立复核通过。20 例重跑用时 3.158 秒;当前报告 SHA-256:0122d3cd1545416e1de9029b912d665d130049e9ea768a8972d18bb917331d38。

本机 Python 3.11.7 可跑;python3 Windows 别名退出 49。开工预检 remote verified,但 23 通过 / 1 既有 Windows 镜像路径断言失败,不冒写预检通过。本轮测试清单与环境/广域基线对照由 ../tasks/PROGRESS-rectification-cross-midnight-20260920.md 统一记录;前轮记录仍在 ../tasks/PROGRESS-rectification-validation-20260920.md。既有 v2 冻结身份测试不属刷新范围,不得为了通过而改历史封存或断言。