14 KiB
R1实施记录
依据《阶段4最小真实玩法闭环方案-待评审-2026-09-24.md》及同日审查裁决与实施批准。
检查点0
70项hash一致、6项新路径不存在。九项合同、2P2/3P3逐条裁决,批准限定编码;真实账号与全档fixture许可尚缺,已询问,先推进不依赖真实数据的代码/合成验证。
执行采用executing-plans/TDD:先观察缺失能力测试失败,再实现和验证;沿用用户指定共享目录及本记录,不增加worktree/Git提交或内部评审代理。预检关注:PlayFabMgr在业务对象注册前Awake;M31需运行时加载窗口;原ServiceHost显式链接源码,不得为了新功能修改旧测试项目。运行时接线置于UNITY_EDITOR && !SERVICE_HOST条件,旧宿主通过另行R1测试覆盖该新增分支。
检查点0补充:账号授权与现有数据
用户回复:“可以沿用101 和 102 ,不必强行修改,按最合适的方式执行即可”。因此允许读取/备份这两个测试账号,后续运行按完整存档事实选择,不再重复索取账号许可;不把此话视为自动PF迁移或强制造档。
Preflight/只使用既有S101AccountSession登录及PlayerKVClient.GetAsync(null),没有Set/Delete实现。首次沙箱请求Network失败;相同程序经自动审批在非沙箱连接成功。20260924T035000Z两备份均0键,摘要见backups对应summary,101 SHA256 B4A65FE01518DE0D953F47ED770EEF88FFF434C58EF7F4889E21D669501016C8,102 SHA256 A4DA163C8E53A171AA74485F2DCA4FE92303F7E6A8573A5FFDBB90A711B1F402。当前无需恢复,因为未写KV。问询只读PF来源检查/现成KV备份/先接线三个选项,未收到选择前不迁移数据。
检查点1/2进行中:接线与初验
按白名单新增三源码及meta,修改11个既有文件;保留默认PF路径,复用原Bridge/Schema/31模块方法和装备序列化。尚无运行许可。许可13断言通过;Unity CLI沙箱EPERM后相同编译经自动审批成功,0错误0警告;State确认正确项目、未PlayMode、Enabled/Ready=false、无进程标记。默认服务宿主8组73断言通过。4B2离线75组1715断言通过。4A/4B1沙箱运行发生缓存写入相关失败,原日志保留,正在诊断;不能先称全回归通过。
核查发现M24 EventShootingRangeData未在LoginStage注册,而在FishingEventData.SetEvent7/PlayerData活动逻辑才注册。本轮绑定仅Resolve已有实例,缺失则拒绝,不擅自新增注册。此处会阻止完整31对象加载;准备精确差异材料,不能因编译通过声称真实闭环通过。
检查点1/2收尾:已验证部分与未完成项
更正本轮中间记录的文件计数:实际修改10个旧源码(152行新增/2行删除),新增3源码+3meta;审计只与R1已审基线比较。B3A四固定方法所在尾段逐字节不变。checkpoint2-source-audit.json及逐文件diff保存。没有修改底层/31业务算法/场景/包/服务器。
许可测试补齐空档/重复key后15断言通过。默认服务非Android/Android+AGG各8组73断言;4A 18组226、4B1 23组279、4B2 75组1715、4B3A 13组544均通过。File.Replace沙箱拒绝有诊断堆栈,原首败及获准同程序通过均保留,不修改实现去迎合沙箱,也不关闭历史间歇问题。Unity原固定入口B3A 34、B2-20 83断言通过且恢复成功。
最终CLI编译0错误270警告,新R1文件无警告;既有变更文件上的4条告警位于未修改的方法,其余在未改文件,本轮不清理。早先增量0警告不等于整个工程零告警。源码中补充实际API URI必须等于许可固定s101地址;Editor Agg通知复用已解码M31,不读取未登录的渠道SDK AccountInfo。
新R1装备链动态合成脚本第一次因Json双程序集而编译失败,修正脚本后CLI Restricted在执行前拒绝反射/HttpMessageHandler等API。未执行,不算测试通过;未降低安全级别或另设旁路。既有固定回归入口独立运行,不能代替这个新链覆盖。正式PlayMode仍未执行。
《阶段4最小真实玩法闭环-实施进度与最小补充审查-2026-09-24.md》已给出M24准确注册补丁和评审提示词,待差异审查后落代码。101/102实际KV均空档;初始来源选择未回复,不自动迁移PF或创建数据。当前只完成白名单接线和初验,不标记C1/C2全部完成,也不关闭R1。下一步:外部审M24具体差异、用户确定初始存档来源;主会话随后逐条裁决并继续执行。
补充检查点0:81项hash复核与逐条裁决
补充报告受审81项全部一致;M24、V-1~V-4逐条裁决,批准一处注册及equipment-chain固定合成宿主,见《阶段4最小真实玩法闭环补充审查裁决-2026-09-24.md》。纠正审查中把静态缺口当作已运行到M24失败的表述。数据来源仍未决,不自动迁移;先推进独立可做的注册和测试。
补充检查点1:注册落码及固定入口首轮
M24按批准的Editor/R1条件在LoginStage注册。固定宿主首轮8组25断言通过,正式请求0,覆盖同步嵌套原票据、Superseded、水位、401、Unknown、关闭、未许可key、失效读取。补加M24单例核验时,空隔离容器构造失败,堆栈定位ShootingRangeData字段初始化依赖GContext内cfg.Tables,属于测试前置遗漏;按既有B2宿主方式补齐配置并在同步区恢复全局容器,不改业务构造。首败日志保留。
数据预检推进说明
按用户已授权的101/102与“按最合适方式执行”,选择推荐的只读PF来源核查;不再把来源偏好询问误作只读动作的必需许可。实际持久配置PlayFabTitle=108EE8且GConfig最后覆盖;空闲SDK TitleId=6DC6D不代表登录目标,未访问后者。CreateAccount=false读取108EE8两账号,获得55/45键备份,无PF/KV写入,无凭据落盘。下一步使用原白名单中的只读预检能力检查本地候选Schema,诊断描述符明确为离线合成,不发布游戏句柄、不Apply、不获取真实写权限;导入仍待实际清单和恢复范围明确。
补充检查点2:M24/V-1完成,102实际来源已查清
固定equipment-chain最终9组28断言通过(supplement-equipment-verified.json),正式请求0、finally恢复成功;M24试验的cfg.Tables前置与GContext抽象方法编译遗漏已修正,首败全部保留。原Unity B3A 34/B2-20 83断言及许可15断言通过。新增Schema只读预检后的最终编译0错误273警告;本轮无CLI安全级别变更、无PlayMode、无打包。对比81项旧受审输入,仅3个批准源码及Preflight/Program.cs改变;新加PFSourceBackup.cs只读工具。Schema、31模块算法和底层均未改。
选择102作为最小候选:PF源45键,源文件SHA256 827F36084648449CEFAFB96B3CE62093DF70B8A87E33A526DA5B03A9C135A377;有20001/30003两根已有鱼竿,当前装备20001。101源55键需3处兼容,102只需1处。只读预检报告102 M04字段5 Malformed,根因VIPAdPackData.cdTime为正常业务产生的JSON null,而Schema.Advert强制String。没有改原档、清字段或放宽Schema。
完整单方法修订设计及102原45键导入/Unknown核对/精确恢复方案已落盘《阶段4最小真实玩法闭环-102数据准备与cdTime最小兼容方案-待审-2026-09-24.md》;机器清单102-import-proposal.json包含每键字节数/摘要/前值缺失及精确恢复集合,尚未执行。新Schema差异不在R1当前白名单,送这一处必要独立补审;不重审M24,不称R1关闭。本轮新增PF身份+合并UserData只读请求2次;s101成功请求累计仍为4,KV/PF写均0。
2026-09-24 102兼容检查点0
- 新独立报告已完整读取,92项受审hash一致,单字段修订/102初始化及三条P3逐条裁决,见《阶段4最小真实玩法闭环102兼容审查裁决与实施批准-2026-09-24.md》。批准最小修订和明确45键范围,尚未修改Schema或写服务器。
2026-09-24 102兼容检查点1
- Advert仅一参数允许显式JSON null,原102完整45键Unity预检Valid/0错误;101其余M15/M22两项仍拒绝。
- 空值专项先红后绿16断言;Unity M04 136、B2-20 83、B3A 34、装备链9组28、许可15全部通过;4B2离线75组1713断言0失败。编译0错误270警告。
- 首败保留cdtime-red.log;未处理异常的测试进程锁住输出导致首次绿测构建失败,确认项目内进程路径后结束本轮测试进程,用UseAppHost=false通过。导入工具首编枚举名错误已修正,保留首败日志。业务源码没有其他修订。
- 下一步按批准范围进行102单次45键原值导入;导入逐值相等与游戏运行按键白名单是两个不同检查时点。严禁自动重试。
2026-09-24 102兼容检查点2
- 已单次导入102,正式地址固定。源45值摘要再次核验;真实登录/服务器时间候选Schema Valid;导入前新Get为空并备份。
- imports/20260924T061443Z:Set200、MayHaveCommitted=false;全量Get45键逐值相等,无额外键;verification.json保存45项布尔和摘要矩阵;after.json为运行许可备份。
- 沙箱内首个login Network失败,尚无Set且无claim;申请沙箱外执行获准后成功。未重发任何Set;正式成功请求本轮4(login/Get/Set/Get)、Set1,PF写0。
- 原proposal保持审核原文,import-102.claimed防止再次执行。开始真实运行,许可仍限定45键;已有键业务值允许自然变化。当前PreBoot场景dirty,进程重启前必须保全内存场景状态。
- 运行许可准备的首个CLI脚本因Newtonsoft类型重复引用而编译失败;同批命令曾误触Play,已立即Stop,保存prerun日志(仅2条插件警告,未见登录)。随后改为已知45键常量调用现有PreparePermit,成功后单独检查permit再Play。此为验证操作失误,不计作闭环成功,不更改游戏源码。
2026-09-24 102兼容检查点3
- 真实进程54200_639258133649707870成功登录/31模块加载并发布Ready;实际UI点击鱼竿包、已有30003详情及装备按钮,原1张票据Confirmed。
- 服务器只读备份backups/20260924T061841Z/102.json确认newData第6槽30003,45键;相对导入仅ShopPackBuyCount/NewPlayerDataDic/BattlePassRecordTask三个键变化。等级60、金币213645、珍珠445、钻石100保持。
- 通过正常IStageService切QuitStage,events已记录closed,Ready=false,再Stop Play。没有靠强杀完成游戏关闭。
- 限制:排行榜InfiniteBuildingLevel发生NullReference(Schema对缺键输出null,旧初始值0),未改源码;签到弹窗隐藏关闭按钮,通过其已有关闭回调移除(未领奖),装备本身使用实际UI点击。两项纳入后续复核,不把本轮当无异常全量通过。
- 重启前以SaveScene(saveAsCopy=true)保存dirty的PreBoot;备份与磁盘原场景SHA完全相同,证明没有尚未落盘的序列化差异。保留副本后可重新打开原场景清除脏标记,正常退出Unity并新进程恢复。
2026-09-24 102兼容检查点4(未通过)
- 旧Unity54200已由CLI正常退出,新120896于14:20:37启动;PreBoot场景已载入,但CLI无法连接。uloop fix无残留锁,未改工具或安全策略。已请求用户确认CLI服务/启动弹窗。
- 新进程恢复尚未验证;真实装备/服务端对账/正常关闭完成,详情见102真实运行记录。入口/TODO/机器todo同步。无打包,未扩展Schema修复建筑字段。
2026-09-24 102兼容检查点4(补充:环境恢复,核心验证通过)
- CLI已恢复;新进程120896_639258276377220393登录前cache不存在,Ready不同Owner。real102-restored-memory.json确认装备30003、等级/货币一致,未在第二轮再次装备。
- 第二次正常QuitStage于06:25:56Z closed后Stop;permit归档,claimed均保留。最终backups/20260924T062616Z/102.json仍45键,全部值与首次装备后相同,101空。
- 核心真实闭环通过但R1不关闭:排行榜缺建筑字段null异常仍需按提议极小修订评审后处理;签到回调辅助边界保留。完整实施复核提示词已写入102真实运行记录。入口/TODO/机器状态已同步;无需用户继续处理先前CLI连接问题。
2026-09-24 R1报错修复检查点0
- 210项受审hash一致;R1独立复核五项与P2-1/P3-1/P3-2逐条裁决。建筑默认值按已独立批准范围修复。
- 用户明确要求修复两处错误;新增退出衔接方案在原QuitAct白名单内完成主会话方法级完整评审:仅测试模式阻止Unload重进,Registry Ready才停止Play,未排水保持进程。与独立审查范围区别记录于《阶段4R1报错修复裁决与最小实施方案-2026-09-24.md》。先测试再代码。
2026-09-24 R1报错修复检查点1/2
- 红测保留:建筑4B2原缺键断言失败、Unity M01原真实Replace缺键失败;实际QuitAct宿主5个测试模式状态仍调Unload而失败。
- 生产补丁仅Schema默认值一行及QuitAct.OnStarted测试分支。绿色:4B2 75组1716断言,B3A --all 13组544断言;Unity M01 168、B2-20 83、装备链9组28;许可15;QuitAct测试模式10组35断言、非测试编译10组30断言,均通过。Unity编译0错误270警告。
- 真实102登录验证需要新进程(120896已claimed);当前PreBoot未dirty、无许可,按既有流程正常重启,保留全部claimed。
2026-09-24 R1报错修复检查点3及关闭
- 新进程101820_639258292892095408真实102登录成功,缺键建筑及等级均0;装备/等级/主要货币保持。登录与正常退出阶段原两类异常均未出现。
- 正常QuitStage于06:51:45Z closed,Registry Ready后自动停止Play;没有手动Stop。06:53:55只读Hierarchy确认editor状态。三个claimed保留、permit归档,最后CLI正常退出Unity。
- 前后backups/20260924T064749Z至20260924T065309Z:101空,102原45字符串全相同,不新增建筑key。本轮自然同值写1次,不能当作HTTP计数。
- 工具限制:退出脚本跨Play停止的await未返回并180秒超时;误用Editor未注册的get-project-info产生单独工具错误。完整证据保存、未清Console。关闭成功由事件、Ready日志、非运行Hierarchy及对账证明。
- 独立复核P2-1/P3-1/P3-2处理完成,R1正式关闭;签到关闭回调辅助边界仍披露,完整4B3/G4等未完成。详见《阶段4R1报错修复验收与关闭裁决-2026-09-24.md》。