fix(rectification): enforce trusted result identity and preserve receipt provenance
Unify minute and block cache identity, keep unverifiable historical results read-only across server tools and write entrypoints, and aggregate completed receipt sources chronologically through a compatible function migration. Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
# BUG-984 补单验收清单(2026-09-20)
|
||||
|
||||
当前 **blocked**:F2 A 局部实现,多 completed 混版本实测触发 B,SQL 未获授权;F1/F3 尚未实现。以下不是已通过清单,不能将本分支当完整修复部署。
|
||||
B授权停点已解除,F1/F2/F3本地实现;标准DB40/40,完整结果以PROGRESS最终记录为准。下面区分自动化与尚未完成的受控staging真人验收,不能把本地通过等同已部署。
|
||||
|
||||
## 自动化续验
|
||||
|
||||
- [ ] 获准 B 后新增兼容函数体迁移,不修改旧迁移,标准 `npm run test:db` 实跑。
|
||||
- [ ] 同一成功 attempt 的 started -8 / completed -7 只展示 -7;历史行字节不变。
|
||||
- [ ] 同 turn compare / diagnostics 多 completed -9 / -10 不按字符串序选 9;明确取最新成功的稳定排序与各工具来源语义。
|
||||
- [ ] 失败后重试、成功后失败、不同 attempt、历史未带新 metadata 都覆盖,不能用当前 dossier 身份替代历史来源。
|
||||
- [ ] minute / late-night block_scan 均用真实 golden 测同身份命中、旧身份重算;未知当前身份时旧缓存只读、不强制重算。
|
||||
- [ ] 无覆盖、完整覆盖、部分覆盖、版本接口超时/错误均区分当前身份与来源。
|
||||
- [ ] 不经界面直接调所有采用/确认/候选选择写入口,旧只读结果均由服务端拒绝。
|
||||
- [ ] `BUG-621` 历史按绑定 Skill 打开回归;不增加 engineVersion 打开相等门。
|
||||
- [ ] tsc、lint、定向、全量、build `/` Static、首屏 gzip ±2%;实际平台失败与基线逐项对照,不削弱断言。
|
||||
- [x] 获准 B 后新增兼容函数体迁移,不修改旧迁移,标准 `npm run test:db` 实跑40/40。
|
||||
- [x] 同一成功 attempt 的 started -8 / completed -7 只展示 -7;历史行字节不变。
|
||||
- [x] 同 turn compare / diagnostics 多 completed -9 / -10 不按字符串序选 9;明确取最新成功的稳定排序与各工具来源语义。
|
||||
- [x] 成功后失败重试、不同 attempt、历史未带新 metadata、latest failed-only均覆盖,不能用当前 dossier 身份替代历史来源。
|
||||
- [x] minute / late-night block_scan 均用真实 golden 测同身份命中、旧身份重算;未知当前身份时旧缓存只读、不强制重算。
|
||||
- [x] 无覆盖、完整覆盖、部分覆盖、版本接口超时/错误均区分当前身份与来源。
|
||||
- [x] 服务层采用/确认/推进、工具offer与compare/read/diagnostics、idle/repair行为回归,旧只读结果由服务端拒绝;真实HTTP伪造请求与浏览器交互留真人栏。
|
||||
- [x] `BUG-621` 历史按绑定 Skill 打开回归;不增加 engineVersion 打开相等门。
|
||||
- [x] diagnostics追加修复后tsc/lint0error、最终定向37/37、新快照全量3588/3588(基线3575/3575)、build `/` Static、完整28个首屏JS/CSS gzip+0.040085%;Windows平台问题以保真Linux补验,不削弱断言。
|
||||
|
||||
## 受控 staging 真人验收(由主会话安排)
|
||||
|
||||
@@ -20,9 +20,11 @@
|
||||
|
||||
- [ ] 先核对部署 gitCommit(允许其后纯文档差异),不是只看 HTTP 200。
|
||||
- [ ] 依次测试分钟历史结果与 late-night 时段历史结果;记录是否缓存、实际来源版本、是否重算,不记个人资料。
|
||||
- [ ] 版本探测异常时旧结果仍可查看,显著出现“按旧算法产出”;没有采用/确认/选择写入口,伪造请求也拒绝。
|
||||
- [ ] 版本探测异常时旧结果仍可查看,显著出现“按旧算法产出”;没有采用/确认/选择写入口,伪造请求也拒绝;诊断工具不重计算,只读来源不变、can_confirm_exact_minute=false。
|
||||
- [ ] 已生成历史回执来源保留,不显示 started 的部署版本;旧 Skill 会话仍可从侧栏打开。
|
||||
- [ ] 恢复版本接口后当前同身份缓存可正常复用,身份变化按新规则重算,不删除或重标旧结果。
|
||||
- [ ] 恢复版本接口后当前同身份缓存可正常复用;旧身份的非终止历史显示「重新比较」,点击确实启动一次既有流程,普通旧候选不能采用。打开/刷新本身不强制重算;接口再次失败则仍只读,不删除或重标旧结果。
|
||||
- [ ] 历史首次打开与刷新即有只读说明,不必先compare;unknown时无重新比较按钮,不错误显示「该校正已结束」。
|
||||
- [ ] 新算响应版本与可信当前pair不一致时保存真实来源,仍不可采用,不能被前端默认版本重标。
|
||||
- [ ] 失败重试后活动与成功来源一致;多人/多个请求压力下没有把版本接口抖动放大成强制重计算。
|
||||
|
||||
当前没有浏览器级完成证据,本 agent 未调用线上。详见 `docs/tasks/PROGRESS-rectification-cross-midnight-fix-20260920.md`。
|
||||
|
||||
Reference in New Issue
Block a user