Files
ft/CodexOutput/upserver/阶段4最小真实玩法闭环实施记录-2026-09-24.md

104 lines
14 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.
# 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》。