Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-CP3A-C11交付与待终审-2026-09-29.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

25 lines
3.2 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 CP3A C11 交付与待终审
日期:2026-09-29。CP3A 完整前审及主会话裁决、Editor 直开单点补审及主会话裁决均已落盘。本文件汇总实施,不自行宣布 CP3A 关闭。交付十项代码/验证入口以 [`M2-CP3A-C11交付hash.json`](M2-CP3A-C11交付hash.json) 为准,主会话当次重算 10/10 一致,清单 SHA256 `2E3E1EB14807709E49A58937DC6AD30F015780F252F96027B9EE73AC4038F329`;历史受审清单不回写。
## 实际改变
1. 正常正式启动依旧冻结 `SaveBackend`、仅准 101/102 已有 KV 档、地址固定 `http://s101.local:18080/`。GameLoaded 后 `PlayFabUserService` 的原 `PlayerKVGameSessionHandle` 在同 epoch 核验后对现有 Setting/Club/Notification 原实例预检并一次绑定;部分失败沿 Coordinator 撤销路径,同进程不重绑。
2. Setting/Club 在正式 KV 无句柄期间对 `ShowNotice`/`IsOpenClubRed` 失败关闭,不触发 PF;绑定后保持 B01 对缺键、已存在值、Accepted/不确定及陈旧 Owner 的语义。通知保持已初始化原实例,绑定前检查初始化/授权在途,恢复后核固定 Setting。
3. Editor 直开 `InternalEditorBoost.Init()` 在服务注册前取容器冻结选择;缺选仅精确 `playfab` 时注册一次 PF 选择,已有 PF 沿用,KV 或未知拒绝,Setting 使用同一选择。此补审修复不改变正式 `SubBoostrap.RegisterServices`。
4. 纯 Editor 模块验证器中两处解码测试使用显式 PF 测试构造,避免无启动容器时误走正式 Club 构造。ServiceHost 因不编译真实 Setting/Club/Notification 增最小编译桩;这些桩**不**作为 CP3A 行为验收证据,真实对象由 Unity CLI Loop 固定用例执行。
## 本地验证
- Unity CLI Loop Editor `compile`:0 error/269 warning;未 Play、未打包。
- Unity CLI Loop 真实对象 CP3A 用例:28 断言通过,本地模拟 Get 3 次,正式请求 0;覆盖未绑定拒绝、同 handle 幂等、通知在途预检、部分绑定撤销和跨 epoch 拒绝。
- 旧 B01 23 断言、固定路由 34、M14 3、31 真实模块两 epoch 83 断言均通过;全局容器未改变。
- KVGameLoadTests 89 组/1962 断言/0 失败;ServiceHost 非 Android、Android+AGG 各 9 组/86 断言/正式请求 0;本批 `git diff --check` 无空白错误。
- 静态核 `LoginStage.RequestNextAct` KV 选择仍返回,不进入 `FishingStage`;正式 101/102 未操作。
## 明示限制与后续
- `InternalEditorBoost` 真实直开场景没有在本轮运行;当前只有源码、Editor 编译及受影响合成回归,故“PF 直开注册一次/重复不覆盖/kv 拒绝”的真实启动验收仍需安全隔离的 Editor 直开证据或审查方确认可凭当前证据限定接受。不得以 B01 用例冒充该路径已运行。
- 真实 Player 脚本编译此前被 Unity CLI Loop Restricted 在调用前拒绝;CP2A 仍未关闭,CP3A 也不宣称发布可用。CP2B 线上契约、首场景自动依赖、旧 PF 调用迁移、最终闲置实现清理仍待后续;阶段闸保持。
- 用户裁定 `PlayerKV*` 命名暂时保留,整体移植完成后才重命名;本批无命名变更。工作树改动保留;本机服务器代码不访问或修改,不能代表线上版本。