Files
ft/CodexOutput/upserver/阶段4A实施复核裁决与关闭-2026-09-23.md

55 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 阶段4A实施复核裁决与关闭
日期:2026-09-23。依据:用户指令“复核完成,继续”、[外部独立实施复核](阶段4A独立实施复核-2026-09-23.md)及[交付矩阵](阶段4A交付与验收矩阵-2026-09-23.md)。
**裁决:接受4A实施,4A限定阶段关闭,无待修复P1/P2。下一步只进入4B方案准备和独立评审,不授权游戏接线编码或正式业务KV写入。完整G4尚未通过。**
## 1. 版本与证据核对
- 主会话本轮重新计算 `KVGameBridgeTests/final-source-hashes.json` 中10项SHA256,全部一致;`scope-hash-check.json` 中14项当前文件均与记录的after一致。
- 外部报告的三份生产hash以省略形式展示并引用交付完整值;本轮以完整SHA256核对,无受审版本漂移:
| 文件 | 完整SHA256 |
|---|---|
| PlayerKVSessionOwner.cs | BFB5AC0DF38BCACC341646292ACAA71606F2DC5FECF91535785D222EAFACF7B5 |
| PlayerKVLocalReadResult.cs | 9A00AA0ECEA286FC4474729A1BFABDD3D5A1453182B5FCB91D11CD81724481AF |
| PlayerKVGameSessionBridge.cs | DD888351BFA4BBA03E953F39E11362AF8EA9F76FB56AC1CB77D9053C81227363 |
- 已读取独立run `20260923081335_85da5c670ba7437396b57a153ce03ac6/result.json`:18组全部通过、failures=0、报告内221断言;外部报告的226包含输出末尾5项脱敏检查,与原交付口径一致。
- 独立Unity强制编译JSON为 `Success=null`,Message要求读取日志;后续Error日志为0条。只接受“强制编译调用后错误日志0条”,不将null写成Success=true。同一源码的原交付 `unity-compile.json` 明确Success=true、0错误/0警告,继续有效。
- 42/86/29、Review、3C离线8/8、KVLiveTests仅构建等独立复跑结果采用外部报告的记录,本会话没有重跑,不冒充本会话实测。KVSyncTests首轮失败单列保留如下。
## 2. 外部发现逐条裁决
| 编号 | 裁决 | 理由、边界及后续 |
|---|---|---|
| P3-1 偶发85/86 | 接受为非阻塞待查项;不接受“已证明预存在/已定位为时序问题”的强表述 | 外部记录一次失败且未保留用例名,随后三轮86/86。相关生产hash未变可证明未修改那些文件,不能证明失败根因或此前已发生。当前无可归因4A的缺陷证据,因此不阻塞4A;后续执行必须完整保留stdout/stderr和退出码,复发时保留首个失败证据并独立排查,不用重复成功覆盖失败记录。本轮不改测试或生产代码。 |
| P3-2 Handle失效判定粒度 | 接受观察,不做形式统一补丁 | Update/Delete/Read经Owner操作租约的TryEnter再次检查固定session/epoch,Flush同样经租约;Wait在桥接层做完整IsCurrent后委托等待。入口判断表面不同不能等同“旧写能通过”。4B使用固定句柄,并继续验证session/Cookie/epoch变化,不依赖只检查Revoked。 |
| P3-3 isCurrent轻量约束 | 采纳,纳入4B设计合同 | 回调只能同步读取捕获身份/代际及撤销标志,不执行I/O、不触发登录/Close、不等待任务,不获取可能与关闭流程反向依赖的锁。不得同步等待自己的Close。后续接线按此审查。 |
## 3. A1–A12逐项裁决
以下采用交付矩阵、外部逐项复核、独立run及本轮hash核对;接受范围仅为独立层,不代表游戏场景已经切换。
| 编号 | 裁决 | 核验结果与限制 |
|---|---|---|
| A1 | 接受 | Ready合并快照、独立不可变字典、归属字段;独立run对应A1通过。 |
| A2 | 接受 | 参数/认证/取消拒绝、初始Get中Close真实收尾;对应两组A2通过。 |
| A3 | 接受 | 初始读取失败释放、Busy/Conflict/Unknown/StorageError不返回空档、清理失败阻塞、Unknown票据保留;对应各A3组通过。 |
| A4 | 接受 | 旧传输忽略取消时新Owner仍等待,释放后MaxActive=1;组合组通过。 |
| A5 | 接受 | 同号重开、重复Close、旧句柄撤销;对应A5通过。 |
| A6 | 接受 | 旧句柄读写/Flush/Wait拒绝,不借102账号;组合组及外部代码复核支持。 |
| A7 | 接受 | 排队Open取消不取消旧Close屏障,下一合法Open可完成。 |
| A8 | 接受 | 在途Flush下读取、读后代际失效、失效优先、读重入Close租约排水;四组通过。 |
| A9 | 接受 | 登录session销毁/换Cookie后的旧读写等待拒绝,桥接不拥有登录session;对应组通过。 |
| A10 | 接受 | Close不隐式Flush、pending保留重开、显式Flush确认;对应组通过。 |
| A11 | 接受 | 替身实际传输、默认handler只构造检查、脱敏边界清楚;无正式服务调用,非抓包证明。 |
| A12 | 接受并保留P3-1 | 外部回归及构建记录、同hash原Unity成功证据、边界记录相符;偶发失败原文保留,不宣称全部尝试均成功。 |
## 4. 开发边界与下一步
- 本轮仅更新文档与裁决,不修改4A代码、测试、csproj或原复核报告;不以P3为由自行新增修复。
- 4B先编制具体方案,按既有分工交用户指定外部AI独立审查,再由主会话逐条裁决,明确文件边界后编码。不创建子Agent代替外部审查。
- 正式地址固定 `http://s101.local:18080/`,Unity只使用Unity CLI Loop,不使用UnitySkills,暂不打包。
- 4C消费流程、身份专项、完整初始化副作用及回调隔离、tickets有界历史、正式场景测试数据授权仍有后续门;4A关闭不放行这些工作,也不授权PF/KV双写或自动迁移。