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

95 lines
9.9 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交付与验收矩阵
日期: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,暂不打包。