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

4.5 KiB
Raw Blame History

阶段3C实施记录

最新终审:用户指定外部AI复核接受,无新P1/P2;主会话核对版本并裁决R1–R5/F2关闭,3C/G3通过。见终审裁决。下方“待外部复核”等表述为当时状态,最新结论以本注为准。

2026-09-23补修复更新:R1–R5已修复并完成本轮技术验证;外部实施复核待完成。最新证据见补修复交付与逐项证据,源码hash见KVStage3CTests/repair-final-source-hashes.json。下方为修复前历史记录(含旧final-source-hashes.json),不能替代新证据,也不代表3C/G3已经重新最终通过。

更正(同日后续核对):下方为历史交付记录。7/7、3/3通过不代表矩阵完整;“运行时key集合不可扩大”“任一Unknown退出路径已安全闭环”等强保证需按《阶段3C复核更正与补验收-2026-09-23.md》R1–R5补修复和证据。本次复核未重新执行或修改历史run。

日期:2026-09-23。实施范围:独立KVStage3CTests测试宿主、运行证据和本记录。生产源码未修改,未接游戏入口,未删除PlayFab SDK,未打包。

1. 实现内容

  • 新增显式--offline、--live-s101、--cleanup <manifest>模式;无参数/非法参数不访问网络并返回非0。
  • manifest在请求前原子落盘,固定API为http://s101.local:18080/、账号为101/102、缓存根为本次run目录。
  • 测试专用受限Handler把Owner无keys Get改写为manifest keys;Set/Delete越界在网络前整体拒绝;Set空data不转发。
  • 离线组合覆盖Owner/3A/3B、真实子进程pending恢复、账号/API隔离、Busy锁、Unknown在服务端观察基线和目标两种情况下均不自动解除/重发、损坏主档与有效主档+坏bak。
  • 测试宿主在Owner关闭前累计票据结果,关闭后通过Inspect()构建专用脱敏DTO;manifest以外产物不含完整fixture key和值。
  • 正式服仅走正常路径;碰撞预检后才允许写,任一Unknown立即停止后续账号写入;Owner异常路径保证Close。

2. 最终执行证据

门 命令/结果
构建 dotnet build .../KVStage3CTests.csproj --nologo:0错误、0警告
参数门 无参数及--bad-mode:非0,未访问网络
离线 dotnet run ... -- --offline:7/7分组通过,退出0
正式服 dotnet run ... -- --live-s101:3/3分组通过,退出0
阶段2回归 KVContractTests:42/42通过
3A回归 KVSyncTests:86/86通过
3B回归 KVSyncCoordinatorTests:29/29通过
Unity uloop compile --project-path C:/projects/ft/Client --wait-for-domain-reload true:Success=true,0错误、0警告

最终正式run:20260923064047_9bdd12b8c3c64a6b855887bd91e2d33d。账号101/102均登录匹配且不是新建账号;CollisionPreflight=true、HadUnknownWrite=false、Completed=true,两账号均进入CleanedAccounts。清理后每个账号由两个新登录会话分别过滤Get确认manifest keys不存在。

正式联调前曾有三次运行在login-preflight-101阶段因受限执行环境返回Network;这些manifest均为CollisionPreflight=false、CleanupAllowed=false、HadUnknownWrite=false,没有KV写入。解除网络沙箱后正式执行通过。

3. 脱敏与哈希

  • 最新正式产物扫描:完整fixture key命中0;Cookie|Token|fixture-|C:\\Users\\命中0。
  • 完整fixture key只存在manifest和离线合成远端文件;result、diagnostic、log只保存摘要、数量、状态和错误类别。
  • 生产7个KV文件的SHA256与阶段2/3A/3B既有正式基线完全一致;S101AccountSession.cs本阶段未修改,当前SHA256为EDEE0803B13B2A33B0F6E9DDE1365031653AC37CAB35C90B8046F207B7AE0476。
  • 最终完整hash见KVStage3CTests/final-source-hashes.json。

4. 偏离与修正

  • 首轮离线预检暴露测试宿主run根目录少一层、普通manifest读取误用cleanup校验;修正后重新执行7/7。
  • 实施自审发现正式账号失败后可能继续下一账号,以及Owner异常路径缺少强制Close;终验前已收紧并重新执行离线、正式服与Unity编译。
  • Unity首次因Editor/uLoop Server未就绪无法连接;启动匹配的Unity 2022.3.62f2c1并完成域重载后,最终CLI编译通过。

5. 未进入范围

未执行真机断电/平台文件系统、游戏存档入口接线、PlayFab读写替换、SDK删除、SignalR新改动或最终打包。这些不得由本记录推断为已完成。