7.5 KiB
阶段4C1普通钓鱼消费确认:实施交付与验收记录
日期:2026-09-24。状态:限定实施、核心真实消费与新进程恢复已完成,待独立实施复核;4C1尚未正式关闭。首次退出的修复证据和工具限制需明确裁决。
1. 本次改变什么
仅在Editor专用KV运行模式中,把一次普通收费抛竿接到已有本地保存和服务器确认:原ReduceEnergy调用一次、消费事件一次、用原整档序列化保存,等待本动作每个key的最终原票据Confirmed后才开放拉杆。重复调用、失效对象、Unknown/401/存储失败等不能自动重扣。原PF路径保持。新增v2消费许可;旧v1许可仍只用于装备/恢复。
修改4个既有源码:FishingBehaviorB、PlayerData、UserService.KVGameplayLoop、Editor/KVGameplayLoopSetup;新增一个固定Editor合成验证host及meta。没有修改任务/活动/经济公式、底层Owner/Coordinator/Schema、场景、SDK或服务器。源码变化计数及25快照对照见KVFishingConsumeTests/scope-diff.json;较大的新增文件是故障与订阅测试,不是新增业务框架。
2. 审批及界限
完整方案、独立审查及逐项裁决/检查点记录。34项hash一致、8结论/4P3接受;25源码快照保留。仅一次普通收费抛竿到可拉杆,未点击拉杆,不含鱼获/发奖/转盘/热换号,不打包。
3. 验收证据与限制
| 验收 | 结果与证据(KVFishingConsumeTests/下) |
|---|---|
| C1-01 旧缺陷 | legacy-red-retry.log:实际旧方法2项红测;permit-red-retry.log:旧许可4/8失败 |
| C1-02 真实扣费/序列化 | 固定host直接调用真实PlayerData/ReduceEnergy/原序列化/Schema;19组81断言中的真实PlayerData分支;真实服务器19槽仅3/9变化,ad消费成就更新 |
| C1-03 恢复 | 满上限跨阈值、低于阈值、等待期间真实CoRecoveryEnergy到期tick写入;未复制恢复算法。离线夹具手动驱动到期tick,不宣称实跑出现自然恢复;实际403→393始终高于MaxEnergy50 |
| C1-04 最终原票据 | 本动作多key、同key重复、localOnly、中间/最终Superseded;真实main#4与BattlePass#3 hash和服务器逐键对账相符 |
| C1-05 控制流 | control-source-tests-retry.log 27断言;编译实际三个消费/guard方法,视觉/保存边界为spy;真实点击后审计Confirmed→ready,屏幕可拉杆。未逐个加载每条动画资源来复现所有回调 |
| C1-06 故障/退出 | 19组81断言包括Unknown、401、存储失败、部分提交、超时、取消、Tween中断、正常AutoKill及实际OnDisable完成后取消。首跑正常退出有两条关联错误,修复与红绿证据保留;不宣称首跑零错误 |
| C1-07 许可/边界 | 新许可8例、旧许可15断言、控制流不支持分支拒绝;消费v2只占用一次动作,恢复已用v1,无第二次消费 |
| C1-08 同步订阅 | 真实Achievement、BattlePass、MiniBP、LuckyGame、LuckMagic的订阅/原Save纳入固定host;当前Tables的FishingEvent/TriggerPack均无ConsumeEnergy激活记录;实跑活动scope/sentry快照一致,仅主档/战令变化 |
| C1-09 回归 | B2 75组1716、B3A 13组544;Unity M01等168、B2-20 83、装备9组28;退出Editor10组35/SERVICE_HOST10组30。Editor编译0错误270警告,SERVICE_HOST完整HotUpdate编译exit0。默认非Editor前后同一CS0103原有错误,不计编译通过 |
| C1-10 实跑恢复 | 129848一次消费及对账、新进程41828无旧缓存恢复393/112/任务10、正常Quit及最终45键逐值一致;首次退出有已修复错误,见§5,不冒称完整首跑零错误 |
合成最终固定host:KVGameplayLoopTests/fishing-fixed-runs/20260924T075803_7affe913e6b04553ac6cf0bd5b674152/result.json。所有故障测试使用.invalid替身,不转发正式请求。夹具固定反射目标仅用于无Awake的PF实例、Tween编辑模式初始化门、合成活动窗口及状态恢复;不能将这些测试表述成真实UI全流程。
4. 真实账号102发生的变化
Unity129848,Run目录KVGameplayLoopTests/runs/129848_639258318484354090。
- 一次扣费:energy403→393;energyRM102→112;配置倍率索引4/费用10,MaxEnergy50。
- 主档19槽其余17槽不变;ad中ConsumeEnergy102→112,日序114→266。金币213645、珍珠445、钻石100、鱼竿30003保持。
- BattlePassRecordTask每日10003、每周20001各0→10,其他内容保持。
- 102仍45键,仅上述2键变化,其余43键逐值相同;101仍0键。
- 最终原票据key/sequence/valueHash与只读Get逐值匹配;无领奖、补档、重导、删除claimed或第二次扣费。
首个CLI瞬时Click命中按钮但未触发UIButton的自定义短按流:该流要求Down/Up时间差>0。确认仍主界面且无动作写入后,用CLI LongPress命令0.15秒模拟一次短按(低于0.5秒阈值),触发唯一消费。这是输入工具的适配,不调用消费方法冒充UI。
5. 首跑问题与未决条件
- 完成消费后正常Quit先销毁Fishing对象,原CancelFishing因Ready仍为true而Fault,导致额外ExitKVGameplayLoopAsync和并发SwitchStage空引用。主会话编码前裁决仅收窄CancelFishing为Ready且未Continued才Fault,保持Cancelled和配额;红测失败后19组81断言绿。保留real-final-errors.json。修复未通过第二次真实扣费重跑,交独立复核判断证据是否充分。
- 游戏已正常closed/排水/停止Play后,uloop launch --quit的10秒超时自动降级强制结束旧编辑器。保留工具日志;不称编辑器优雅退出通过。新进程恢复验证不依赖旧缓存。
- 新进程41828 CLI连接曾需恢复,之后已连通。登录前run/claim不存在;使用v1许可登录恢复393/112/成就112/任务10,未再次抛竿。正常Quit后playing=false、ready=false、error=null,Console Error=0;最终服务器101空、102的45键与消费后逐值相同。两份permit已归档,5个claimed全部保留,Unity空闲。
- 默认非Editor编译原FishingChallengeManager.cs:72的_cheatingScore错误前后相同,未越界修复;本期不打包。
6. 下一步
主会话实施与归档已完成。评审侧按《其他AI审查提示词-4C1实施独立复核-2026-09-24.md》及implementation-review-hashes.json核对,逐项裁决上述测试覆盖、首跑退出修复和编辑器关闭限制;只新增独立实施复核报告。随后由主会话核hash/逐项裁决,才能正式关闭4C1。整体4C、完整捕鱼奖励闭环、G4、身份/外围与最终包仍未完成。
7. 最终检查点3/4交付补记
恢复证据:recovery-fresh-cache.json、recovery-values.json、recovery-after-quit-state.json、recovery-final-errors.json、recovery-final-diff.json;新run为41828_639258336171434448。两次业务进程不同Owner、新缓存。消费后及恢复后的每个服务器值一致,未重扣、未重导。显式工具请求共6登录+6Get,Set/Delete=0;游戏运行本身的HTTP数量未单独计数,不能写总Set=0(真实消费当然已提交)。
检查点4作者自审:4个旧源码变更均在白名单;21个其他检查点0源码快照字节未变,新增host及meta仅Editor固定验证;正式地址未改、不使用UnitySkills、未打包。保留所有红测/夹具首次失败/CLI错误,不删除证据。独立实施复核仍是关闭条件,当前未创建或替代独立评审结论。