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

3.2 KiB
Raw Blame History

M2 CP3A C11 交付与待终审

日期:2026-09-29。CP3A 完整前审及主会话裁决、Editor 直开单点补审及主会话裁决均已落盘。本文件汇总实施,不自行宣布 CP3A 关闭。交付十项代码/验证入口以 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* 命名暂时保留,整体移植完成后才重命名;本批无命名变更。工作树改动保留;本机服务器代码不访问或修改,不能代表线上版本。