# M2 合批 C2b 实施检查点(2026-09-29) 工作仍在开发侧,继续已批准的合批 C2;此检查点不是新送审轮次。开工复核C2a与原基线组合2177项全部一致,原正式报告/manifest hash保持,代码范围仍为正式白名单。本次14个生产文件、4个测试文件变化,无新增源码路径,无服务器代码读取/修改。 ## 实际完成 - 新迁42个business-store调用,累计64/202,剩余138及2个即时消耗调用。原受审224项台账不改字节;进度单独写M2-合批-C2调用迁移进度.json。全部生产调用runtimeVerified仍false,不能用替换/编译当作实际活动运行证据。 - EventTokenService两调用迁移。通过构造注入保留本次store;加载失败/坏JSON/存在空串或null不再默认为零余额。候选字典保存被接受后才替换内存,Add/Remove通知维持原语义,拒写不改余额、不发成功通知。批量清理对完整候选字典操作;存储仍是原TransitionData JSON。普通接受不代表云端确认,奖励动作确认仍待下一段。 - 旧game.AEventDataManager三调用迁移。固定注入store,Dispose后拒绝保存/读取并移除原订阅;活动消息在失效实例不继续。只有缺键才创建默认档,空/坏JSON/null报错,不再变成新活动存档。 - FishingEventData主体16调用及PVP/OneOne/OneTwo共11调用全部接共用store;原活动条件、动态原键、TurntableRoll、WheelLevelCount、Free/Operate计数及序列化保持。static Condition_NoRechargeDay同步取得已绑定FishingEventData的store,不建立全局新路由或寻找新handle。4个JSON读点共用类内ReadEventArchive,仅明确缺键返回null,存在坏档报错。Break/Can/LuckMagic的原自定义字符串解析格式保留,不强制改成JSON。 - 魔药、弹珠、刮刮乐、锁链礼包、迪斯科礼包、存钱罐、EventPack各1处集中保存迁移,鱼竿配件分部3处保存迁移;新增属性由现有DI注入,PlayerFishData沿用C2a属性,不重复建store。原key、原序列化、remote参数和历史注释保留。 - FishingEventData资源加载、PVP段位弹窗补await后的旧store检查;两个礼包进入界面前检查固定store。其它未迁模块/回调不据此宣称已安全。 - AllRefresh保留逐活动尝试,但收集失败并向调用方抛出汇总异常,不再只写日志后继续报告整批刷新成功。该方法当前直接调用者是PlayerShopData;它不是TimeRefreshManager真实订阅全链已验的证据。初次跨日及其所有活动回调仍须后续全链验证。 ## 验证、首败与边界 - ServiceHost NON_ANDROID与ANDROID+AGG均17组235断言通过,formalRequests=0;新增真实EventTokenService+真实store/原KVMgr/内存HTTP测试:坏档拒绝、读失败不当零余额、Guard拒写后余额/通知不变、增加/扣减原clamp与删除、批量更新/清理、原TransitionData远端JSON、同消费者PF路线、注销后缓存拒用。现有资料/票据/每日刷新回归继续通过。Android+AGG是宿主编译条件,非真实Android Player构建。 - 最初沙箱内两次宿主失败:首个本地写返回StorageError。独立工作区合成文件探针也证实File.Replace抛UnauthorizedAccessException,属于当前执行权限;没有修改KV缓存协议或用非原子写规避。经工具批准后沙箱外本地合成回归通过。 - CLI Loop初次被Node spawnSync EPERM阻止,不是编译成功。经工具批准后仍用uloop编译,最新Success=true、0错误、272警告,原始结果见M2-合批-C2b-unity-compile.json。无UnitySkills、Play、正式账号、付费和打包。 - scope git diff --check通过;原工作树保留,AggUserService未改。C2b累计交付47项hash `8F027C0677BE42099CFA7EA3ED53D86497DF55C9A7627C29006526CE7B7C0729`,原正式基线其余2130项保持;与原基线组合2177项最终核对通过。C2a清单保留为历史,不再拿它要求已批准代码保持旧hash。 - 本轮未重跑未改动的加载核心套件;C2a加载90组/2008断言证据仅作历史。本轮真实生产活动配置、两账号存档、初始化重入、全部异步链/奖励链、Player、kv-loop验证宿主注入兼容均尚未验。不能以本轮宿主夹具覆盖冒充这些结果。 ## 下个连续开发段 1. 剩余138个业务调用、2个即时消耗继续迁移,优先TriggerPack/商店/动态活动模型,避免仅调用层清零而遗漏归属会话。 2. 按已审第6节在PlayerSaveStores内接同步奖励动作回执收集及真实消费者;Survey/Friend/Mail和实际按钮await、确认后成功展示、同会话重入防护、PlayerItemData嵌套展示处理仍未实现完。完整奖励故障恢复不宣称已解决。 3. 即时消耗源码已检查:FishingBehaviorB当前未等待消费确认就WaitForFishBiteED;FishingTurntablePanel当前只循环一次等待且不论成功都isDataSynced=true,并已先抽随机值。这两处须按已审方案一起修正真实调用链,不能只替换SyncDataImmidiate方法名。本轮未改这两个文件,也未记迁移完成。 4. 真实Chat/RT/初场景双模式验证、40秒暂停周期、旧验证宿主对新增store注入的适配、临时闸/易盾TapJoy恢复、闲置实现清理和PlayerKV延后命名继续列最终TODO。 两阶段闸保持,M2未完成。无需交用户或审核侧逐模块确认;继续开发,整批结束再做一次独立实施复核。