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

7.0 KiB
Raw Blame History

4B3A交付与验收矩阵

状态:限定实现与主会话自验完成,待独立实施复核;4B3A尚未关闭。 4B1/4B2已关闭,4B3B/C未批准编码,整个4B/G4未通过。

1. 本次交付

依据方案、独立设计审查及主会话逐条裁决与实施批准。开工39项材料和2101源码hash全部一致、7项未来路径不存在。

本次实现固定句柄的读、写、Flush、票据等待四个internal static入口;结构化键结果区分读取失败、有效缺键和存在值。入口先服从B2加载guard,后续交由原handle处理,原结果/票据/任务透传,不重新选择账号。目的在于为后续逐业务迁移提供明确入口,本阶段没有接通普通玩法保存。

原有文件仅PlayFabMgr新增块。新增键结果、Editor合成验证host、Editor固定反射转接三个C#文件及各自meta;其余为新测试和审查材料。2101项原源码中仅PlayFabMgr变动,删除新增块后原字节完全一致;旧B2交付221项中也仅该文件变化。证据:范围核对。不把此前工作区累积改动归为本轮。

2. 实测结果

项目 本轮结果 日志(均在KVSaveRouteTests/)
新入口最终默认/Android/PlayerProbe 每条件13组544断言,0失败、退出0 checkpoint4-route-default.log、checkpoint4-route-android.log、checkpoint4-route-player.log;checkpoint4-route-exits.json
新入口检查点3原始验证 每条件13组508断言 checkpoint3-route-default/android/player.log;新增36断言来自限定自审补测
Unity CLI Loop编译 0错误、0警告 checkpoint3-unity-compile-permitted.log
Unity固定入口 34断言;auth=2/Get=2/Set=1;restored=true,formalRequests=0 checkpoint3-unity-route.log
Unity B2-20 31真实模块、同对象双epoch、83断言;restored=true;禁止副作用计数0 checkpoint3-unity-b220.log
4B2离线/关闭故障 75组1713断言;三个独立进程5+8+8断言 checkpoint3-b2-offline/cleanup-prepare/cleanup-schema/cleanup-apply.log
4B2 ServiceHost 双条件各8组73断言;PlayerProbe通过 checkpoint3-service-false/android/player.log
4A/4B1 18组226断言/23组279断言 checkpoint3-regression-KVGameBridgeTests/KVLoginContextTests.log
原核心回归 Contract 42;Coordinator 29;Review通过;3C离线8/8 checkpoint3-regression-对应项目名.log
KVSync 首次85/86,重跑86/86,根因未定 checkpoint3-regression-KVSyncTests.log和-rerun.log均保留
KVLive/NetworkTransport 仅build通过,未运行真实服代理 checkpoint3-build-KVLiveTests.log;checkpoint3-network-build-with-dependencies.log

Unity执行同时核对外层Success、内层success/restored;不只看CLI退出码。Editor isPlaying=False见checkpoint3-unity-state.log。真实IO合成测试及Unity CLI因沙箱File.Replace/子进程限制,经自动审批在非沙箱执行;未发正式请求。最初失败日志未覆盖。

3. B3A-01~19逐条验收

测试名为Program.cs/WriteCases.cs中的方法名;完整运行日志含C1/C2/C3显示名。以下“通过”均指作者自验,独立实施复核待完成。

编号 实际证据/边界 作者结果
01 ReadContract:存在/缺键/空串、大小写/空格/Unicode/128边界;Get计数不增加 通过
02 ReadContract/Guards:null/空/129、guard优先、失败Found/Value为null 通过
03 NonReady/Storage/TransportFaults/Stale:真实Conflict/Unknown/IO故障/401及旧handle;其余底层状态沿用旧回归 通过,非全状态facade端到端重造
04 LocalOnly:remote接受有票据、发送前本地可读、未把Accepted视为远端确认 通过
05 LocalOnly:remote→localOnly保留旧pending;localOnly→remote新值发送 通过
06 LocalOnly/Guards:null值、非法key拒绝;空串保留不删除 通过
07 Storage:本run唯一tmp目录制造实际失败,sequence/revision/uncertain=false、无票据及重试;finally非递归清理并断言 通过;uncertain=true沿用旧KVSync五阶段故障+直接return审计
08 Watermark:Superseded/Confirmed计数;后写不被旧水位确认、后续独立确认 通过
09 TransportFaults:响应丢失/401为Unknown、一次发送、失败读取非默认值 通过
10 TicketOwnership/Stale:null/外来Owner/同账号新epoch拒绝,历史票据不授权新Owner,Wait不发Flush 通过
11 CancelDrain/TicketOwnership:观察取消不撤销底层,Close等待忽略取消的传输排水;预取消不承诺未发送 通过
12 Stale:跨账号/同账号新epoch、四入口拒绝;B缓存/请求/示例回调共享内存不变 通过;仅示例回调,非全业务迁移
13 CloseRace:16轮Read/Write/Close竞争,只观察A准入或拒绝;CancelDrain覆盖Flush未完时Close等待 通过,非穷尽线程交错证明
14 Guards:四入口拒绝、ReadLocal=1/Update=1/Sync=2;PF/Prefs为0 通过
15 Surface与范围审计:未创建PF组件,未调用Instance;原PF字节不变 通过
16 新宿主默认/Android/PlayerProbe,旧ServiceHost双条件/PlayerProbe;静态源码仅定义与Editor调用 通过;未验证Player链接/裁剪
17 Unity固定case34断言、资源Close后restored=true、非PlayMode、编译0错误0警告 通过
18 上表旧全量回归;KVSync首败保留,KVLive/Network仅build 最终回归通过;间歇问题仍待定位
19 范围/hash、限定自审、交付提示词已备;独立实施报告与主会话关闭裁决尚缺 待独立实施复核及关闭裁决

4. 已知限制与下一步

  • KVSync坏revision测试本轮首败StorageError,复跑通过;此前3C L7间歇失败本轮未重现,两项根因均未定。沙箱权限诊断只解释新测试的已定位权限失败。
  • NetworkTransport原命令缺4B2既有依赖;附带既有RegressionSupport/Dependencies.targets构建成功,没有改旧csproj。原失败日志仍在。
  • A不提供跨异步全程的guard租约;现有Owner负责排水。B负责回调/共享可变内存归属;C负责加载后写权限、生命周期和切换顺序。四入口当前无普通业务调用者。
  • 没有真实渠道、支付、广告、Player包、链接裁剪或正式启用证明。正式地址仍http://s101.local:18080/,本轮正式请求0,无PlayMode、打包或Git提交。
  • P2-α真实存量档迁移/备份/恢复专项独立审查及用户产品确认仍是正式启用硬门。

下一步外部按实施复核提示词出报告。主会话核对交付hash、逐条裁决后才关闭A;关闭且无需补审时自动进入B完整方案准备。