保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
7.2 KiB
M2 纯平移主会话裁决与 C2d 实施记录
用户在最新纯平移范围收缩及要求落规则后两次明确“审核完毕,继续”。本轮采用该用户确认作为当前方案审核完成与继续实施依据,不再次要求重复许可。当前磁盘无新独立报告,不宣称收到原 ZCode 新报告或伪造报告 hash。方案、规则与开工基线已冻结到配套 JSON。
完整范围裁决
- 采纳全流程纯平移,原 §6 中额外奖励聚合确认、等待 UI、旧业务缺陷修复和新的失败策略收回,不再作为本轮交付目标。原产品规则、存档键/格式和事件顺序为对照基准。
- 现有白名单内:核减这次迁移引入的多余行为,保留固定提供方、原 handle、身份接线及存储契约;不重构。对 HEAD 与正式基线可逐字节验证的文件,以原文加最小存储/身份替换生成候选;不直接 checkout、reset 或整树回退。无法匹配的文件只局部撤销本轮已证实改动。
- 白名单新增只批准 UserService.KVFishingValidation.cs 和 UserService.KVFishingRewardValidation.cs,限原隔离容器 store 注册/注入与原资源生命周期配套。使用原未启动 PF shell + PlayFabPlayerSaveStore 委托现有 kv-loop,原Owner/Guard/票据/断言不变;不创造生产容错或第二Owner。
- HomePanel 零修改;补单原同步发放、原异常处理和后台保存时序不动。Mail 批量旧枚举、钓鱼/转盘旧调用者时序等已被用户明确要求保留,缺陷记录移植后待办,不再修正。
- 移除失去所有实际消费者的本轮 PlayerSaveAction 等辅助实现属于回收此次多余改动;不删除原有有效实现。必要的原单次立即保存接口映射仍保留,不能借此改变调用者是否等待。
- 核减后的测试以迁移前业务为预期;仅删除针对已撤销新增行为的用例,保留原 core/Guard/票据/旧真实业务验证。正常与失败路径均检查,无正式请求、Play、服务器代码或打包。
初始检查点
C2c 组合2177项中2176项一致,唯一差异AGENTS.md为用户明确修改规则;两个追加fixture尚与原基线一致。现有工作树已保留。接下来先恢复原fixture依赖,再连续核减业务变化并编译/回归,不逐模块送审。
C2d 实施检查点
- 已核减32个客户端源码文件及2个原宿主测试文件。明细由交付hash生成,不按Git HEAD整树回退。HomePanel不改;原正式报告、基线、白名单和224项原始台账保持原字节。
- 问卷/邀请恢复原同步领取签名、状态与通知顺序;商店/签到恢复原购买、补单及异常处理。邮件恢复原个人奖励与批量HasRead/HasReward处理。钓鱼与转盘仅替换原即时保存接口,原调用者等待方式、随机、动画和奖励顺序不变。Chat恢复原逻辑。
- 活动仓库、代币、水族馆、累计充值、配对游戏、回归活动、幸运任务、MiniBP、广告轮、扫荡、拼图及活动礼包恢复原空值、反序列化及异常处理。FishingEventData恢复原逐活动记录异常继续刷新,移除新增异常汇总。
- 移除无消费者的PlayerSaveAction及其store内收集状态;移除无消费者的ReadEventArchive新辅助方法。保留原存档格式、共同store与必要会话隔离,不清理仍有消费者的PF/AGG/Editor loop。
- 代币回到原“先改内存,后保存,再通知”;存档关闭时原业务的catch/default仍按原处理。底层读失败依然是失败、Guard照常拒写,不能把业务层保留旧catch误记为底层伪造读成功。新增加载错误策略不再跨层强迫业务更改。
- TimeRefreshManager的首次刷新结果及LastLogin哨兵适配保留:这是新KV资料时间戳写入前置,PF原捕获异常与事件顺序未变。玩家档31模块Guard/回滚、固定handle、退出撤销、Unknown保护均保持。旧kv-loop确认策略属于仍使用的既有验证路径,不受本次撤销新业务聚合影响。
- 两个原钓鱼fixture注册原未启动PF shell对应的PlayFabPlayerSaveStore,复用既有kv-loop票据。体力恢复场景也注入同一store。未删除原用例、未弱化原耗能/奖励断言、未添加生产空兜底。
验证过程与证据边界
- 首次fixture编译通过后,奖励55组243断言通过;耗能恢复场景因尚缺store注入失败。补齐所有真实PlayerData场景注入后重跑,19组85断言通过(增加4条未启动PF shell生命周期检查)。失败原始输出保留。
- 合并调用耗能与奖励超过CLI 180秒超时。底层各自result.json均成功落盘,超时后Editor未Play、loop未启用、无permit;随后按单组重跑取完整CLI结果,不把外层超时当成功。
- NON_ANDROID与ANDROID+AGG宿主均18组254断言、formalRequests=0。相比C2c的20组262断言,删除的是已撤回的奖励聚合/强制等待测试;代币/活动/邮件预期改为原业务流程。核心Guard、票据、Unknown、PF路线、真实服务身份与关闭用例保留。
- 最终Editor编译0错误269警告。警告数记录实测,不宣称旧警告已专项修复。真实Player、SignalR、线上账号、支付和打包未验;ServiceHost条件编译不代替Player构建。
- 本批所有运行项仍不得标记全量runtimeVerified。最终单组与31模块结果见本批交付hash列出的原始输出。
用户调试配置恢复
用户在验证期间说明修改了调试目录debugconfig.json并要求更新回去。已由CLI读取实际persistentDataPath,仅将EventApiURL从开发服恢复为http://s101.local:18080/。其他字段深度对照一致,未运行会覆盖整套配置的Svr101菜单,未访问正式服务。配置位于工作区外,按工具权限流程写入;证据见M2-C2d-debugconfig恢复记录.json。
原缺陷登记(整个移植完成后才可另行授权处理)
- 邮件批量HasRead及后续HasReward筛选的旧语义,不在移植期改成RewardTaken或冻结奖励集合。
- 旧钓鱼即时保存的调用者不等待、旧energy负载,以及转盘失败后的原状态处理,不在移植期改随机/扣费/展示时序。
- 代币先改内存再保存、活动读档旧catch/default,以及跨游戏服邮件状态与KV存档的崩溃窗口,不在移植期增加事务、补偿或回滚。
- UI原来同步成功与后台保存的关系保持;不会重新引入“等云端确认才展示”或失败永久占用。
以上为保留原流程的明确裁决,不能当作新增业务缺陷已修复。改名仍在整个移植完成后;所有开发冻结最终必须恢复并验收。
最终离线检查点
单组CLI最终结果:耗能19组85断言;奖励55组243断言;M08-M23 28断言;B2-20真实31模块83断言、sameObjects=true、restored=true、forbidden=0。最终状态playing/enabled/ready/permitExists全部false。上述均离线,不改变真实运行未验结论。
C2d累计交付范围见配套hash:原2165项与12新增项组成2177项;相对C2c更新34个源码/测试文件、用户AGENTS规则及临时清理清单文档,其余保持。两fixture为本轮明确增量。后续C3真实场景及外部能力清单仍未完成,不需要为已经通过的常规核减重复送审。