Files
ft/CodexOutput/upserver/P2-alpha-A已有存量档只读盘点方案-待评审-2026-09-28.md

9.6 KiB
Raw Blame History

P2-α-A 已有存量档只读盘点方案(待完整评审)

日期:2026-09-28;主会话。4C2已限定关闭,按“最小改动、先跑起来”要求,推荐先推进正式启用前已有硬前置P2-α,首单元只处理已有本地样本与迁移规则,不扩展玩法。用户如另选下一方向,本方案保留候选,不视为开发批准。

1. 目标与选择

P2-α来自4B2修订2裁决:正式启用前须完成真实档兼容盘点、版本/字段识别、迁移/备份、失败退出、人工恢复专项及用户产品确认。102成功不代表所有历史PF档均兼容。

选择 成本与边界 本次建议
已有样本只读盘点,输出逐差异处置规则 不改业务、不访问服务器;先定位真实缺口;两个专用账号不能证明用户全量兼容率 采用为P2-α-A
直接修改101两处null兼容 改动可能很小,但M22空态语义/消费路径尚未完整确认;不能将“旧档存在”当作“合法且等价” 后续按盘点结果提出单独精确差异方案
建通用自动迁移并批量导入 增加身份、停写窗口、版本/CAS/回滚等依赖,当前没有代表性样本及目标授权 不在本单元申请

本单元交付是可审计差异台账和待确认迁移政策,不是启用KV、清理历史档或实现新迁移框架。已有102保持最新KV进度,不再次导入9月24日旧PF档。

2. 已核查输入与初始发现

输入 已有证据与限制
PF101,20260924T041802Z,55键 源hash E6EB3E656B62A3535FDB8F0DC517321A4C3E32F3A8D95385A2B7D5C0AA8222EF;两处仍被历史cdTime修复后诊断标为Malformed:M15、M22
PF102,同批,45键 源hash 827F36084648449CEFAFB96B3CE62093DF70B8A87E33A526DA5B03A9C135A377;同一诊断Valid;后已通过专用真实游戏闭环
KV102,20260928T025514Z,45键 4C2结束态gold234004/energy383;是游戏已继续产生进度的目标样本,不能用旧PF102覆盖
Schema/Bindings/cfgData 诊断依赖配置内容与UTC;必须冻结源码和cfgData指纹,记录采样时间;历史诊断不是当前配置下全量用户结论
历史审查合同 严格AD坏槽、未知鱼/错归属/缺配置/同卡冲突、core布局、数值与时间解释均在范围内,不只盯两个null

源文件均在 KVGameplayLoopTests/pf-source-backups/20260924T041802Z/;历史报告 pf-source-schema.json / cdtime-source-schema.json 明确syntheticDescriptor/usesLocalUtc/sourceOnly,不是真实认证或加载许可。

本次只读源码核查:

  • PF101的FishingChallengeData原字符串为JSON null;PlayerKVSaveSchema.DecodeChallenge在Object(Json(text))拒绝,而旧FishingChallengeManager.InitChallengeData(string)经JsonConvert可产生null对象。是否等价于“没有挑战”仍需逐读取入口确认,不直接归为可自动删键。
  • PF101的GeneralEventPackData对象存在,selections为JSON null;当前DecodeBargain要求IntegerList,Apply构造新List。其余字段包含已激活历史礼包状态,不能删除整键或默认重建以绕过拒绝。
  • Advert.cdTime=null单字段已获审查并修复,不重复开发;禁止把该批准泛化为所有null均可接受。
  • 101/102为两份专用样本,没有代表性总体证明;不输出“全量兼容率”。

3. 执行白名单与数据流

生产/测试源码改动白名单:空。 允许只读现有源文件、原样本、历史报告;新增文档及结果限 CodexOutput/upserver/P2AlphaAudit/ 与本方案/独立报告。若确需新诊断代码,先另列最小源码差异完整评审,本方案不授权。

流程:核源hash/身份→冻结源码与cfgData指纹→复用已有固定本地InspectPFBackup入口→按31模块及所有源key编目→逐差异追踪旧读取/写入与新Decode/Apply→分类、提出最小处置→自审并独立复核。

固定入口:KVGameplayLoopSetup.InspectPFBackup,已有脚本 KVGameplayLoopTests/unity-source-inspection.cs.txt。严格保留source=PlayFab/title=108EE8/customId101或102/指定本地目录限制,使用隔离容器和原Decode;不Open、不Apply、不发布句柄、不建运行permit。

入口要求Enabled=false、无validation/GContext、Editor未Play或将Play。目前上次run已closed但Enabled历史true,不能清静态标记绕过准入;如复跑,先确认无许可/排水,再正常重启编辑器,用Unity CLI Loop在全新空闲状态检查。不使用UnitySkills,不打包。

本单元不调用PFSourceBackup或任何网络备份/导入工具。只有本地样本,不能伪称获得新的服务器时间、真实账号描述符或其他用户存档。生成清单可用现有shell/哈希工具,不创建第二套Schema解析器来代替生产Decode。

4. 台账与分类规则

每条记录必须有:样本ID与源hash、key/模块/字段、旧格式类别、当前格式规则、旧消费读写位置、新Decode/Apply位置、诊断结果、数据是否有业务含义、候选处理、依据、未验证项。原值保留在原备份,台账尽量只列结构/字段和hash。

逐key与逐模块双向核对:现有55/45键包括非31模块直接消费项;未识别键单列保留,不因Schema没报错而宣称已支持,不删除或静默遗漏。

类别 候选规则(不是已批准产品政策)
原字节可解码且消费语义一致 候选直接保留;还需真实身份、配置和目标前态门,不等于可以导入
旧业务可生成的等价空态 列精确字段兼容方案优先,不改存档绕过;null/缺键/空字符串/空集合分别判定
历史布局可明确转换 只提出每字段确定性映射及信息保留证明;不在本单元生成转换后真实档
AD坏槽/未知配置/字段歧义/数值越界 阻止该档迁移资格,保留原值及定位;不能静默跳过/填默认/清空
空目标但有旧档/目标已有进度 分开处理。尤其102已非空,不作自动合并或旧PF覆盖;没有revision/CAS或排他写入窗口时不能承诺并发安全
模块外或未知key 保留并列后续消费者;不得以“不参与当前玩法”推导可删除

5. 后续迁移、失败退出与人工恢复政策草案

本段满足专项方案讨论需要,不授权执行任何远端写入或对真实玩家实施拒档政策:

  1. 只在来源身份与目标账号映射核实、源/目标分别备份、目标前态和写入窗口有证据时考虑迁移;具体账号、key集合、差异、恢复条件必须形成可审清单。
  2. 不支持的档案保持源不动,停止该账号迁移/启用;是否继续保留旧PF入口或提供维护提示,属于用户产品确认事项,不能静默新建档。未进入KV前与KV提交结果不确定后必须区分,后者禁止自动切回PF继续双写。
  3. Set/Delete结果Unknown或MayHaveCommitted:停止后续动作,只观察并独立读取核对,不重放业务、重发整档或自动回滚。新读一致仅为当时观察,不等同CAS保证。
  4. 人工恢复另行列当前态与精确补偿范围。只有确认对应本次写入且之后无新增合法进度,才可讨论旧值恢复/删除新增key;发现其他进度或并发写即停止,不全库回退。PF源始终保留。
  5. 用户明确确认真实档不兼容时的处理政策+独立专项评审+身份/4B3/4C/tickets/4D其他门全部满足,才可讨论正式启用;本单元不关闭整个P2-α。

6. 检查点与验收

每个检查点更新开发日志/入口/TODO。当前仅A0方案准备完成,未启动新诊断运行。

检查点 交付及完成条件
A0(已完成) 下一单元范围比较、原审批门核查、两样本来源与两个null实值核查、完整只读方案、送审hash
A1(完整方案评审后) 主会话逐条裁决;冻结两个源文件、源码、cfgData指纹与环境时间;明确不发布玩法/不访问服务器
A2 全新空闲Editor复用固定Inspect入口;原诊断输出与历史逐项对照,差异有原因;结束时无permit/Play/网络写;不能手动改静态态绕门
A3 100个样本键出现项全部入账(55+45,不去重掩盖差异),31模块逐项覆盖;M15/M22、AD坏槽、鱼配置严格项、未知key有明确分类/证据边界
A4 最小后续建议、迁移/失败/恢复政策草案、未决产品事项、自审、独立复核提示词与受审清单齐全;未决项不得写成已通过

A2产物是离线解码观察,A3才是消费语义盘点;只跑Decode不能自动关闭A。无需重跑整个4C2、无需收费动作、无需把101改到Valid才算本单元完成。

7. 作者自审与评审请求

brainstorming步骤按既有合作方式落实:上下文与用户最小改动约束已核;三路线比较并选只读首单元;不需视觉伴侣;完整设计一次性交独立评审,未写业务代码,不自动提交共享工作区。用户的下一方向选择仍可覆盖本推荐。

自审:区分历史样本与当前存档、合成描述符与真实身份;不重复导102;不把null一概放宽;无自动修档/删除/退款;31模块与额外key都入账;当前Enabled=true的诊断准入问题已明确要求新进程;正式拒档产品政策仍未确认。

请独立评审本方案是否足够小、复用入口是否确实无正式请求/Apply、覆盖与分类是否充分、后续迁移政策是否诚实、A的关闭条件是否误推全量兼容。报告路径:P2-alpha-A已有存量档只读盘点方案独立审查-2026-09-28.md。后续若需两处null兼容代码,须另交精确变更方案完整评审,不能凭本方案直接编码。