Files
ft/CodexOutput/upserver/P2-alpha-B两类历史空态兼容实施独立复核-2026-09-28.md

38 lines
4.1 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-alpha-B两类历史空态兼容实施独立复核
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与B1–B4实施;此前参与为原方案审查与修订1补审(修订1的两条P3——四字符Trim精确性与教训注释——为本复核重点核对项)。本轮只读+hash重算+**精确DLL独立复跑**;未操作Unity/许可/正式数据。
## 受审hash核对
`implementation-review-hashes.json`:**1334/1334重算全部一致**。`B2-green-artifact.json`锁定的KVGameLoadTests.dll(`88CC86E3…`/495616字节)——本复跑按约定先构建后`dotnet <dll>`执行。
## 总结论
**接受。本两类空态兼容单元(P2-α-B)可关闭**(主会话裁决后)。无P1/P2;P3一条。
## 八项逐条
**1. 白名单与diff:符合。** 变更恰为批准的4生产+3测试(`B4-scope-verification.json`逐项对应);生产行数18增/5删与diff一致;无无关业务逻辑变化。
**2. M15闭合且两条补审P3落实:确认。** 实际代码(Schema:806–816):缺键→Missing;`text.Trim(' ','\t','\r','\n')=="null"`(**恰四字符Trim——补审P3-1落实**,非泛化Trim);`StrictJsonSyntax.Validate(text)`验证**原字符串**后返回`ExplicitNull()`;其余一切输入走原`Object(Json(text))`;**"Json rejects root null before returning"教训注释在位(P3-2落实)**。共用Json与StrictJsonSyntax逐行核对未变。三态DTO、非法组合校验、Replace"缺失或显式null→业务null"条件、Raw原字节保留均按合同(离线1783断言含四组DTO/严格负例/Raw空白变体覆盖)。
**3. M22最小放宽:确认。** Schema:238–241:`selectionToken!=null && Type==Null → null`,**缺属性(token==null)落入`IntegerList(null)`仍拒**;其他14字段/PackType=3/错误分类原样(:240 UnsupportedSchema保持);null与[]不混同;DTO/Apply/Snapshot的null与深复制经T2/T4(含双向修改隔离、序列化保留null)覆盖。
**4. 比较器与验证边界:正确。** `EditorValidationHost:107`仅Bargain专用Same的selections子表达式改为`(a.selections==null ? b.selections==null : b.selections!=null && SameList(...))`——**其余14字段比较逐项不变**;通用SameList(:117)未动;null/null相等、null/[]不等已入测。固定case的私有字段读取限于验证实际保存值,无新反射入口。
**5. 红绿与编译证据真实:确认。** 红测77组/3预期失败(B2-red-*原始输出保留)→**本复跑独立确认绿测77组/0失败/1783断言、退出0**(精确DLL,非apphost——`dotnet <KVGameLoadTests.dll>`并核对green-artifact hash);Unity 63/146/83断言、Editor/SERVICE_HOST双编译0错误对应最终源hash(B3-verification-summary:883配置零失配、editorCompile 0错误)。
**6. 样本与边界诚实:确认。** 101原55键与102原45键**均Valid/0诊断**(源hash不变、合成描述符/本地UTC口径保持、883指纹一致);"Decode Valid/31节点≠全用户/全玩法/模块外键验证完成"的限定保留——26模块外键/5未定位键/Present覆盖不足仍专项未决。
**7. 运行边界守住:确认。** 无Play/许可/正式数据接口/导入/打包;末态无run/permit、11 claimed保留、Unity错误0;B2-20的auth/gets按模拟请求口径解释(非正式请求)。
**8. 可关闭本单元:可以。** 关闭范围=两类空态的**加载表示兼容**;101未真实启用、未导入、整体P2-α/G4不因此关闭。
## P3清单
- **P3-1**:T1的`\v`/`\f`/`\u00a0`包裹null拒收断言(补审P3-1的配套测试)若尚未在1783断言中逐字符覆盖,建议B5后补一条(实现已正确,仅测试完备性——主会话裁决时确认即可,不阻塞关闭)。
## 结论
**接受P2-α-B实施交付;建议主会话核hash(已代验1334/1334+独立复跑)裁决后关闭本两类空态兼容单元。** 下一步候选:按A4交付建议进入"整体P2-α剩余项"(26模块外键处置、Present覆盖、真实迁移政策产品确认)或按用户优先级切换(4B3B/C、4C其余、服务端revision/CAS需求)。