25 KiB
阶段4B2实施记录
检查点0:版本与批准
- 123项受审hash全部一致;外部修订2通过、无P1;P2-α/β及P3五项裁决见《阶段4B2修订2审查裁决与实施批准-2026-09-23.md》。
- P2-α明确真实存量档兼容性与迁移方案/用户产品确认是正式启用前置,当前仅合成受控加载。
- 批准§9顺序实施,检查点1先行;采用方案已允许的类型合并组织以保留旧4B1测试项目不变。没有批准正式游戏Done、真实存档写入或打包。
检查点1:Lease/Registry与4B1回归完成
实现范围:仅修改PlayerKVLoginContext.cs(元数据快照、一次性内部Lease发行、关闭先排水借用者),新增PlayerKVShutdownRegistry.cs及meta、新宿主KVGameLoadTests。Lease/能力/元数据类型按已审许可合并在Context文件,原23组测试源码和项目均未改动。Capability目前仅是检查点1的替身传输能力,完整依赖证明待检查点3,不能视作已经交付完整受控入口。
关闭合同:同步撤销准入、同一Close任务、忽略取消的请求仍排水,Lease失败不继续释放Bridge/session;Registry跨调用者保留未完成/失败任务和资源owner,不提供清空/强行重开。观察时限1000~15000毫秒、非法Input;超时不取消实际工作,等待期间新登记故障能立即唤醒观察者。
本轮限定自审修正:保留失败owner;避免等待所有任务才暴露单个故障;发送准入增加同步撤销检查;拒绝循环DelegatingHandler时不能递归Dispose该图,先拒绝、由工厂解环清理。最后一项有新增测试,最终共19组。测试源直接链接生产Context/Registry,没有复制实现。
| 验证 | 最终结果及证据(均在KVGameLoadTests目录) |
|---|---|
| 原4B1全量原宿主 | 23组/0失败/278断言,checkpoint1-4B1-final2.log及exit.json,run 20260923114135_9b8f40b6952546a98d88e76a01e339f4 |
| 新Lease/Registry | 19组/0失败/205断言,checkpoint1-final2.log及exit.json,run 20260923114134_050e9e9b6a8d4ab2a1309f462d40b7ed |
| Unity CLI Loop最终编译 | Success=true、0错误、271条其他文件警告、PlayerKV相关0警告,checkpoint1-unity-final2.log及exit.json |
| 首轮Unity编译 | 0错误/274条其他文件警告,checkpoint1-unity-compile.log保留;不以增量重编警告数量减少宣称修复旧警告 |
| KVLiveTests | 仅build,初轮及最终证据单列;不运行正式服fixture |
| 范围核查 | 原123项中122项保持,仅获准修改的Context变化;原4B1测试、ClubService与两份受审方案未变。具体hash见checkpoint1-source-hashes.json |
新测试覆盖:唯一认证/同Cookie/元数据、只发一个Lease、关闭前后准入、路由和真实Handler拒绝、循环Handler拒绝、active排水、取消重入、Dispose失败、24次发行/关闭竞争、工厂重入撤销、过期200隐藏、401证据/重定向拒绝、超时后真实排水、永久故障屏障、其他工作未完时故障立即返回、新故障唤醒既有观察者、等待期间新登记、观察取消/无效输入、同进程Registry。401目前只是Lease证据,尚不是检查点3的真实服务401接线验证。
并发测试中的附加断言取决于Lease是否赢得发行竞争,故历史16/18/19组的断言总数不可直接对比;每轮保留run及每组断言,不把数量差异当失败或覆盖率增加。最初恢复依赖因用户NuGet.Config读取权限失败,原输出checkpoint1-restore.*保留;经审批仅用已有离线NuGet配置恢复成功,见checkpoint1-restore-elevated.*,没有安装额外依赖。
Unity版本2022.3.62f2c1,uloop2.2.0,DataPath=C:/projects/ft/Client/Assets;运行前只读检查IsPlaying=False。未进入PlayMode、未请求正式服、未打包、未提交Git。编译原始日志含本机路径,属于本地原始证据,不宣称是脱敏业务日志。
P2-β基线副本:KVGameLoadTests/baseline/ClubService.cs.txt,SHA256 70908AC672CB3F9BEC07D714469847637A3CA4BF841016C0F85B4319597618AD;M14尚未修改,未来仍需相对本副本单列最小diff。
检查点2历史:源码映射发现两处合同冲突,当时待差异补审
对照M08发现旧AD实际为枚举→三段字符串字典,受审附件误写同顶层成就对象JSON;M23要求保持UInt64但现有字段/枚举为Int32。已形成差异补审方案及外部提示词,包含明确修订/边界/测试。原审查已通过事实保持,两项新语义尚未批准,不能在实现时静默改变。
本轮没有新增Schema/业务模块代码,不声称M01–M31已通过。下一步外部只审D1/D2→主会话核对新增差异基线、逐条裁决→继续检查点2;3/4按顺序保留。检查点1无需重复开发,最后整阶段回归仍执行;4B2未关闭、4B3未启动、G4未通过。
检查点2更新:D1/D2差异审查及三条P3裁决完成
- 外部报告D1/D2均通过、无P1/P2。主会话更新本文前逐项重算14项受审hash全部一致,核查记录见
KVGameLoadTests/checkpoint2-delta-ruling-hash-check.json;旧本文已同hash保存为《阶段4B2实施记录-检查点2差异受审快照》,基线JSON不改。 - 逐项裁决:接受D1三种成就表示分别严格解码及优先级;接受D2完整ulong状态+明确低32位视图,PF原方法/公开面保持。三条P3分别采纳历史AD坏槽纳入P2-α、显式unchecked与注释、新正式版合并修订。
- 已生成正式附件,后续实施首读该版本;原受审附件、补审方案及报告原样保留。正式版只合并已审差异及裁决,无额外扩围。
- D1/D2差异设计门闭合,批准继续检查点2全部31组codec/模块/测试,再按顺序3/4。检查点1不重复开发,未来仍完整回归。当前确认的是设计及开发边界,不是模块实现通过、4B2关闭或正式启用。
- 本次按用户“逐条裁决,确认结果”完成文档和hash工作;没有修改生产/测试代码、运行Unity/测试、访问正式服、打包或Git提交。P2-α真实档启用门保留,4B3未启动、G4未通过。
检查点2继续:首批codec与D1/D2实际模块验证
- 用户通知审核更新并继续。开工核对仍为已裁决D1/D2报告hash,11项裁决交付hash一致,无需重审D1/D2。沿用已完成的设计/外审和主方案§9实施顺序,不另行重做设计门。
- 新增纯Schema/DTO/只读快照/有界诊断,覆盖核心19槽、旧/新/别名一致性、严格JSON/数值/时间、M08成就三表示、M23完整位集;M08/M23增加纯Decode/Reset/Replace,原PF方法保持。
- 最终30组离线/0失败/313断言,原4B1全23组/0失败/279断言,KVLive仅build通过。Unity CLI Loop编译0错误/271条其他警告/本轮文件0警告;固定Editor宿主在真实M08/M23对象验证28条断言,fullB220=false。详情及run/退出码见首批实现与证据。
- 真实对象验证只覆盖这两模块,未触碰共享GContext或执行后台任务;尚未完成31模块/完整事务/guard/服务编排/总体验收。M01/M02目前只有核心codec,不能填为实际模块Apply通过。
- 继续核查明确M21/M22/M24非Nullable struct与已审null空态矛盾;相应代码未改,已集中形成D3补审方案及提示词。推荐保留原类型,使用内部存在标记+全字段清零/新空集合,需外部补审后主会话裁决。D1/D2通过及已完成代码保留,不重做检查点1。
- 原123项基线当前120项不变,获准变化仅Context及本轮AchievementDataManager/FootPrintService;ClubService、旧测试、原主方案/附件保持。当前4B2实施中,检查点2尚未完成,3/4不越序,4B3未启动、G4未通过。没有正式服请求、PlayMode、打包或Git提交。
2026-09-23 检查点2进展:D3实现与真实对象验证完成
依据已落盘D3裁决,M21/M22/M24各新增内部Decode/Reset/Replace与统一KVLoadPresent;保持PF原方法和GeneralEventPackData.cs不变。纯快照复制PackType配置,M21存在载荷才规范4055001,M22要求PackType=3,M24保留Int64完整位宽。每个保存字段严格token/位宽检查;缺键独立Missing,JSON null或缺字段拒绝,不做宽松转换。
离线34组/537断言通过(checkpoint2-D3-offline.log及runs/20260923123530_a4b23916de5f4cf580f68d88c1b21059/result.json);Unity最终编译0错误/271条其他警告,新改文件0警告。真实对象固定用例M21-M22-M24共125断言,逐字段A→Missing→Present及存在零值、集合隔离、长整型高位验证通过。宿主无活跃Root/PlayMode才运行,私有本地表图、替换container/aggregator,同步finally恢复且结果restored=true,无后台工作、正式请求或保存。仅D3局部宿主,fullB220=false。
保留两次失败证据:首次编译受保护eventAggregator访问错误,已通过专用派生访问类修正;首次真实对象构造因直接底层RegisterInstance未登记可解析类型而NullReference,已改用正式泛型注册扩展并增加Resolve同引用断言。最终结果见checkpoint2-D3-unity-compile.log与checkpoint2-D3-unity-real.log,检查工具Success及内层success均为true。
当前继续M09/M10/M12等其余已审模块;不把局部通过认定为检查点2或4B2完成,检查点3/4按顺序保留。
2026-09-23 检查点2进展:M09/M10/M12验证完成
按正式版2实施钓鱼箱双格式冲突检测、引导新格式完整替换和签到嵌套DTO解码;旧表示坏值不被新值隐藏,缺键清空,真实集合/嵌套对象独立复制,未调用旧Init/Save。离线37组/585断言通过,Unity编译0错误/274条其他警告,固定真实对象M09-M10-M12通过12条断言。范围仍为局部模块,fullB220=false。完整日志checkpoint2-collections-*,开始下一组M14/M28;ClubService只增加三项加载态的内部入口,原会话/公会/网络逻辑保留,将相对P2-β基线单列diff。
2026-09-23 检查点2进展:M14/M28及M07/M20验证完成
M14相对P2-β保存基线仅新增KV三项加载态入口,原正文逐字(规范换行后)相等,onlyAddedKVBlock=true;最小diff与核查JSON已落盘。M28严格四槽、两个实例独立,不做迁移或领奖。M07显式清空持有状态,AreaList保持只读配置计算属性;M20只在已知未过期活动且配置符合原加载解引用规则时规范4054001,未知/过期档保留Dormant,不Trigger。
最终本组离线41组/642断言通过(checkpoint2-camp-event-offline.log);Unity编译0错误。真实对象M14 3断言、M07 5断言、M20/M21/M22/M24/M28联合131断言通过,隔离容器恢复成功。以上仍是局部验证,未实现其余模块/完整事务/服务编排,不标记检查点2或B2-20通过。下一组M16/M17已按审定DTO合同开始。
2026-09-23 检查点2进展:M16/M17、M06/M13验证完成
M16/M17嵌套Items/RewardList独立复制,保持FirstOpen,Missing清对象/ValidIds/派生引用,Disco FreeTime复位1;Unity真实对象13断言通过。M06四类增益容器全部严格解码,FishBuffTimeData的NonSerialized isNew/addDown不作为保存字段消费,物化显式false/0;M13三个集合独立替换,不Init、不订阅条件事件。M06/M13真实对象10断言通过。
累计离线45组/731断言、Unity编译0错误/274条其他警告,本组文件0警告。证据checkpoint2-offer-及checkpoint2-buff-trigger-,fullB220=false。当前已验证模块M06/07/08/09/10/12/13/14/16/17/20/21/22/23/24/28;M01/M02仅核心codec,其余尚在实施,不能认为检查点2完成。继续M15/M26/M27的严格原始数据入口。
2026-09-23 检查点2进展:M15/M26/M27验证完成
三个活动模块全部保存字段严格解码;Challenge双列表、Scratch列表与奖励字典深复制,存在数据只原始赋值。Reset清各模块派生运行态/UI描述/表缓存,不调用活动Init/Save/发布事件。离线48组/868断言、Unity编译0错误,真实对象M15-M26-M27通过55断言;见checkpoint2-activity-*。开始M29同注册对象三属性入口和M30未启动模型替换;这些仍属原已审白名单,阶段未关闭。
2026-09-23 检查点2进展:M29/M30、M19及M11验证完成
M29使用受控构造入口绑定同一容器注册对象,全量赋三个自动属性,未触发公开构造的GetFresh/注册替换,未改只读数据类;M30仅新建未启动模型,模型已有关卡/配置或玩法资源时拒绝且不释放活跃资源。真实M30 4断言、礼包联合134断言(含M29)通过;修正并保留首次验证代码枚举命名空间编译失败日志。
M19显式深复制CollectItems/BoardData/奖励/二维PieceDatas与Vector2Int坐标,Missing清原始及派生引用,真实7断言通过。M11新7槽+5槽与旧JSON分别严格解码、重叠字段冲突检测、范围ticks、全集合替换,真实5断言通过;旧独有LastDropIDs/Inflation仅旧格式选择时保留,新格式按构造空态。累计离线51组/923断言,Unity编译0错误。证据checkpoint2-pinata-/checkpoint2-digging-/checkpoint2-cube-/checkpoint2-battlepass-。
剩余M01/M02完整Apply、M03/M04/M05、M18、M25与M31/事务/编排等尚未完成,检查点2未通过。M18静态配置捕获的宿主恢复边界正在核查,未修改PartnerInfoManager白名单外文件;继续不受影响模块。
2026-09-23 检查点2进展:M25及M01/M02验证完成
M25药水覆盖全部保存字段和嵌套颜色/货架/格子集合,Reset清UI及配置缓存,真实28断言通过。M01/M02完整核心与附加字段直接赋值,现代字典/新鱼竿/vip积分独立复制;清派生VIP/地图/对手缓存,不调用发事件的VIP更新方法。真实联合164断言通过、容器恢复成功。累计离线53组/998断言,Unity编译0错误。证据checkpoint2-potion-、checkpoint2-player-。当前26/31模块完成局部验证,继续M03/M04/M05/M18/M31与总事务;检查点2尚未整体通过。
2026-09-23 检查点2进展:M04商店验证完成
购买/广告/钻石记录、三种嵌套数据与7/9槽优惠券严格解码,非法日期和末位布尔拒绝。CouponData保持原对象,仅重置/替换账号字段;SKU/配置/IAP入口保持。累计54组/1038断言通过,Unity编译0错误;真实联合M04/D3 136断言通过且restored=true。首次离线命令因用户NuGet配置不可读失败,使用已有restore产物的--no-restore成功,失败日志保留。继续M05;检查点2尚未整体完成。
2026-09-23 检查点2进展:M05完成,28模块局部交付,D4/D5待补审
M05严格解码限时/固定活动、目标/排名新旧表示、轮盘/PVP计数;冻结UTC时间及GlobalTimeOffset后纯过滤限时活动,保持double持续时间,不调用旧Set/Init。一次坏ct=null用例发现ColonIntegers未检查null,已修正为Schema拒绝并保留失败日志。最终离线55组/1058断言通过,真实M05/D3联合133断言且restored=true。
最终连续运行15个Unity固定用例,覆盖28模块(M01/M02/M04–M17/M19–M30),737条断言全部通过,包含重复覆盖D3的联合断言;4个临时容器用例均restored=true,其余不替换共享容器。它们均fullB220=false,不是完整31模块同事务验证。原4B1全部23组/279断言通过。最终Unity编译0错误/271警告,新增KV文件0警告;M05原PF GetRewards未await的CS4014已存在于本轮早期编译日志,未改该调用。
源范围123项核对:92项保持原hash、31项为已批准修改,无白名单外变化;ClubService仍仅新增一个KV入口块,P2-β基线正文未变。详见KVGameLoadTests/checkpoint2-partial-final-verification.json及对应日志。M03/M18/PartnerInfoManager仍未修改。
剩余源码核查发现D4静态表/容量会越过临时容器生命周期,以及D5鱼重量/等级/卡片派生与三套索引的规则尚未明确。已形成《阶段4B2检查点2配置隔离与鱼数据派生差异补审方案-2026-09-23.md》、专用审查提示词和新hash基线;只补审这两项,不重审D1/D2/D3。D4提出新增PartnerInfoManager唯一文件白名单及字段→属性的显式公开面变化;D5提出纯配置快照和严格拒绝/派生规则,都尚未批准编码。
按用户先完整评审后编码要求,本轮在上述差异边界保留待审,不擅自改M03/M18或跨入检查点3。下一步独立报告落盘→主会话核对hash/逐条裁决→合并正式合同→完成M03/M18/M31、全31模块事务及检查点3/4。4B2未关闭、4B3未启动、G4未通过。P2-α、固定地址http://s101.local:18080/、Unity CLI Loop、不用UnitySkills、暂不打包保持;本轮无正式服请求、无PlayMode、无Git提交。
2026-09-23 检查点2:D4/D5裁决完成,批准继续
开工重算23项受审hash全部一致,逐条接受D4有条件通过、D5通过及三条P3,见配置与派生审查裁决。新增正式版3合并获批细则,原受审包保持。批准M03纯派生、M18隔离及PartnerInfoManager唯一扩展文件;公开字段改属性、热更差异、依赖核查及全部强制验证写明,不扩展为其它玩法重构。设计门闭合,实施验收未完成。开始剩余检查点2,再顺序3/4。
2026-09-23 检查点2进展:D5/M03完成局部验证
M03复制鱼/鱼卡配置,严格解析旧JSON与5/9槽表示,在派生前比较原值;纯阶段完成重量上限、等级封顶、卡数下限与地图/鱼/卡索引,Replace只物化已校验值。所有配件集合深复制,幸运标量保持0,不调用Init。离线59组/1127断言通过(checkpoint2-D5-offline),Unity编译0错误,真实M03 23断言通过(checkpoint2-D5-rounding-real);29/31模块局部验证,不是完整B2-20。
保留首次真实舍入断言失败及诊断日志:Mono表达式中间精度导致直接比较差异;改为将双方结果存入float后比较32位位值,14个Unity Mathf.Round边界对照全部一致,生产舍入算法未为测试放宽或改写。D4开始按已裁决范围修改PartnerInfoManager,M18/M31及总事务尚未完成。
2026-09-23 检查点2进展:D4/M18完成局部验证
M18严格解码全部保存字段、tuple及机器人数据,深复制嵌套集合,Reset仅接受未启动模块并替换两个伙伴管理对象;没有调用ClearData/Init/Save。累计离线61组/1200断言通过,Unity编译0错误;重载后首次及热类型各18条真实断言通过且restored=true(checkpoint2-D4-unity-real/hot-real)。当前30/31局部模块完成,仍非完整B2-20。
D4最小差异:PartnerInfoManager实例持有表;BuildPartners按实例表构造、AddBuildPartner边界和日志用数组长度。随动读取者还包括ActiveFriendCountThreshold、RobotDailyActiveTimeWindow、TbEventPartnerRobot权重及FriendRecommendParam2两个推荐阈值。公开BuilderCapacity字段改计算属性,接受二进制不兼容及运行期热更不再冻结的边界;源码五处外部数值调用保持。仅D4内存副本改变InvitationCount,磁盘配置不变。
预编译扫描114个文件:93个托管程序集未发现旧字段引用,18个原生PE;另外3个Burst .Runtime内部非可读PE保留为原始扫描blocked=3,不伪称解析成功。Unity实际273条程序集引用及469个PluginImporter均不含burst-llvm文件(checkpoint2-D4-imported-dependencies-final),故三个文件不构成导入的托管依赖阻塞。首次依赖查询的JsonConvert双程序集歧义失败日志保留;改为返回固定计数后查询通过。正式配置下容量一致,两个临时容器容量隔离及原全局引用恢复已验证。后续继续M31和全模块事务。
2026-09-23 检查点2:31组codec/入口及纯事务完成,进入检查点3
M31新增捕获身份的纯解码、MMTest新旧/缺失规则、三个渠道及当前枚举渠道严格0/1、独立头像字典/余额/绑定集合;最多2条内存意图,同epoch去重、关闭Discarded。受控User/Agg实例不订阅原401/PF流程、不触碰SDK身份或Tapjoy;公共无参数构造保持原PF路径。Unity真实M31同对象A→缺失B验证9断言通过,0编译错误。
完整Schema只在31模块均已解码后产出Valid,失败无Data;验证来源/epoch/配置版本、S101空档分类、现代外层优先级和多模块错误。同步主线程事务固定全部Reset→全部Replace→通知,失败重置所有模块,Reset失败Poisoned且不可重试。累计离线66组/1272断言通过(checkpoint2-aggregate-offline);首次聚合签名编译失败已修正并保留日志。31模块入口各自局部验证完成,纯事务离线通过;完整真实31对象同事务及服务guard零副作用B2-20仍属于检查点4待验,不能据此宣布4B2验收。
开始按原已审方案检查点3服务编排/PF拒写门/退出观察,随后全量真实宿主与独立实施复核。4B2未关闭、4B3未启动,正式启用硬门保持。
2026-09-23 检查点3完成主要接线,检查点4验证进行中
已实现受控协调器、进程级guard、User/Agg内部入口、CustomServer借用401撤销和Quit同步撤销/有界观察;公共SaveBackend缺省保持PF,kv/无效值在SDK前拒绝。跨await持有guard,旧context真实排水后释放;失败清理保留OriginalError,失败结果只保留准备阶段元信息,不携带成功快照。MMTest/渠道意图留内存,关闭丢弃。暂无正式入口启用。
72组离线/1408断言通过;另以独立进程验证Prepare/Schema/Apply叠加CloseFailed,3组共21断言,跨协调器仍阻挡新认证。隔离进程避免人为重置生产guard/Registry。补查并修正超时同时获锁、清理失败被后续Dispose掩盖、最后一个Replace后撤销却可能先通知三个边界;逐模块全部Reset/Replace失败/撤销测试正在补跑。
真实服务替身宿主直接链接UserService/AggUserService/PlayFabMgr/CustomServerMgr及KV源码,Android+AGG与非Android各7组/68断言通过:默认PF存档及授权捷径、原PF初始化时序、捕获配置、TapJoy平台分支、12个PF拒写调用、真实KV通知/401/失败清理且SDK/Prefs/奖励/UI/Helper事件计数0。PF完整公共流程测试在API前用无效scheme主动终止,原账户认证另由已有回归覆盖;不冒充真实渠道全流程。非Android遗留空CustomId分支的AndroidDeviceId DTO拼写兼容仅在替身声明,生产旧分支未改。
Unity31真实对象同事务初验80断言通过且恢复全局,尚待最终重跑和完整证据封板。MinimalLogin原32项、退出原4项+2边界探针通过。旧NetworkTransport测试依赖127.0.0.1:50121代理,尝试时连接拒绝;已查明代理会转发正式地址,本轮不启动,只构建。失败/修正日志保留。新宿主restore以进程APPDATA指向工作区避开不可读用户NuGet配置,旧项目未改。4B2未关闭,4B3未启动,G4未通过。
2026-09-23 检查点4:实现与主会话自验交付,待独立实施复核
最终4B2离线75组/1713断言通过(checkpoint4-release-offline.log);Prepare/Schema/Apply关闭失败独立进程3组21断言通过,失败对象/异常/屏障保留。服务宿主直接链接真实UserService/Agg/PlayFabMgr/CustomServerMgr,非Android和Android+AGG各8组73断言通过,覆盖PF原401、KV当前/迟到401、配置捕获、TapJoy及零副作用。非编辑器条件编译确认两种能力无创建工厂,不是Unity玩家构建。
Unity19局部用例912断言通过;最终31真实对象同事务A→B及401,83断言通过,success/restored/fullB220均true(checkpoint4-release-full.log),总995断言。仅两次认证/两次Get/一次合成借用,禁止调用/发布/订阅0。新增幸运值检查首轮写反鱼/机器人槽次序,按既定合同修正测试后通过,未修改生产解码。最终编译0错误/270既有警告/新KV文件0警告。
原4B1 23/279、4A18/226、42/42、29/29、Review、3C离线8、KVLive仅构建均退出0。3A KVSync首次85/86因StorageError失败,单独重跑86/86;根因未定,保持待查,两份证据并存。额外旧NetworkTransport不启动正式转发代理,仅构建通过;此前连接失败和本轮测试exe锁占用的失败日志保留,核对本轮进程完整路径后停止该进程再构建。旧测试源码/项目均未修改。
VerifyBoundary.ps1重算123项:85项未变、38项获批修改、0越界;D4扩展文件另入最终清单,ClubService只有新增KV块。65个纯Reset/Replace方法直接禁用调用扫描0命中,结合构造/辅助函数人工核查、真实模块与SDK替身计数形成分层证据,不夸称扫描能证明任意调用链。
已落盘交付与验收矩阵、限定自审、独立实施复核提示词、最终hash清单及送审实施记录快照;共享入口/开发状态/TODO改为“4B2实现与自验完成,待独立实施复核”。B2-22尚未关闭,需外部复核后主会话核hash、逐条裁决;4B2未关闭、4B3未启动、G4未通过。P2-α仍是正式启用硬门,保留3A间歇失败待查;无正式服请求、PlayMode、打包、Git提交。