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

66 lines
7.0 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.
# 4B3A交付与验收矩阵
状态:**限定实现与主会话自验完成,待独立实施复核;4B3A尚未关闭。** 4B1/4B2已关闭,4B3B/C未批准编码,整个4B/G4未通过。
## 1. 本次交付
依据[方案](阶段4B3分期与4B3A固定存档入口方案-待评审-2026-09-24.md)、[独立设计审查](阶段4B3分期与4B3A方案独立审查-2026-09-24.md)及[主会话逐条裁决与实施批准](阶段4B3分期与4B3A方案审查裁决与实施批准-2026-09-24.md)。开工39项材料和2101源码hash全部一致、7项未来路径不存在。
本次实现固定句柄的读、写、Flush、票据等待四个internal static入口;结构化键结果区分读取失败、有效缺键和存在值。入口先服从B2加载guard,后续交由原handle处理,原结果/票据/任务透传,不重新选择账号。目的在于为后续逐业务迁移提供明确入口,本阶段没有接通普通玩法保存。
原有文件仅PlayFabMgr新增块。新增键结果、Editor合成验证host、Editor固定反射转接三个C#文件及各自meta;其余为新测试和审查材料。2101项原源码中仅PlayFabMgr变动,删除新增块后原字节完全一致;旧B2交付221项中也仅该文件变化。证据:[范围核对](KVSaveRouteTests/checkpoint4-boundary-audit.json)。不把此前工作区累积改动归为本轮。
## 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-α真实存量档迁移/备份/恢复专项独立审查及用户产品确认仍是正式启用硬门。
下一步外部按[实施复核提示词](其他AI审查提示词-4B3A实施-2026-09-24.md)出报告。主会话核对[交付hash](KVSaveRouteTests/checkpoint4-delivery-hashes.json)、逐条裁决后才关闭A;关闭且无需补审时自动进入B完整方案准备。