4.9 KiB
4.9 KiB
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:SHA256AAA1276630E8633C131072DDF638639B92F60134A0425E17616A4A5A2A436607,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保持 |
作者自审及过程偏差
- 在首轮构建后、首次测试前补了claim落盘后的窗口复查,并修正严格解析负例不能“自己抛异常后被当作预期拒绝”。
- 首次34组1075断言通过后,继续补竞争claim、claim后窗口过期、账号证据保存失败三例,并给所有mock断言加失败记录,避免预期异常路径吞掉真正的断言失败。最终37组结果才用于交付。
- 第二次构建超过首轮工具等待时间,命令返回仍运行session时,主会话误提前启动了一次旧DLL验证(仍34组)。
during-build-*输出和artifact记录保留;不把它当新源码验证。之后明确等待构建session退出0、重新冻结最终DLL并执行37组,满足最终源码/产物/结果一致。没有正式接口操作或删除失败证据。 - 新辅助工具的配置输入从同一份bytes校验并解析,候选使用已解析表,不校验后再读取变更文件。两个清单hash及版本常量同时固定。
- P3窗口字段落实,正式入口拒绝testOnly窗口;adapterKeyOrder只说明客户端字典枚举,不能用顺序推断并发。无CAS,跨设备停写仍依赖当次用户声明及可核实手段。
留给D3的实际条件
独立实施复核通过并主会话裁决后,才可安排用户101所有客户端停用的实际窗口,生成D3-window.json。正式入口固定读取该文件,缺失/过期/未标实施复核通过即不登录。D3仍须CLI只读核本地状态及现有claims,明确窗口记录不证明服务器无连接;真实候选/空目标/一次Set/after结果另作交付。
已有测试映射授权不变;无需再确认来源。102不登录、不覆盖。整体P2-α和实际101导入尚未关闭;保持不Play、不打包。