Files
Jyotisha/docs/research/reported_offset_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

10 KiB
Raw Blame History

申报偏差敏感性评测(2026-09-20,BUG-981 后原生单矩阵重跑)

当前正式结果:reported_offset_cross_midnight_2026_09_20.json,冻结:reported_offset_cross_midnight_2026_09_20.final.freeze.json。旧 reported_offset_2026_09_20.json 原字节保留,不再充当当前身份报告。修订前本 Markdown、旧 JSON/冻结/契约/评测器逐字节保留在 history/rectification_pre_cross_midnight_2026_09_20/,由 manifest 固定哈希。

结论与边界

默认半径 ±15 分钟时,申报误差绝对值超过 15 分钟,记录真值就不在候选窗内;按整数分钟,第 16 分钟开始出窗。 这是搜索窗几何边界,不需要知道真实用户偏差分布。

本轮完整评测预先固定 15 个偏移 × 3 档半径 × 20 例,共 900 组合。修正版全部运行完成,validator 排除 0 例;实测结果以下列最终 JSON 为准,不能用中途旧版本初扫代替。

区间覆盖不等于分钟命中,模拟偏差敏感性不等于真实用户准确率。 不运行六题真值方向回放,不以用户认可作真值,不调参、不换案例、不打开确认门。本轮生产代理单独修正候选日期与版本标记;本研究使用修复后的原生路径,不增加评分规则。

口径

项目 口径
数据集 references/real_case_calibration/minute_rectification_holdout_v3.json,20 例公开 AA,每例 3 件事件,已曝光
ayanamsa / node mode raman / mean
申报偏移 0、±3、±5、±8、±10、±15、±20、±30 分钟
搜索半径 ±15 / ±30 / ±60 分钟;±120 仅说明几何边界,未评分
候选步长 1 分钟,含两端;不是生产 2 分钟抽样
12 文件历史身份 b15d9ea15227cd58(完整值见 JSON
实际评分路径 原生 event contribution matrix;不是 T2 的 shadow fact ranker
额外身份 JSON 的 production_scoring_sha256research_implementation_sha256 分别绑定扩展评分文件和研究适配文件;显式文件清单不是完整传递依赖锁
头名与排名 分数降序,再用既有 _opaque_winner 同源 SHA-256 规则排同分;不选择最接近真值的候选
交付区间 初始未答题:signature clusters 中落后头名不足 8 分的仍有效簇外包范围;无新回答、无淘汰,不是完整问答链交付效果
跨午夜 候选、误差及区间使用完整日期;修复后的原生单矩阵内按候选日期计分,全窗排序/聚类;不再运行日期分组适配
独立性 is_blind_evaluation=false,已曝光集;评分/区间定稿后才揭示标签,仅证明程序标签隔离

实测表

每格依次为 真值在窗比例 / 哈希头名命中 / 初始交付区间覆盖,分母均为 20 例。列为申报偏移分钟,行为搜索半径。统一口径:v3、raman/mean、1 分钟步长;历史 12 文件打分身份 b15d9ea15227cd58,扩展原生评分身份 7fffd1db612af1f2,研究评测身份 2931d4661bf53dde

半径 -30 -20 -15 -10 -8 -5 -3 0 +3 +5 +8 +10 +15 +20 +30
±15 0/0/0 0/0/0 100/10/95 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/95 100/15/95 0/0/0 0/0/0
±30 100/10/95 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/95 100/15/95
±60 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100 100/5/100

表内全部数字单位为 %。这只是 20 例公开已曝光案例的条件敏感性,不附会总体置信度。即使真值在候选窗中,±15 的 -15/+10/+15 档及 ±30 的 -30/+20/+30 档仍各有一例未被初始交付范围覆盖;窗口包含与交付覆盖必须分开。±60 的所有采样偏移虽保持覆盖,但真正选中的头名只有 5%,不能用宽区间覆盖声称分钟准确。

修正版与错误初版的汇总比例恰好相同,不表示初版评分正确;身份、逐候选计算与跨日回归以修正版为准。

放宽能救回什么

  • 真值在候选窗的条件始终是 abs(offset) <= radius。本次偏移最大绝对值 30,因此半径 30 / 60 / 120 在几何上都能包含本次所有偏移标签。
  • 对 ±15 已出窗的 ±20 / ±30 两组偏移,放宽到 ±30 可把候选窗包含率从 0 恢复到 100%;±60 / ±120 对这些特定偏移不再增加几何包含率。
  • 半径 ±30 自第 31 个整数分钟偏移出窗,±60 自第 61 个、±120 自第 121 个。放宽不是无条件保证,更不代表排名命中或交付覆盖同样恢复。
  • ±120 未跑评分,不报告其头名命中率或交付覆盖率。真实用户申报偏差分布未知,不估算现实用户中有多少人能被放宽救回。

历史初扫、日期分组版与本轮原生重跑

历史初扫正确枚举跨日候选,但矩阵内 transition proximity 共用窗口起日,因此初扫作废。其后已修成 candidate_date_grouped_v2 离线日期分组版,旧同名 JSON 是这个修正版,不是错误初扫。修正版旧身份:扩展原生评分 115c3fbcffdaff49,研究适配 8d0c613dc0900adb,旧数值不能被误说成必然错误。

本轮 replay_revision=native_candidate_date_v3:生产 helper 已修,score_window() 改为一次原生矩阵调用;回归同时锁定调用次数为 1、与逐候选独立真实引擎重算相等。不再保留运行中的日期分组替代路径。旧数字因实现/路径身份更新不再代表当前报告,是否变化只由完整比对决定,不能预设数字必变。

这里只保证 matrix scoring path 是修复后的原生单次调用,不是完整生产端到端回放。 shifted_window() 使用完整日期,delivery_moments() 按完整日期定义研究交付外包区间;它们仍是离线协议。协调独立审查另报 BUG-982/983:生产跨午夜簇/span 的钟点排序与前端早凌晨申报窗日期锚点仍有独立缺陷。本研究不覆盖这些路径,不能凭区间覆盖数字声称线上所有跨日问题已修。

本轮预冻结身份

项目
冻结时间(先于评分) 2026-09-20T04:56:55.260470+00:00
原 12 文件 b15d9ea15227cd58b3097555537fa7c37fb5a993905ada4f5aa04f52de1f8f18
扩展生产 18 文件 7fffd1db612af1f244a8b5d5eac2f1a3f5a8e9e138c09ac6b3743b98f9a47a51
研究/校验 7 文件 2931d4661bf53dde5c57f6492de65be4c00877293b7277353279a05eda5af215
冻结文件 SHA-256 1f281b6c3e9b5a7dc2de91fb2ae1fd94da38f9b8a7bb1f930f670e9a39865074

原 12 文件未变,但实际变化的 scoring_service.pydasha_transition_proximity.py 都进入扩展身份。冻结亦绑定数据集、所有组合/参数、每文件字节哈希、归档 manifest 和评测器;评分前后核对,漂移即拒绝,不能事后刷新冻结。准备阶段曾因旧 JSON 覆盖被安全工具拒绝而迁移新报告路径,准备产物及弃用原因由历史目录 preparation_manifest.json 保留;最终路径评测器另行预冻结,没有追认旧冻结。

可复算产物与验收

python scripts/research/reported_offset_sweep.py --json
python -m pytest tests/test_reported_offset_research.py tests/test_rectification_validation_integrity_gate.py -q

reported_offset_cross_midnight_2026_09_20.json 保留逐例四项必要输出:真值是否在窗、真值排名、头名分钟误差、交付区间覆盖,以及每个格子的分母、全部参数和实现哈希。仅保存公开集序号,不保存出生分钟、坐标或事件正文。

最终全量 900/900 组合完成,用时 399.902 秒;排除 0 例。与旧日期分组版逐例全部字段相同,改变 0/900,45/45 汇总格一致。 JSON 的 historical_comparison.trials 保留所有 before/after 与 changed_fields(含未变化行)。这符合旧最终版已经做日期分组修正的事实,不表示生产旧 helper 没有 Bug。本轮没有调参、删失败样本、换半径或把已曝光集包装成新独立盲测。

既有测试断言变更

原值 / 原断言 新值 / 新断言 原因
跨日实引擎 grouped == expected 且生产 old_rows != expected 原生单矩阵 native == expectednative_rows == expected,并锁一次矩阵调用 原测试第二条锁住的是已知生产缺陷;修复后必须相等。独立逐候选真实引擎 oracle 原样保留并强化,不是删掉差异验证
replay_revision=candidate_date_grouped_v2 native_candidate_date_v3 原生路径已修,不再离线分组
记录测试读取旧 JSON 读取脚本新 REPORT 路径,全部数据集/评测器/生产/研究哈希断言保留 旧产物原字节留档,新报告独立创建
仅运行后记录参数身份 预冻结完整身份,评分前后核对;新增漂移提前拒绝、时间先后、完整旧新对比断言 不能事后伪造冻结或只比较有利样本

本轮定向验证:test_reported_offset_research.pytest_sealed_holdout_contract_freshness.pytest_rectification_validation_integrity_gate.pytest_rectification_confirmation_and.py 合计 52/52 通过(含桥接重复收集)。独立逐行比较新旧 900 trials、45 summary 全相同;当前报告 SHA-256 为 26c3d4a6e5e96ffaacdd00c64b5f3ed08fb9eacb18ef6fffc4b01c15159207b4。旧产物与准备产物 manifest 的全部字节校验通过。预检因既有 Windows 镜像路径断言失败(23 通过 / 1 失败),不是预检通过。完整环境/广域验收由 ../tasks/PROGRESS-rectification-cross-midnight-20260920.md 记录。

排名不能与 T2 的竞争排名 top-1/top-3 混比:T2 按旧协议允许并列多个分钟同时算第一;本表把同分完全按哈希打破。最终测试数字与已知基线失败见 进度。真实分布采集与新未曝光样本见 v5 协议