保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
47 lines
3.6 KiB
Markdown
47 lines
3.6 KiB
Markdown
# M2 CP1独立实施复核
|
||
|
||
日期:2026-09-29。审查者:ZCode会话(M2修订1/修订2审查者、CP1方案审查者)。本轮只读+hash重算+源码核对+**独立复跑全部核心测试套件**;未修改生产/测试源码/共享文档。
|
||
|
||
## 受审hash核对
|
||
|
||
`M2-CP1交付hash.json`:**95/95重算全部一致**(含两生产文件、测试宿主、diff.patch、scope验证、全部日志与Unity证据)。旧19项基线中两获批生产源码变化为预期差异。
|
||
|
||
## 总裁决
|
||
|
||
**通过。CP1限定实施可关闭**(主会话裁决后)。无P1/P2;P3两条。
|
||
|
||
## 独立复跑
|
||
|
||
| 项目 | 主会话结果 | 本复跑 | 退出码 |
|
||
|---|---|---|---|
|
||
| KVGameLoadTests(加载宿主) | 84组/1911断言 | **84组/1911断言/0失败** | 0 |
|
||
| KVLoginContextTests | 23组/279断言 | **23组/278断言/0失败**(1断言差为环境时序,非回归) | 0 |
|
||
| B02RouteTests --all | 13组/544断言 | **13组/544断言/0失败** | 0 |
|
||
|
||
清理失败3进程(prepare/schema/apply)按交付记录5/8/8断言通过——本复跑未重跑(需--no-build,重建后hash变化会混淆交付基线,按提示词"区分交付与自建产物"处理)。
|
||
|
||
## 七项逐条
|
||
|
||
**1. 原handle来源与安全:确认。** `TryAcquireGameHandle`(:62–74)——先在gate外查`IsCurrent`(注释正确说明"可调用外部代码并同步重入CloseAsync"故在gate外),再gate内检查`closing/revoked/prepared/handle.Epoch`——不暴露Cookie、不创建新Owner。身份回调异常时`!IsCurrent`返回false——安全。
|
||
|
||
**2. 共用主体与验证语义保留:确认。** `LoadForGameAsync`复用现有`Prepare/Decode/Apply`主体(同一个`loginGate`信号量+同一个`transaction`),`forGame`参数区分返回状态枚举(`GameLoaded` vs `LoadedForValidation`)——原`LoadAsync`行为完整保留。
|
||
|
||
**3. 成功时序:确认。** 交付描述的顺序(Apply返回None→notify完成→token/context/epoch/Violations复核→获取原handle→释放Guard→发布GameLoaded)经代码检查与84组/1911断言覆盖——不只凭测试名认定。
|
||
|
||
**4. TryGet/Revoke竞争:确认。** `TryGetCurrentGameHandle`(:81–89)在`closeGate`内检查`closing/epoch/gameHandle`;Revoke在关闭排水前同步清除`gameHandle`引用——获取后关闭由既有Handle/Slot撤销机制拒绝。
|
||
|
||
**5. Guard释放边界:确认。** 释放后如果关闭故障,handle已交出——由既有Close屏障(Context的CloseAsync→Bridge.Close→session Dispose顺序)保证资源不泄漏;加载宿主的清理失败3进程测试覆盖此路径。
|
||
|
||
**6. 白名单与无关改动:确认。** 生产仅改Context+Coordinator两文件;KVMgr/Guard原样(B02RouteTests 544断言全过佐证);接手时已有19份Client改动保留。
|
||
|
||
**7. 合成环境限定:确认。** 三接口仅合成测试宿主可达——CP2未批准,"CP1通过不批准CP2编码"边界清晰。三接口反射探针被CLI Restricted正确拒绝——不绕过、保留限制说明。
|
||
|
||
## P3清单
|
||
|
||
- **P3-1**:Context测试断言数278 vs 交付记录279——1条差异为并发时序计数波动(4B1先例),非回归;记录不改结论。
|
||
- **P3-2**:CP2设计输入建议在主会话关闭CP1时同步启动——CP1交付文档已列出三接口的CP2消费点(启动分流/正式登录/业务操作获句柄),可直接作为CP2设计的起点输入。
|
||
|
||
## 结论
|
||
|
||
**通过CP1限定实施。** 主会话核hash(已代验95/95+独立复跑120组/2733断言全绿)裁决后关闭。**下一步:CP2完整设计**(正式启动/认证/工厂/绑定/路由五类接线——这是打通"正式可运行"的最大设计任务)。
|