42 lines
4.3 KiB
Markdown
42 lines
4.3 KiB
Markdown
# P2-alpha-A已有存量档只读盘点方案独立审查
|
||
|
||
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与本方案编写与执行;此前参与为4C1/4C2系列审查(本方案引用的P2-α硬门源自4B2修订2裁决链,本审查者为该链审查方)。本轮只读+hash重算+源码核查,未启动Unity/网络/许可。
|
||
|
||
## 受审hash核对
|
||
|
||
`P2AlphaAudit/design-review-hashes.json`:**20/20重算全部一致**。另核实《后续真实运行采样与离线复跑约定》完整落实4C2复核四条P3(DLL路径复跑/apphost禁用/前置采样窗/planned-actual元数据+公式输入与面板属性采集)。
|
||
|
||
## 总判定
|
||
|
||
**通过。** 无P1/P2;P3四条不阻塞。方案把P2-α收敛为"样本只读盘点→逐差异兼容方案→产品政策/迁移专项"是正确的第一步,且以**空生产白名单**从结构上杜绝了"盘点顺手改代码"。
|
||
|
||
## 七项逐条
|
||
|
||
**1. 收敛合理:是。** 三路线比较成立——直接修101两处null被正确拒绝(M22空态消费语义未证明、不能把"旧档存在"当"合法等价");通用迁移框架被正确拒绝(无代表性样本与目标授权)。产出定位为"可审计差异台账+待确认迁移政策"而非任何执行——与P2-α硬门(4B2修订2裁决)的原始要求逐项对应。
|
||
|
||
**2. 入口约束诚实且可执行:是。** 本审查核实`KVGameplayLoopSetup.InspectPFBackup`(:51)存在且为固定反射入口(→`PlayerKVGameplayLoop.InspectPFBackupForEditor`);sourceOnly/syntheticDescriptor/隔离容器/不Open不Apply不发布的历史定位(pf-source-schema.json口径)沿用;Enabled=false+无GContext+全新空闲Editor的门,**明确拒绝清静态标记绕过**(上次run遗留Enabled=true须重启编辑器)——诚实且与既定claimed/guard语义一致。
|
||
|
||
**3. 两个null分类正确:是。** 本审查源码核实:
|
||
- M15:旧`InitChallengeData`经`JsonConvert.DeserializeObject<FishingChallengeData>(null字面量)`确实产出**null对象**——但null挑战对象与"无挑战"在全部读取入口处是否等价**未证明**,方案正确地将其列为"需逐读取入口确认"而非自动删键;
|
||
- M22:`selections`为`List<int>`字段且构造默认null(旧档可合法携带),而Schema:238`IntegerList(obj["selections"])`要求数组——冲突属实、其余字段的已激活礼包状态**不可整键删除或默认重建**——正确。
|
||
- 生产/测试白名单为空=结构性防误改 ✓;cdTime先例不被泛化 ✓。
|
||
|
||
**4. 覆盖足够且代表性限制明确:是。** 100个样本key出现项(55+45不去重)、31模块双向、非模块键/未知键单列、AD坏槽/未知鱼/配置严格项全部入账;两份专用样本不输出"全量兼容率"——诚实。
|
||
|
||
**5. 数据边界准确:是。** KV102为已续进度目标态(gold234004/energy383)禁止旧PF重导 ✓;无CAS下的备份/Unknown观察/人工恢复/禁自动双写合同与此前所有裁决语义一致(Unknown只观察不重放、"新读一致仅当时观察")✓。
|
||
|
||
**6. 政策与操作分离:是。** 拒档/迁移属用户产品确认事项,本单元只读操作批准不含之;方案不关闭P2-α整体与G4 ✓。
|
||
|
||
**7. A0–A4可验证、无多余工具:是。** 复用既有入口/shell/哈希工具、不建第二套Schema解析器;**A2(离线解码观察)与A3(消费语义盘点)分离、"只跑Decode不自动关闭A"** 的门设计正确。
|
||
|
||
## P3清单
|
||
|
||
- **P3-1**:A3台账建议为每个key附"旧PF读写位置"列时**直接引用4B3调用扫描(234行台账)的行号**——为后续4B3B迁移直接复用,避免二次盘点。
|
||
- **P3-2**:M15等价性证明范围建议显式枚举`fishingChallengeData`的**全部读取入口清单**(null vs 缺键行为逐行)作为A3证据行,而非笼统"逐入口确认"。
|
||
- **P3-3**:cfgData指纹冻结建议同时记录Schema解码所用的Tables内容hash与KV102样本的采样时间基准(与历史诊断usesLocalUtc口径对齐)。
|
||
- **P3-4**:A2重启编辑器后的准入核查建议按既有实践记录get-version+playing/enabled/permit状态快照入证据。
|
||
|
||
## 结论
|
||
|
||
**通过P2-α-A方案。** 建议主会话核hash(已代验20/20)逐条裁决后进入A1裁决→A2–A4只读执行(开发侧);本报告不构成真实存档迁移授权,P2-α整体与G4保持开放。
|