Files
ft/CodexOutput/upserver/阶段4B3A限定代码自审-2026-09-24.md

28 lines
2.9 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.
# 4B3A限定代码自审
作者自审,不替代独立实施复核。自审对象是本次批准的PlayFabMgr新增四入口、键结果、Editor验证转接及新测试;未声称整个游戏已经迁移。
## 合同核查
1. 四入口均internal static、显式handle,无新增可变运行时全局状态或生产调用者;guard先于输入判断。写/Flush/Wait直接返回原handle结果或Task;没有catch隐藏未预期异常,Unexpected用例验证原异常传播。
2. Read只做一次本地Snapshot,精确key规则沿用ValidKey。三态Found明确;失败不生成空档,结果包含固定身份而不是后续写授权。
3. Write不改变localOnly/pending语义,不改StorageError的sequence/revision/uncertain字段。Flush水位、票据归属和观察取消由既有实现拥有,没有另建定时器或Owner。
4. 旧PF字节剥离比对一致;2101原源码仅PF变化;原B2封板221项仅PF变化。扫描新方法引用仅定义和Editor host。详细路径/行号见checkpoint4-boundary-audit.json。
5. Editor host整体UNITY_EDITOR && !SERVICE_HOST;包装器位于Editor目录,固定HotUpdate类型/方法/唯一case。仅既有合成工厂/handler,地址kv-route.invalid,不创建PF组件或启动容器。guard只释放本次所有权,先Close Bridge再Dispose认证session;清理异常保留失败Owner并抛出,不返回恢复成功。
6. 三条测试路径均实际链接生产源码;stub只替代Unity/SDK边界。PlayerProbe表面证据不能替代Unity Player链接/裁剪验证。
## 设计P3落实
- P3-1:Storage自建本run唯一state.json.tmp目录,finally非递归删除并断言不存在。
- P3-2:仅报告无生产调用者与非Editor条件表面;无链接/裁剪/打包结论。
- P3-3:键结果XML明确Found=null失败、false有效缺键、true存在(含空串)。
- P3-4:保留B后续合同,Blocked中止当前操作并走归属恢复,不获取新账号handle重试;本轮没有实施B。
## 自审补测与限制
自审发现原新用例只显式验证B缓存/请求,Read与Close的竞争和示例共享内存断言不足,遂在已批准测试范围内补齐;生产代码未改。默认/Android/PlayerProbe最终均13组544断言,原13组508日志保留。Flush/Close排水由CancelDrain验证。不声称这些有限竞争样本覆盖全部线程交错或游戏回调。
AfterReplace uncertain=true只使用旧KVSync故障覆盖及facade直接返回审计;ReadFailed等不全部由新facade重造,符合原方案的证据边界。新测试沙箱File.Replace权限失败已定位,但旧KVSync本轮85/86→86/86的根因仍未定,不混为同一问题。3C L7本轮8/8但旧问题仍开放。
主会话未发现本轮范围内需要扩展方案的生产改动。交付状态仍是待独立实施复核,A未关闭;19项详见交付矩阵。其他原工作区改动不归为本轮,未重审真实渠道或未批准的B/C业务实现。