# 给原 ZCode 会话:M2 CP2A 正式登录与原句柄交接独立方案审查 请在 `C:\projects\ft` 对 `M2-CP2A正式登录与原句柄交接完整方案-待独立审查.md` 做**完整独立方案审查**,不要修改该方案、受审基线、生产/测试源码、共享入口、TODO、开发日志和历史报告;仅在本目录新建 `M2-CP2A独立方案审查.md`。不要运行真实 101/102、Unity Play、正式 API 或打包。正式地址固定 `http://s101.local:18080/`,后续 Unity 自动化仅 CLI Loop,不用 UnitySkills。 先重算 `M2-CP2A受审基线.json` 每项长度与 SHA256;任何不一致即报告并停止方案裁决。随后读修订2报告及主会话裁决、CP1关闭裁决、CP2设计输入与首场景自动依赖表,并按受审基线源码独立核证。用户已明确首批只允许**101/102 且已有 KV 档**,CP2 首段只验**正式登录与原 handle 交接并阻止跳入 FishingStage**;不要把它解释成全玩法已启用。 请逐项裁决以下内容,并给通过/有条件通过/不通过、P1/P2/P3、源码证据及可编码的精确白名单: 1. 启动前捕获 backend 与 `SubBoostrap` 分流是否保住 PF 默认路径、Editor loop 的后置 `kv-loop` 配置、AGG KV 显式拒绝;不创建 `PlayFabMgr` 后是否还有 CP2A 可达旧调用。 2. 101/102 准入在请求前验证、登录后 `newCreate=false` + 非空完整 Schema 是否足以阻止新建/无档;账号/地址/缓存路径、Snapshot 版本、真实三 handler 共 jar 与独立 Dispose 是否形成单 Context 所有权,不滥用验证工厂。 3. 普通 `PlayFabUserService` 与第31模块正式准入、Apply 前 `unstarted`、唯一 notify 接收者、CP1 三接口实际消费、单次 S101 登录和失败排水;是否还存在 `SetMMTestValue`/PF SDK/旧登录暗中执行。 4. 内部 `KVHandoffReady` 而公开 `IsLogin`/`IsAuthorized`/API 事件暂不发布是否语义自洽;`PFLoginAct` 和 `LoginStage` 双重闸是否能保证不注册待登录的 RT/Chat 订阅、不初始化 Mail/IAP、不进入 `FishingStage`。如需另一种状态合同,请给最小修订,不可放宽为“直接进首场景”。 5. `CustomServerMgr` CP2A 空业务路由、401/403/旧 epoch/Logout/应用退出、GameLoaded 后 Close 故障和重试屏障;是否要求额外白名单外源码才能安全实现。 6. 方案§3白名单与§4矩阵是否完整,特别 Unity Player 编译与历史 `_cheatingScore` 错误;CP2A 子边界能否独立编码并批末复核,或必须与 CP2B 首场景合并评审。 不要据修订2对“CP2前置盘点通过”的结论推定 CP2A 已获编码批准。主会话收到报告后会重新核受审 hash、逐条裁决;任何新增生产边界先补方案复审。最终 CP4/CP5 必须清闲置实现和旧Mgr运行调用,暂不打包。