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

49 lines
4.9 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.
# 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、不打包。