# 申报偏差敏感性评测(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_sha256` 与 `research_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.py` 与 `dasha_transition_proximity.py` 都进入扩展身份。冻结亦绑定数据集、所有组合/参数、每文件字节哈希、归档 manifest 和评测器;评分前后核对,漂移即拒绝,不能事后刷新冻结。准备阶段曾因旧 JSON 覆盖被安全工具拒绝而迁移新报告路径,准备产物及弃用原因由历史目录 `preparation_manifest.json` 保留;最终路径评测器另行预冻结,没有追认旧冻结。 ## 可复算产物与验收 ```bash 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 == expected` 且 `native_rows == expected`,并锁一次矩阵调用 | 原测试第二条锁住的是已知生产缺陷;修复后必须相等。独立逐候选真实引擎 oracle 原样保留并强化,不是删掉差异验证 | | `replay_revision=candidate_date_grouped_v2` | `native_candidate_date_v3` | 原生路径已修,不再离线分组 | | 记录测试读取旧 JSON | 读取脚本新 `REPORT` 路径,全部数据集/评测器/生产/研究哈希断言保留 | 旧产物原字节留档,新报告独立创建 | | 仅运行后记录参数身份 | 预冻结完整身份,评分前后核对;新增漂移提前拒绝、时间先后、完整旧新对比断言 | 不能事后伪造冻结或只比较有利样本 | 本轮定向验证:`test_reported_offset_research.py`、`test_sealed_holdout_contract_freshness.py`、`test_rectification_validation_integrity_gate.py`、`test_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 按旧协议允许并列多个分钟同时算第一;本表把同分完全按哈希打破。最终测试数字与已知基线失败见 [进度](../tasks/PROGRESS-rectification-validation-20260920.md)。真实分布采集与新未曝光样本见 [v5 协议](sealed_holdout_v5_protocol_2026_09_20.md)。