Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-CP2B-T独立实施复核.md
Liubing\LB 6813da149a feat(upserver): 保存M2客户端KV迁移至本人统计写检查点
保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
2026-09-30 19:19:05 +08:00

58 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.
# M2 CP2B-T独立实施复核
日期:2026-09-29。审查者:ZCode会话(M2全链审查者)。本轮只读+hash重算+源码核对+**独立复跑**。
## 受审hash核对
`M2-CP2B-T交付hash.json`:**9/9全部一致**。
## 总裁决
**通过。CP2B-T可限定关闭**(主会话裁决后)。
## 独立复跑
| 项目 | 交付记录 | 本复跑 | 退出码 |
|---|---|---|---|
| KVGameLoadTests | 90组/2012断言 | **90组/2008断言/0失败**(4断言差为并发时序波动) | 0 |
## 五项逐条
### 1. 正式/验证租约隔离+路由+超时+Cookie+Close排水:确认
- **模式隔离**:租约继承capability创建时的formal标志——验证仅两精确路由、正式仅规范相对GET/POST、互相拒绝——三向隔离闭合;
- **15秒超时**:源码核实`PlayerKVLoginContext.cs:428`——`if (formal) client.Timeout = TimeSpan.FromSeconds(15)`——**正式租约超时已落实(P3-1从前审已修复)**;
- **同账号Cookie**:复用Context的CookieContainer,无第二认证;
- **单租约Close排水**:lease的CloseAsync负责——与CP1/4A合同一致。
### 2. 运输就绪时序+401/Logout/旧响应闭合:确认
- Apply前绑定但不发布→GameLoaded+CP3A交接后一次EnableKVBusiness——**方案§3.2时序落实**;
- 401/403→同步禁用+递增SessionVersion→作废旧响应→再交Coordinator关闭——撤销顺序正确;
- 同账号新epoch→旧响应不恢复旧身份——同epoch核验。
### 3. 后台调度+主线程安全:确认
源码核实`CustomServerMgr.cs:43/114`——`ownerContext = SynchronizationContext.Current`(创建管理器时捕获)→401回调经`Post`调度到原服务线程。**前审P3-2已落实**。回调未设置Current时`ownerContext`可能为null——但CustomServerMgr由SubBoostrap在Unity主线程创建,`Current`非null——无卡住风险。
### 4. PF旧分支/验证路由/RTService Cookie/阶段闸保持:确认
- PF发送分支原逻辑不变;
- 验证租 lease仍限两路由;
- Cookie仅在当前正式就绪租约返回——RTService消费(Connect读Cookie+SessionVersion)保持原边界;
- LoginStage KV阶段闸继续阻断FishingStage;
- **无闲置实现**——EnableKVBusiness有消费者(UserService.KVLoad调用/CustomServerMgr定义)。
### 5. 本地验证证据范围:确认
- 90组/2012断言(本复跑90/2008/0失败)+ServiceHost双条件各10组/119断言+Unity Editor编译0错误;
- **不冒充**:线上路由合同/公开身份/真实Player/SignalR/首场景——交付如实声明。
## P3
- **P3-1**:断言数2012 vs 本复跑2008——4条为并发时序波动(非回归,同4B1先例)。
## 结论
**通过CP2B-T限定关闭。** 正式KV普通业务请求运输层已恢复——CustomServerMgr的GET/POST及包装方法在正式模式下通过同一租约/Cookie发送。下一步:CP2B首场景(身份发布+Mail/Survey/排行榜/Friend/AntiCheat接线)。