28 lines
2.9 KiB
Markdown
28 lines
2.9 KiB
Markdown
# 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业务实现。
|