38 lines
4.1 KiB
Markdown
38 lines
4.1 KiB
Markdown
# 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需求)。
|