Files
ft/CodexOutput/upserver/B3BatchMigration/M2/M2-CP3A联合独立审查主会话裁决与实施边界-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

4.1 KiB
Raw Blame History

M2 CP2A 增量与 CP3A 联合独立审查主会话裁决

日期:2026-09-29。审查报告 M2-CP3A独立方案审查.md 为 4423 字节、SHA256 FC6D1AD044327F1FC69818318755F16F7962F916CA8BE52BF2D89BA7DC8FCCC7。主会话重算 CP2A-C15 交付 20/20、清单 SHA256 575AE946452078011CCD068303217377E0AA98C0EF0B0A1103F19D527B6D6E4D;CP3A 受审基线 18/18、清单 SHA256 F7311D9D923A61E8F665B021184C9C969C551EC1DDD96D2F23BF2F9CD1C98D49,均无漂移。方案 SHA256 BA94F8B1F7CA43D2D99C181BF5AAC04B2312073498F6C3046D84D291733FE113。报告仅作独立意见,以下为实际开发裁决。

裁决

  1. CP2A 单文件补审增量接受。 _cheatingScore 仅在 Editor 条件声明时清零,其余字段全部目标仍清零,符合已批准补审。此结论仅覆盖代码增量。真实 Player 脚本编译仍无通过证据,CP2A 不关闭;既有 LoginStage KV 停留闸保持。
  2. CP3A 前审通过,收窄批准实施。 仅批准完整方案第 3–5 节的原实例一次性绑定与 B01 ShowNotice/IsOpenClubRed 两键,生产文件上限为 UserService.KVLoad.cs、SettingService.cs、ClubService.cs、ILocalNotificationService.cs、SubBoostrap.cs。测试可在方案列出的合成宿主及固定 Unity CLI Loop Editor 验证入口按实际编译需求增改。不得改 LoginStage、KVMgr、Guard/Owner/Handle、Coordinator、API/协议/服务端、Schema、场景/Prefab或打开 FishingStage。PF 默认路径保持。若实现发现白名单外必需修改或合同不成立,停在代码变更前补审。
  3. 纠正审查报告 Q2 的时序证据。 SubBoostrap.RegisterServices 只先注册 PlayerKVRuntimeSelection;正式主路径的 ClubService 注册发生在之后的 LoginStage.StartAsync,并在 31 模块 PlayerKVGameplayBindings.Bind 解析时构造。顺序结论可以接受,但“同一方法内注册 ClubService”的表述不准确。实现必须在 Club 构造时检查容器确有冻结选择;正式模式不得因解析异常或空选择默认 PF。
  4. 纠正审查报告 Q4 的测试事实。 现有 B01Tests.csproj 编译 ClubSlice.cs,不是当前完整 ClubService.cs;报告称“B01Tests 即编译真实 ClubService”不成立。CP3A 实施验收必须新增能执行当前真实 ClubService 的合成或 Unity CLI Loop 固定验证,不能以切片绿测代替。

P3 逐条裁决

意见 主会话裁决
P3-1 同 handle 重复绑定计数 不引入常驻计数/新运行状态;重复绑定检查后幂等并以专项测试观测次数,异常重复在诊断中记录即可。避免为两键接线扩大状态面。
P3-2 冻结选择注释 接受。在正式出生标志/绑定方法附近用简短注释写明来源和不可重绑;不加无用接口。
P3-3 CLI Loop build/compile 带 Player 参数 现有 CLI Loop 命令清单只有 compile,没有 build;此前 execute-dynamic-code 调用 Player 编译被 Restricted 在执行前拒绝。可核 compile 的公开参数,但不得猜测目标参数、绕过 Restricted 或打包;在可用能力不足时继续标 Player 未验,不作为 CP3A 代码实施阻断。

实施与验收顺序

CP3A-C0 先在批准测试范围写真实对象与原 handle的失败用例,覆盖正式未绑定拒绝、原容器实例、在途通知回调、部分绑定失败与注销陈旧;记录红测。C1 按五文件白名单连续实现,原对象、epoch 与关闭屏障不变。C2 跑 B01 实际受影响回归、CP2A 加载/ServiceHost、真实 ClubService 固定用例及 Unity CLI Loop Editor 编译;核无 PF 回退、无额外 S101 请求、阶段仍停留。C3 封存交付 hash 并批末复核,可与下一个相邻合同的实施复核同次完成。每一检查点更新开发日志。正式 101/102 不操作,不打包。

服务端边界另据用户最新指令:本机服务器代码不可改且不能代表线上版本;CP3A 不依赖其契约。CP2B 正式路由/响应与身份仍须线上依据,未审前不开放场景。