test(rectification): compare same-day scores against legacy path in process
Replace machine-specific float hashes with strict score and matrix byte comparisons. Keep quick bridge coverage and document duplicate collection. Verify Windows/Linux float behavior and in-memory candidate-date reversal; record the separate-machine acceptance gap and BUG-984 end-to-end blocker. Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
+20
-1
@@ -12960,6 +12960,7 @@
|
||||
- 修复:按产品已批准的任务书,先红测再改候选级日期与缓存键,不调权重;冻结重跑和 V9 版本标记同步实施。进度见 `docs/tasks/PROGRESS-rectification-cross-midnight-20260920.md`。
|
||||
- 验证:原实现新增测试 4 failed / 4 passed,修复后 9 项与 quick 桥接重复执行共 18 passed;另 3 项既有版本/枚举回归通过。19 个公开 AA 同日窗口、2299 个候选分数与矩阵字节不变;实跨日窗口全候选等于逐候选日期正确独算。性能配对中位 -0.87%,满足不超 +20%;口径 v3、raman/mean、±60、步长 1,旧 12 文件身份 `b15d9ea15227cd58`、新扩展生产身份 `7fffd1db612af1f2`。独立主会话日期/隐私补验 80 项通过。尚无部署证据,保持 investigating。
|
||||
- 验收边界:已有时段缓存与聚合回执身份导致 T4 未完整通过,见 BUG-984;另发现 BUG-982/983,不把候选级日期一致夸大为所有跨午夜路径端到端正确。
|
||||
- 独立 review:`aa46da10` 核心修复本身通过;新增回归的门禁级跨机浮点哈希问题单独立号 BUG-985。F3 已确认时段重算经过已修 helper,证据未变的历史跨午夜时段缓存却会绕过新算法,故 BUG-984 是本项端到端验收阻塞项,不以测试修复代替缓存或部署闭环。
|
||||
- 防复发:新增生产打分层跨午夜回归并接入 quick 收集;候选枚举正确不再被视为下游日期正确的充分证据。保留 BUG-427/428 的实现身份与已曝光边界。
|
||||
- 相关记录:BUG-098、BUG-427、BUG-428、BUG-621、BUG-978、BUG-979。
|
||||
- 复发自:BUG-098 的跨午夜兼容只覆盖逐分钟枚举,未覆盖后加的 transition-proximity 层;BUG-979 已在离线适配发现,但其范围禁止改生产,因而没有消除此生产缺陷。
|
||||
@@ -13006,10 +13007,28 @@
|
||||
- 影响面:V9 `block_scan` 缓存、工具活动回执与 turn 级聚合。
|
||||
- 用户现象:升级算法后,同证据的时段模式仍可能直接返回旧分数;开始活动显示新版、成功结果实际属于旧版,聚合字段又可能展示新版。
|
||||
- 触发条件:历史时段缓存证据指纹未变;本次运行默认版本已升,而缓存算法身份仍旧。
|
||||
- 根因:`scoreAndPersistV9Candidates()` 的时段分支在版本探测之前按证据指纹提前返回;成功回执使用旧结果身份,但 SQL 将不同阶段的 `engine_version` 取字符串最大值,而不是成功结果来源。分钟模式另有环境覆盖/探测失败回退边界,不能宣称身份无条件一致。
|
||||
- 根因:`scoreAndPersistCurrentEvidence()` 的时段分支在版本探测之前按证据指纹提前返回;成功回执使用旧结果身份,但 SQL 将不同阶段的 `engine_version` 取字符串最大值,而不是成功结果来源。分钟模式另有环境覆盖/探测失败回退边界,不能宣称身份无条件一致。
|
||||
- F3 调用链查证(2026-09-20):前端时段分支 → `runV9BlockScan()` → POST `/api/rectification/v5/block_scan` → `_compute_rectification_v5_block_scan()` → `api_service.block_scan()` → `score_candidates()` → `build_event_contribution_matrix()` → `merge_transition_proximity()`;时段支持率确实消费该候选分数。故本项升级为 BUG-981 端到端验收阻塞项。受影响的是证据未变、未触发三轮转分钟的历史跨午夜时段缓存命中;新建/无缓存/证据变化仍走已修路径。`late_night` 299 分钟跨日;`unknown` 1439 分钟虽同样走时段扫描,其首轮 `00:00–23:59` 本身同日,不能据此声称有跨日偏移,选中跨午夜时段后才触发。逐层行号见 `docs/tasks/PROGRESS-rectification-cross-midnight-gate-fix-20260920.md`。
|
||||
- 修复:未实施,当前 Dasha 单不顺带改缓存政策或 SQL;补单 `docs/tasks/TASK-rectification-cross-midnight-dasha-fix-20260920.md` 待批准后执行。
|
||||
- 验证:独立纯虚构 TS 探针使用替身 RPC/fetch,旧时段缓存返回 `cached:true`、算法尾号 -7、fetch 次数 0;真实工具调用路径记录 started 尾号 -8 / completed 尾号 -7。聚合 SQL 的 `max(engine_version)` 已核源码,未真跑 DB,因此不伪称数据库端到端通过。
|
||||
- 防复发:后续必须分别覆盖分钟/时段缓存、实际版本接口、部分环境覆盖与接口失败,成功回执必须绑定实际结果来源;历史打开与 Skill 绑定不变,不得重标或删除旧结果来掩盖问题。
|
||||
- 相关记录:BUG-427、BUG-621、BUG-981。
|
||||
- 复发自:未发现同症状既有记录;既有分钟算法身份缓存门不覆盖提前返回的时段分支,回执测试未组合新版 started 与旧缓存 completed。
|
||||
- 修复版本:未实施;本轮 T4 仅完成默认及后端身份同步,整体验收未通过。
|
||||
|
||||
## BUG-985 | 同日不变性回归写死浮点分数哈希导致跨机门禁失败
|
||||
|
||||
- 状态:blocked
|
||||
- 首次发现:2026-09-20
|
||||
- 最近更新:2026-09-20
|
||||
- 影响面:`tests/test_dasha_transition_proximity_cross_midnight.py` 及快速门 bridge;阻塞 `aa46da10` 的合入验收,不是打分修复本身的回归。
|
||||
- 用户现象:执行机器测试绿,换到不同浮点环境后 ordinal 2/3 红;选择源文件与 bridge 时重复为四项失败,门禁无法通过。
|
||||
- 触发条件:同日 121 个浮点分数的 canonical JSON SHA-256 与某台机器写死的历史字面量比较。
|
||||
- 根因:把“同环境新旧实现相同”的相对不变量写成跨环境绝对不变量。四位分数本身就可能不同,不是序列化尾噪。BUG-733 的既有防复发与同机差分测试仍在,但没有阻止新文件重引绝对浮点哈希,属同形复发。
|
||||
- 修复:保留三个 ordinal 和 121 个候选;A 使用真实 contexts,B 仅在 transition helper 边界去掉 `candidate_at` 进入既有 legacy 回退,主事件引擎继续使用完整 contexts;同机分数与矩阵 canonical 字节均严格相等,不加容差、不删测试、不 skip/xfail。bridge 顶部记录重复收集原因与独立用例数。
|
||||
- 验证:Windows 原测试 18 通过;隔离 Linux 原测试 14 通过/4 失败,复现跨环境差异。修改后两环境定向(含 memoization)均 32 通过、校正 glob 均 216 通过;内存回退候选日期后两环境均同日三项绿、真实跨午夜一项预期红。生产红线文件与历史 golden 本轮不改。
|
||||
- 验收缺口:Linux 是同一物理机上的容器,不冒充任务书要求的第二台独立机器;另一台 Linux 机器/runner 的本轮提交绿测未取得,因此不提前标 resolved。Windows quick 两侧缺 mcp;完整门禁结论见进度记录。
|
||||
- 防复发:同日/不变性类回归一律用同机相对比对,不得写死跨机浮点字面量;参照 `tests/test_rectification_engine_memoization.py` docstring 的跨机舍入教训。同日不变性与跨午夜正确性必须分开,以日期回退探针分别验证绿/红;桥接覆盖和重复计数必须明示。
|
||||
- 相关记录:BUG-981、BUG-733、BUG-712;F3 同步确认 BUG-984 为 BUG-981 端到端阻塞项。
|
||||
- 复发自:BUG-733(同进程可证的等价关系被跨机 golden 代替)。
|
||||
- 修复版本:`codex/rectification-cross-midnight-gate-fix-20260920` 本地实施,待独立机器验收及交付;详见 `docs/tasks/PROGRESS-rectification-cross-midnight-gate-fix-20260920.md`。
|
||||
|
||||
Reference in New Issue
Block a user