Files
ft/CodexOutput/upserver/P2AlphaImport101/D2-实施交付与离线验收.md

4.9 KiB
Raw Blame History

P2-α-D1/D2实施交付与离线验收

2026-09-28,主会话。三文件实施和离线验证完成,待独立实施复核;101尚未导入。 当前不申请提前停写,不运行正式导入命令。

改动及理由

文件 最终改动
Preflight/Program.cs 精确插入2行:固定验证和固定101导入分支;移除这两行后与备份字节hash相同,其他分支不变
Preflight/Import101.cs 新增225行固定101辅助工具;冻结源/清单/配置、真实时间候选、空目标、持久claim、一次Set与一次观察、错误停写;无通用账号参数
Preflight/Import101Tests.cs 新增231行固定隔离测试;mock transport及持久化/候选故障注入,明确禁止真实请求

Client下生产源码、cfgData、csproj、Import102、源PF101及旧102 claim均未修改。原60项受审文件中54项不变,6项预期更新为Program及5份共享状态;新增2源码另列。见D2-scope-verification。未观察或操作Unity,不引用C的旧空闲状态冒充本轮观测。

最终验证

  • D1-build-final.log/result:构建退出0,0警告、0错误。
  • 最终D1-bin/Preflight.dll:SHA256 AAA1276630E8633C131072DDF638639B92F60134A0425E17616A4A5A2A436607,355328字节;与D2-run-artifact.json实跑记录相同。
  • 明确运行dotnet .../D1-bin/Preflight.dll --verify-import-101,退出0,37组、1141断言,完整结果见D2-tests/20260928T072727Z-d72e733005eb4d1c8fc805fceb6f0504/result.json。
  • 正式请求0。成功组使用真实冻结55键、7配置和完整Decode一次;服务描述符/时间来自内存mock,不称真实服务器候选通过。其余候选是故障/Valid替身;不会用合成结果代替D3实时校验。
  • 未创建正式import-101.claimed或D3-window.json。测试claim仅位于D2-tests各隔离案例内;旧102 claim保持。
方案验收组 最终证据
来源/清单/配置 源hash、条目遗漏/重复/值变、配置清单版本、配置字节变更均零登录/Set;严格JSON重复属性/尾随内容拒绝
运行门 未批准/过期模拟窗口、null handler拒绝;测试不得回退真实网络
登录/目标 HTTP/协议/newCreate失败零Get/Set;before失败或非空零Set,账号证据保存失败零Get
候选/持久化 候选无效及before/候选保存失败零Set;记录故障注入,不称真实源缺陷
claim 既有、写失败、部分写、竞争CreateNew均零Set;已有/部分/竞争claim保留;claim后窗口过期零Set
成功 真实源/配置隔离Decode为Valid,55原值全部送入替身,登录1/Get2/Set1、完整对账及未排序adapterKeyOrder一致
不确定写入 503不确定和未被adapter捕获的异常均只Set1并Get观察一次;即使值相同也失败,保持claim
写后本地失败 set-result写盘失败仍保存after;after/verification写盘失败非成功,不再Set
观察不合格 Get失败/异常、缺键/多键/值变、窗口结束均非成功且不补偿
禁止重放 所有已Set案例再次调用核心均在网络前被claim拒绝,原claimhash保持

作者自审及过程偏差

  1. 在首轮构建后、首次测试前补了claim落盘后的窗口复查,并修正严格解析负例不能“自己抛异常后被当作预期拒绝”。
  2. 首次34组1075断言通过后,继续补竞争claim、claim后窗口过期、账号证据保存失败三例,并给所有mock断言加失败记录,避免预期异常路径吞掉真正的断言失败。最终37组结果才用于交付。
  3. 第二次构建超过首轮工具等待时间,命令返回仍运行session时,主会话误提前启动了一次旧DLL验证(仍34组)。during-build-*输出和artifact记录保留;不把它当新源码验证。之后明确等待构建session退出0、重新冻结最终DLL并执行37组,满足最终源码/产物/结果一致。没有正式接口操作或删除失败证据。
  4. 新辅助工具的配置输入从同一份bytes校验并解析,候选使用已解析表,不校验后再读取变更文件。两个清单hash及版本常量同时固定。
  5. P3窗口字段落实,正式入口拒绝testOnly窗口;adapterKeyOrder只说明客户端字典枚举,不能用顺序推断并发。无CAS,跨设备停写仍依赖当次用户声明及可核实手段。

留给D3的实际条件

独立实施复核通过并主会话裁决后,才可安排用户101所有客户端停用的实际窗口,生成D3-window.json。正式入口固定读取该文件,缺失/过期/未标实施复核通过即不登录。D3仍须CLI只读核本地状态及现有claims,明确窗口记录不证明服务器无连接;真实候选/空目标/一次Set/after结果另作交付。

已有测试映射授权不变;无需再确认来源。102不登录、不覆盖。整体P2-α和实际101导入尚未关闭;保持不Play、不打包。