Files
ft/CodexOutput/upserver/阶段4B2独立实施复核-2026-09-24.md

58 lines
5.6 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.
# 阶段4B2独立实施复核
日期:2026-09-24(受审交付落盘2026-09-23)。审查者:ZCode会话。
**独立性声明**:本审查者未参与4B2任何生产/测试代码的编写与实施;此前参与仅为设计层差异补审(D1–D5审查报告,受审对象均为主会话编制的方案文档)。本轮全部复核命令由本会话亲自执行,结论以实际结果为准。
本轮只读+仅新增本文件与复跑日志(`review-*`前缀,新文件名,未覆盖任何交付证据);未改生产代码/共享文档;无子Agent、无正式服、无PlayMode、不打包。
## 受审hash核对
`KVGameLoadTests/checkpoint4-delivery-hashes.json`共**221项,逐项重算SHA256全部一致**。边界证据JSON:123项基线=85原样+38获批变更+**0项白名单外**(`outside=[]`);ClubService仅新增KV块(P2-β兑现);65个KV入口方法直审0违规标记。
## 复核结论
**接受4B2实施。无P1/P2。** 建议:主会话核对hash与逐条裁决后关闭4B2;4B3(读写路由)另立方案评审,P2-α(真实存量档迁移+用户产品确认)仍为正式启用硬门。
## 独立复跑结果(全部本会话执行,真实退出码)
| 命令 | 结果 | 退出码 | 复跑日志 |
|---|---|---|---|
| `KVGameLoadTests`(离线) | 75组/0失败/**1715断言** | 0 | review-offline.log(新run `20260924021937_2c8e39d5…`) |
| `--cleanup-failure prepare/schema/apply` | 5+8+8=21断言全过 | 0×3 | review-cleanup-*.log |
| ServiceHost(非Android) | 8组/73断言/formalRequests=0 | 0 | review-service-false.log |
| ServiceHost(AndroidProbe) | 8组/73断言/formalRequests=0 | 0 | review-service-android.log |
| ServiceHost(PlayerProbe非编辑器工厂) | 两类能力工厂缺失确认 | 0 | review-service-player.log |
| KVContractTests | 42/42 | 0 | — |
| KVSyncTests | 86/86 | 0 | — |
| KVSyncCoordinatorTests | 29/29 | 0 | — |
| KVSyncCoordinatorReviewTests | 通过 | 0 | — |
| **KVStage3CTests --offline** | **首跑7/8(L7失败)→ 单独复跑8/8** | 1→0 | **review-3c-firstfail-20260924.log(首败证据已按P3-1规程保存)**+review-3c-rerun |
| KVLoginContextTests(4B1) | 23组/278断言 | 0 | — |
| KVLiveTests仅build | 0错误 | 0 | — |
| Unity CLI Loop compile | Success=true/0错误 | 0 | review-unity-compile.log |
| **Unity B2-20完整事务** | **success=true,31真实模块,双epoch,83断言,auth=2/gets=2/borrowed=1(401)/forbidden=0/eventPublishes=0/eventSubscriptions=0/sameObjects=true/restored=true/fullB220=true** | 0 | review-unity-b220.json |
(Unity Editor隔夜未运行,本审查按操作入口文档以2022.3.62f2c1启动后复跑,get-version确认DataPath正确。)
## B2-01~B2-22逐条裁决
依据交付矩阵§3–§5、边界证据JSON与本复跑:**B2-01~B2-20全部通过**(关键项:B2-07同对象A→B整组空态由19局部用例+B2-20同对象断言证实;B2-11拒写门经guard代码抽查——`PlayFabMgr`全部入口前置`Reject`(Compare/Update/Lifecycle×4/PrefsSave)且PrefsSave在`PlayerPrefs.Save()`之前;B2-15/16/17经B2-20的forbidden=0与QuitAct代码抽查——`:37`同步撤销先于任何await、`:54`Hub后有界观察;B2-18经cleanup-failure三进程+OriginalError保留;B2-19经4B1 23组复跑)。**B2-21通过**(回归最终全过;两个偶发失败事实与处理见下)。**B2-22由本报告完成独立实施复核部分,关闭裁决归主会话。**
## 已知事项裁决(提示词要求逐项)
1. **KVSync偶发85/86(StorageError)+本次新增:3C L7偶发7/8(InvalidOperationException)**。两项均为:连跑链中首跑失败、单独复跑全过、**失败套件的Program与各自验收版本字节一致**(本审查重算:KVSyncTests `217FCDC2…`、KVStage3CTests `66C41B8B…`=3C修复终版)——**非4B2引入**,属并发重组用例在本机的时序敏感(负载相关)。裁决:不阻塞4B2验收;偶发调查项从一项扩为两项(3A StorageError+3C L7:965附近),建议单独立项在连跑负载下复现并定位;本审查已按规程保存首败完整日志与堆栈,不以复跑成功覆盖。
2. **旧NetworkTransport仅构建不运行**:接受。其依赖转发正式服的代理,评审启动代理即越权;交付如实标注"未覆盖",不冒充。
3. **ServiceHost的PF公共路径在真实API前故意失败**:接受——受控范围定义如此,不称真实渠道端到端通过;诚实边界。
4. **非Android DTO兼容为未触达旧分支的测试构建**:接受,已在证据中如实限定。
## 其他观察(P3)
- **P3-1**:离线断言计数1715(本复跑)vs 1713(交付)——交付hash 221/221一致排除代码漂移,属并发组合断言计数波动(4B1先例273+5=278 vs 279同类);记录不改结论。
- **P3-2**:Unity验证依赖Editor运行态——运维注意项(隔夜关闭后需先启动2022.3.62f2c1;本审查已验证启动流程可靠)。
- **P3-3**:`UserService.KVLoad.cs`的`RejectSaveBackend`把非法后端值同时归入`BackendUnsupported`分支逻辑清晰,但建议实施记录注明"kv→BackendNotEnabled、其他→BackendUnsupported"的映射表已固化,供4B3接线方查阅。
## 边界重申
4B2通过=受控加载链具备与验证完成;**LoadedForValidation不授玩法/Done/IsLogin**;正式启用硬门=P2-α(真实存量档兼容/迁移专项+独立评审+用户产品确认)+4B3读写路由+4C消费+tickets有界历史+4D场景验收。本报告不授权4B3、不宣布4B2关闭(主会话核对hash、逐条裁决后关闭)、不构成对28→31模块以外任何未验内容的追认。