Files
ft/CodexOutput/upserver/阶段4B2实施记录-2026-09-23.md

170 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 阶段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。已形成[差异补审方案](阶段4B2检查点2字段差异补审方案-2026-09-23.md)及[外部提示词](其他AI审查提示词-4B2检查点2字段差异-2026-09-23.md),包含明确修订/边界/测试。原审查已通过事实保持,两项新语义尚未批准,不能在实现时静默改变。
本轮没有新增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不改。
- [逐项裁决](阶段4B2检查点2字段差异审查裁决-2026-09-23.md):接受D1三种成就表示分别严格解码及优先级;接受D2完整ulong状态+明确低32位视图,PF原方法/公开面保持。三条P3分别采纳历史AD坏槽纳入P2-α、显式unchecked与注释、新正式版合并修订。
- 已生成[正式附件](阶段4B2字段与模块加载合同-正式版-2026-09-23.md),后续实施首读该版本;原受审附件、补审方案及报告原样保留。正式版只合并已审差异及裁决,无额外扩围。
- 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/退出码见[首批实现与证据](阶段4B2检查点2首批实现与证据-2026-09-23.md)。
- 真实对象验证只覆盖这两模块,未触碰共享GContext或执行后台任务;尚未完成31模块/完整事务/guard/服务编排/总体验收。M01/M02目前只有核心codec,不能填为实际模块Apply通过。
- 继续核查明确M21/M22/M24非Nullable struct与已审null空态矛盾;相应代码未改,已集中形成[D3补审方案](阶段4B2检查点2值类型空态差异补审方案-2026-09-23.md)及[提示词](其他AI审查提示词-4B2值类型空态差异-2026-09-23.md)。推荐保留原类型,使用内部存在标记+全字段清零/新空集合,需外部补审后主会话裁决。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提交。
## 2026-09-24 检查点5:独立实施复核裁决,4B2正式关闭
读取09-24独立复核报告,主会话重算221项交付hash全部匹配,新增checkpoint5-review-ruling-hashes-2026-09-24.json保留逐项结果及报告/清单hash;未重封或覆盖旧送审材料。已在《阶段4B2实施复核裁决与关闭-2026-09-24.md》逐条裁决B2-01~22、四项已知事项、三条P3,无待修P1/P2,4B2正式关闭。
独立75组1715断言对比作者1713,唯一差异B2-C1-issuance-close-race为98→100,由成功发行时追加处置检查引起;保留双方数字。P3运行前置和kv→BackendNotEnabled/其他非法值→BackendUnsupported映射已明确,playfab受控实例仍Input。采用独立Unity31对象/83断言及0错误证据,本轮未重跑全套测试。
KVSync StorageError和新增3C L7首败均保留为根因未定;仅接受间歇事实,不接受源码相同足以证明负载根因或完全排除4B2交互影响的推断。两项单列待查,未擅改旧受限源码。共享入口/状态/TODO、09-24机器可读todoItem同步关闭;4B3仅方案准备、4B/G4未通过,P2-α与其他正式启用门保持。本检查点只改文档,无正式服、PlayMode、打包、Git提交。