Files
ft/CodexOutput/upserver/P2AlphaImport101/D0-独立方案评审.md

4.9 KiB
Raw Blame History

P2AlphaImport101 D0-固定101历史档导入最小方案:独立方案评审

日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与本方案编写与任何导入执行;此前参与为P2-α-A/B/C全链审查。本轮只读+hash重算+源指纹独立逐值核对;未构建/跑工具/访问正式或PF接口/操作Unity/验证危险参数。

受审hash核对

项 结果
design-review-hashes.json(60项) 全部一致
expectedAbsent(Import101.cs/Import101Tests.cs/import-101.claimed) 全部确认不存在 ✓
D0-source-values.json(55条) 本审查独立逐值重算:55/55键名/UTF8 hash全部一致;源文件SHA256=E6EB3E65…吻合;source=PlayFab/title108EE8/customId101/55键元数据吻合

总判定

通过。 无P1/P2;P3三条不阻塞。方案是最小正确的单账号测试导入设计,且诚实处理了Import102先例中的已知缺口。

七项逐条

1. 最小范围:确认。 游戏源码零修改(Client下全部禁改);仅Preflight目录Program两固定单参分支+两个新辅助文件(expectedAbsent已证当前不存在);csproj默认包含规则免改。三路线取舍合理(改Import102为通用迁移器扩大已验收路径;裸HTTP脚本省略候选校验/claim/替身测试——均正确否决)。无遗漏必要依赖(复用S101AccountSession/PlayerKVClient/Schema.Decode/Import102取值方式复制)。

2. 固定输入与门闭合:确认(经独立核对)。 55键源指纹本审查逐值重算全部一致;两种历史null(M15/M22经B修复后)与未知键原样写入不过滤("不能按31模块过滤"正确);配置7项hash固定版本import101-fixed-20260928-v1+送审不符即停+两清单自身hash在实现中锁定(防同时改清单绕门)——三层固定闭合。候选Decode用本次真实ServerTimeUtc而非历史时间——正确。

3. claim/并发/停写:足够且诚实。 claim在Set之前CreateNew持久化、之后即"已消耗"(崩溃不自动重跑);目标Get不提供CAS——明确声明安全边界依赖专用账号停写窗口、不宣称消除并发竞争;D3才建立实际窗口(不打断用户提前停机)。不要求全体用户迁移或CAS工程(正确留界)。

4. 一次Set/Unknown/落盘失败口径:自洽(且修复了Import102已知缺口)。 "set-result写盘失败不短路观察"(作者自审明示这是对照真实Import102发现的缺口);进入Set后一切异常按"可能已写";观察Get恰一次不重试;成功五条件同时满足(Set明确Success+after恰55原值+证据持久化+停写未破坏),Unknown后读值相同也不自动标成功;无隐含重发/自动清空("失败不是恢复到空档的授权"——因Unknown/外部进度会使清空成数据丢失——正确)。

5. 测试接缝与故障覆盖:可实施、不过度。 接缝仅internal参数(输入副本/handler工厂/候选回调/保存回调);CLI固定绑真实实现、测试不联网;11个验证组覆盖源/登录/非空/候选/持久化/claim/成功/Unknown/落盘失败/after异常/再执行——含"故障注入≠真实样本不兼容"的显式区分声明。成功组至少一次真实55键+真实配置隔离Decode——与替身组分层清楚。

6. D0–D4门完整:确认。 方案评审→实现/离线(D2即交独立实施复核,正式导入前双门:实施复核+D3停写窗口)→一次执行→执行复核→限定关闭。当前仅批准方案。

7. 限制声明完整:确认。 请求计数上限(1登录+2Get+1Set)按实际到达阶段计数;登录可能新建账号的后置拒绝语义;PlayerId非回显;本地钟未校验;26模块外键/身份映射/业务覆盖限制保留;101导入≠全体用户/正式启用。

P3清单(不阻塞)

  • P3-1:D3停写窗口记录建议包含"窗口起止的本地UTC+操作者标识+当时101无其他连接的可核实手段清单(哪怕只有'用户声明所有客户端已停用')"——把不可证明性显式落为记录字段而非省略。
  • P3-2:D0-config-hashes.json建议在D1实现中以常量内嵌版本串比对而非仅文件hash(防清单文件被移动后路径失效绕过门)。
  • P3-3:观察Get的after矩阵建议记录"服务器返回键的原始顺序"(Ordinal对账不受影响,但顺序差异可作为未来并发观察的辅助信号,零成本留证)。

结论

通过D0方案。 主会话核hash(已代验60/60+absent 3/3+源指纹55/55独立重算)逐条裁决后按D1(三文件实现+专用构建)→D2(替身验证+独立实施复核)→D3(停写窗口+一次真实导入)→D4(执行复核+限定关闭)推进。本方案批准≠导入已执行;101导入成功也仅覆盖单账号测试,不代表全体用户迁移或P2-α整体关闭。