Files
ft/CodexOutput/upserver/P2-alpha-B修订1解析前置独立补审-2026-09-28.md

31 lines
3.8 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修订1解析前置独立补审
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与修订1编写;**诚实披露:原方案审查Q2中"先原严格Json一次、仅token.Type==Null走工厂"的可达性判断同样依赖了"共用Json可返回Null"这一错误假设,本审查者当时未核:163的返回前拒绝——本轮据源码逐项复核修订的正确性**。本轮只读+hash重算+源码核查。
## 受审hash核对
`P2AlphaNullCompatibility/revision1-review-hashes.json`:**1301/1301重算全部一致**。
## 总判定
**接受。批准按修订1恢复B2~B4。** 无P1/P2;P3两条(其一为实施精确性提醒)。
## 四项逐条
**1. 原阻塞成立、StrictJsonSyntax支持修订:确认。** 本审查核实`PlayerKVSaveSchema.cs`共用Json在:163执行`if (reader.Read() || result.Type == JTokenType.Null) throw`——**根null在返回前即被拒**,原方案§3.1分支确实不可达。同时核实`StrictJsonSyntax.Validate`(:1093)=`Value(0); Space(); if(position!=text.Length) throw`:①`Value`对`'n'`走`Literal("null")`(:1121)——null字面量可验证;②末尾全量耗尽检查——`"null x"`/`"null,null"`等多余token拒绝;③`Space()`恰只跳过`' ','\t','\r','\n'`四种JSON空白;④无注释语法——`/*null*/`拒绝。修订的技术基础完整成立,且**不是复制解析器**(复用既有类)。
**2. 修订顺序满足三态/严格负例/Raw合同:成立。** 候选识别(四种JSON空白修剪后==字面量null)→`StrictJsonSyntax.Validate`(原字符串)→`ExplicitNull()`;其他一切输入仍走原`Object(Json(text))`。共用Json/StrictJsonSyntax/Raw复制零修改(其他26+模块不受影响);C# null/空串/"null"字符串(带非JSON垃圾)/对象字段null与根null的分离保持;Raw原字节(含空白变体)由既有复制保留。
**3. 新增负例断言充分:是。** 非JSON空白(\v/\f等)、注释、额外token、尾逗号、注入字符串、`Json("null")`经共用helper仍拒的隔离断言、三态与对象字段null分离——覆盖了修订引入的全部新边界。**M22判断准确**:DecodeBargain的父对象经`Object(Json(...))`正常解析、嵌套`obj["selections"]`的token.Type判null在JObject层面进行——不依赖共用Json返回Null,嵌套null检测不受:163影响,原方案M22合同无需任何改动。
**4. 白名单与红测边界:保持。** `B2-red-code-scope.json`确认4生产文件+Editor host未动、仅2个已批离线测试文件修改;红测77组/1717断言中**3组失败均为目标兼容断言**(M22-null-empty-list/M15-root-null/M15-explicit-null-aggregate)——预期失败非编译/apphost问题(apphost教训已按约定用精确DLL执行);停点纪律正确(发现矛盾→停→补审,不越矛盾编码)。可按修订1恢复B2~B4。
## P3清单
- **P3-1(实施精确性)**:候选修剪必须**逐字符只用`' ','\t','\r','\n'`**——禁止`string.Trim()`或`char.IsWhiteSpace`(两者接受`\v`、`\f`、`\u0085`、`\u00a0`等非JSON空白,会把非法输入误判为候选并经Validate……实际会被Validate拒绝,但候选集扩大徒增审计噪音且偏离"四种JSON空白"合同字面)。建议T1同步断言`\v`/`\f`/`\u00a0`包裹的null被拒。
- **P3-2**:修订落码时建议在DecodeChallenge内加一行注释说明"Json(:163)返回前拒绝根null,故null识别前置于Object调用"——为后续维护者保留不可达分支的教训。
## 结论
**接受修订1。** 主会话核hash(已代验1301/1301)裁决后按修订§3.1/T1增量恢复B2(生产四文件编码+新负例)→B3→B4→B5独立实施复核。原八项/三P3裁决合同继续有效;本补审不改白名单、不涉及真实账号写入。