Files
ft/CodexOutput/upserver/阶段4B2交付与验收矩阵-2026-09-23.md

9.9 KiB
Raw Blame History

阶段4B2交付与验收矩阵

日期:2026-09-23。当前结论:批准范围内的代码和主会话自验完成,等待独立实施复核;4B2尚未关闭。 4B1保持关闭,4B3未启动,G4未通过。下列“通过”均指本次技术验证,不替代外部复核和关闭裁决。

1. 本阶段完成了什么

将受控登录得到的KV快照严格解码为31组不可变状态,按“全部Reset→全部Replace→Agg窗口内通知”的顺序装入同一批真实模块。成功仅返回LoadedForValidation,未接通正常玩法Done。失败、换号、取消和401都会撤销当前epoch;异步资源真正排水后才释放所有权,关闭失败或仍在关闭时阻止下一次认证。

为此,模块文件新增纯加载适配器,User/Agg新增内部受控入口,PlayFabMgr新增加载期拒写门,CustomServerMgr新增受控Lease绑定,QuitAct新增同步撤销及有界观察。旧PF加载函数和普通存档路由保留。D4批准的PartnerInfoManager表引用/容量改动单列,不是无边界的玩法重构。

工作区在4B2之前已有场景、字体、网络、公会等改动,不能将整份git diff都算作本轮。相对修订2的123项基线:85项原样、38项获批变更、0项未经批准变更。D4额外文件和新增文件列于最终交付hash清单;ClubService移除新增KV块后,与开工副本一致。

2. 执行证据

日志均位于CodexOutput/upserver/KVGameLoadTests/。

验证 结果 证据
新4B2离线宿主 75组,1713断言,0失败,退出0 checkpoint4-release-offline.log;runs/20260923144334_75379546c3404789b03c7a27ddea7784/result.json
CloseFailed独立进程 Prepare/Schema/Apply三组,21断言,退出均0 checkpoint4-cleanup-final-{prepare,schema,apply}.log
真实服务源码+SDK/Unity替身 非Android、Android+AGG各8组/73断言,退出均0 checkpoint4-service-release-{false,true}.log
非编辑器工厂表面 两种能力无创建工厂、构造私有;退出0 checkpoint4-noneditor-factories.log;仅.NET条件编译探针,没有Unity玩家包
Unity CLI Loop真实模块局部验证 19用例,912断言,全部通过 checkpoint4-final-unity-cases.log;该次B2-20的新增测试断言失败另列,不计其通过
最终B2-20完整事务 31真实模块,同对象A→B,83断言;两次认证/两次Get/一次401借用;恢复成功 checkpoint4-release-full.log:success/restored/fullB220均true,禁止调用/事件/订阅均0
Unity编译 0错误,270既有警告,新增KV文件0警告 checkpoint4-final4-compile.log
原4B1 23组/279断言,退出0 checkpoint4-regression-KVLoginContextTests.log
原4A 18组/226断言,退出0 checkpoint4-regression-KVGameBridgeTests.log
阶段2/3B/Review/3C 42/42、29/29、Review通过、3C离线8/8,退出均0 checkpoint4-regression-{KVContractTests,KVSyncCoordinatorTests,KVSyncCoordinatorReviewTests,KVStage3CTests}.log
3A KVSync 首次85/86、StorageError;单独重跑86/86 checkpoint4-regression-KVSyncTests.log(退出1);checkpoint4-regression-KVSyncTests-serial.log(退出0)。根因未定,仍列待查,不能称已修复
KVLive 仅构建,0错误/0警告,退出0 checkpoint4-regression-KVLiveTests.log;未运行
既有服务与退出 MinimalLogin原32项;Quit原4项+2项新边界探针通过 checkpoint3-minimal-login-regression.log;checkpoint3-exit-final-regression.log
旧NetworkTransport 最终仅构建通过;依赖真实转发代理的运行不计通过 checkpoint4-network-build-final.log;早先连接127.0.0.1:50121失败保留于checkpoint3-network-regression.log。未启动转发s101的代理
范围与调用审计 123项基线零越界;65个Reset/Replace方法无直接禁用调用 checkpoint4-boundary-and-evidence.json;VerifyBoundary.ps1;间接调用人工核对见限定自审

全部账户、数据、HTTP响应均为合成值。4B1允许的临时缓存文件仍有IO;“零写”指游戏业务存档不写,不把缓存IO隐瞒为零。没有正式服请求、PlayMode、打包或Git提交。

3. B2逐条验收映射

条目 主会话验证结论及边界
B2-01 服务替身验证PF普通存档、非AGG/AGG授权捷径、真实PF初始化在时间校准之后;普通PF登录跑至故意拒绝的API边界,账户传输由既有32项另证,不冒充真实渠道全流程。
B2-02 缺省PF;kv、大小写/未知/空/null拒绝在SDK前;AGG await期间捕获配置不变;受控实例不能转PF;非编辑器创建工厂消失。
B2-03 共用真实协调器完成单认证→Get→31模块→通知→LoadedForValidation;完整Unity日志只返回受控态。
B2-04 空新档/空旧档按S101标记分型;只有活动/短主档拒绝;不Apply、不写档。
B2-05 19槽、旧散键、别名、共存一致/冲突、坏优先表示全有离线用例,不坏档回退。
B2-06 每种codec的合法、缺失、坏值及重复/null/溢出/配置/文化检查;未知键保留原始只读快照并分别计Unconsumed顶层/现代内层数量。
B2-07 19个局部真实对象用例+完整31对象A→B,逐字段/嵌套集合比对;空态与存在标记、派生引用、三套鱼索引、独立绑定集合均覆盖。
B2-08 31个Reset/31个Replace逐边界失败或撤销;失败不通知,全部清空,Reset失败Poisoned不可复用;末个Replace后的撤销也先于通知检查。
B2-09 MMTest新旧/缺失/非法PFID,至多2条内存意图,去重与关闭Discarded;不持久化。
B2-10 实际Agg内部await窗口仅一条接收器,成功/失败finally退订;A/B头像与绑定集合独立;SDK真实集合未调用。
B2-11 实际PlayFabMgr的Compare/GetLocal/普通及remote=false/立即/定时/暂停/退出/销毁入口共12次拒绝,替身Prefs/SDK计数0、内部缓冲仍未启动;guard各点另外离线计数。
B2-12 Android+AGG和非Android直接链接原UserService:PF平台分支保持,KV只解析余额,Helper/奖励/UI/GEvent均0。不是Android真机或包验证。
B2-13 单认证、三个合成handler同Cookie,预检真实handler拒绝在认证前;固定Lease路由、地址一致和凭据不外露由Lease/服务验证。
B2-14 Lease发行/Close/send竞争及忽略取消排水的19组检查点1测试保留在75组内。
B2-15 实际CustomServer当前401撤销;退出后迟到401不再触发Unauthorized或认证;PF原401当前/旧版本分支另测。
B2-16 同/跨账号重载、跨协调器历史关闭屏障、10秒观察、占锁超时/取消/同时获锁不泄漏、迟到Prepare无Apply、失败屏障不可绕过。
B2-17 实际Quit源码的同步撤销在Hub await前;5秒观察只结束等待,未排水资源和Registry不释放;迟到清理/故障证据保留。
B2-18 原4B1全部Prepare错误原因回归+真实拒绝方法逐枚举错误保留测试;Prepare/Schema/Apply叠加CloseFailed再用独立进程端到端测试。逐枚举层是映射验证,不称每种组合都端到端重造。失败结果不携带成功Prepare数据快照。
B2-19 原4B1全23组保持,首token/历史Task/发布顺序及排水语义回归通过。
B2-20 最终83断言通过,31对象/两epoch/真实适配器/原容器与事件恢复;与19个逐模块用例合计995断言。
B2-21 要求的回归最终均通过;3A首次失败事实和根因待查仍保留。额外旧NetworkTransport运行未通过,不冒充已覆盖。
B2-22 自审、hash/范围/合成传输证据已提供;独立实施复核和关闭裁决尚未完成,本行未关闭。

4. 模块完成明细

所有模块同时参加最终B2-20;下表列独立字段验证入口。证据中的联合断言可重复覆盖某模块,不据此推算额外模块数量。

模块 已完成的加载内容 局部用例
M01/M02 19核心槽、玩家附属/派生空态、三个小游戏计数 M01-M02-M21-M22-M24
M03 鱼旧/5/9槽、纯重量/等级/卡数派生,鱼/卡/地图索引,配件/幸运字典 M03;Unity Round边界与低于上限反例
M04 商店购买/广告/钻石/券完整状态 M04-M21-M22-M24
M05 限时/固定活动、目标/排名、轮盘/PVP计数 M05-M21-M22-M24
M06/M13 Buff四类、触发礼包/VIP礼物/定时商店 M06-M13
M07 营地存档、构造与派生空态 M07
M08/M23 成就三表示、FootPrint完整ulong与低32位视图 M08-M23
M09/M10/M12 箱子、引导、月签到 M09-M10-M12
M11 通行证全字段和任务集合 M11
M14 公会签到、捐赠、红点加载态三项 M14;P2-β原逻辑不变
M15/M26/M27 挑战、弹球、刮刮卡原始档及未激活态 M15-M26-M27
M16/M17 宝箱链、Disco原始档及运行空态 M16-M17
M18 伙伴全部保存字段、机器人/tuple/嵌套集合、实例表和容量隔离 M18;D4冷/热类型及双容器
M19 Cube全存档及运行空态 M19
M20/M21/M22/M24 活动礼包、存钱罐、议价礼包、射击;值类型存在标记 M21-M22-M24及联合用例
M25 Potion全部嵌套存档和未激活态 M25
M28/M29 两个进度礼包实例、Pinata原注册实例三字段 M20-M21-M22-M24-M28-M29
M30 沙挖新未初始化模型,活跃对象拒入 M30
M31 MMTest/渠道/头像/余额/意图及受控身份 M31+服务宿主

5. 交接与未完成事项

下一步使用《其他AI审查提示词-4B2实施-2026-09-23.md》,只独立审查本次交付。主会话之后核对最终交付hash、逐条裁决报告、处理必要修复,再决定关闭4B2。不得提前启动4B3。

P2-α真实存量档兼容/迁移、备份、失败退出及人工恢复专项仍需独立评审和用户产品确认。本次严格Schema不代表已获准拒绝或迁移真实玩家档案。正式地址仍为http://s101.local:18080/;继续Unity CLI Loop,不用UnitySkills,暂不打包。