Files
ft/CodexOutput/upserver/Gameplay101Validation/101真实闭环与药水引导修正-实施交付.md

85 lines
8.5 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.
# 101真实收鱼闭环及药水引导最小修正:实施交付
2026-09-28,主会话。状态:实施、约定回归及真实闭环执行完成,待一次独立实施/执行复核;尚未正式关闭本业务包。
## 1. 结果与范围
101既有55键历史档已在真实游戏完成一次抛竿→拉杆收鱼→收下回主页→正常退出→新Unity进程恢复。鱼10231、金币+1845、体力−5保存并恢复成功;不可用药水活动的历史引导没有被误标完成。只改两个批准源码文件,没有删除钓鱼准入门、改配置/资源、改存档以绕过引导或重复付费。
批准依据:原《101真实玩法与迁移档恢复业务包》及补充《不可用药水引导恢复最小修正方案》;补充独立审查PASS,主会话19/19受审hash一致,七项及两条P3全部裁决接受。见本目录[裁决与实施记录](不可用药水引导修正裁决与实施记录.md)。本次交付仅证明101这一条Editor KV普通玩法链;不等于完整迁移、全部活动或G4通过。
## 2. 代码改了什么
| 文件(项目根相对路径) | 改动及边界 |
|---|---|
| Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs | Init取出现有save后增加一个延期分支及私有只读判断。仅UNITY_EDITOR且非SERVICE_HOST、KV Enabled/Ready、EventPotion01有效未完成且索引>0、实际节点panelName=EventPotionPanel、GetEvent(4,5)严格=-1时保留同一save到新字典并continue。不改isUpdate/存档进度、不额外Save、不清其他当前指针。活动查询异常记录具体警告并走原恢复。4/5具名。 |
| Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs | 原奖励固定验证内新增10组实际Init及回调案例;使用真实101参考档/GuidanceConfig、隔离容器/mock存储。临时设置原异步库Edit Mode上下文并恢复,预加载资源;恢复资源定义/runner/静态上下文/容器。原45组验证保留。 |
修改前原件在before-guide-fix/,对应原受审hash。guide-implementation-hashes.json证明仅批准两文件改变,其他17项保持。CheckRewardGuide、费用、奖励、配置/预制体/场景均未因本次修正修改;更早阶段工作区改动不归入本次差异。
## 3. 红绿与回归
| 验证 | 结果/证据 |
|---|---|
| 有效红测 | guide-red-result3.json:真实Init完成且无异步错误后,失败于“unavailable historical potion guide is not activated by actual Init”。当时生产文件仍为原件。 |
| 奖励全组 | guide-green-result.json:55组243断言(原45组171+新增10组72),formalRequests=0。 |
| 消费回归 | guide-regressions.json:19组81断言,restored=true。 |
| M09/M10/M12 | 同上,12断言通过。 |
| B2-20真实31模块双epoch | 同上,83断言通过,restored=true。 |
| Editor编译 | guide-green-compile.json:0错误、272既有警告。 |
| SERVICE_HOST编译 | guide-service-host.rsp/.log,exit0、0错误;HotUpdate.guide.service-host.dll。未打包。 |
共419条断言。新案例覆盖无活动真实101、可用活动、查询失败、节点Panel不匹配、EventPotion02、完成/索引0/无存档/越界及保留其他指针;实际AddIndex(true)/GuideNextEvent不会改药水存档。初次两轮夹具在目标断言前失败(PF静态赋值先后/原异步库Edit Mode上下文缺失)不算红测,原记录保留。未改第三方DLL或生产加载方式。
## 4. 两个实际进程与快照
正式API固定http://s101.local:18080/;Unity CLI Loop,手动游戏输入由用户执行。101其他客户端停用确认沿用本连续业务包,不沿用早先导入窗口。
| 角色 | 进程/运行目录(KVGameplayLoopTests/runs下) | 结果 |
|---|---|---|
| 一次收鱼v3 | 55088_639261837988243647 | 09:19:26Z ready;09:21:37Z扣费确认;09:21:54Z奖励确认并呈现;09:23:42Z正常closed。 |
| 新进程恢复v1 | 130200_639261843009600548 | 09:28:49Z ready;55键读取匹配且运行时数据正确;09:29:30Z正常closed,无钓鱼事件。 |
全部快照位于KVGameplayLoopTests/backups/:
| 快照 | 目录 | 用途及比较 |
|---|---|---|
| 修正后S0 | 20260928T091527Z | 10155键,与修正前正常退出最终085931Z一致。不是回滚至D导入档。 |
| 动作前S1 | 20260928T092018Z | 登录/签到后,抛竿前冻结;全55键与cache匹配,pending0。 |
| 额外奖励后取证 | 20260928T092245Z | 用户已收下后采样;S1→此快照仅主档、Map_5_102变化。 |
| 正常退出S2 | 20260928T092418Z | 与奖励后快照55/55一致;新进程v1基线。 |
| 恢复退出S3 | 20260928T092948Z | 与S2 55/55一致;两进程最终cache也各55/55一致。 |
机器对账:[guide-final-reconciliation.json](guide-final-reconciliation.json),可用reconcile-guide-final.ps1离线重算。102各轮45键观测值相同,只作为附带观测,不据此声称锁定了102所有外部客户端。
## 5. 真实玩法和恢复数据
原准入审计:Fish=10231、Item=410010231、Area/Map=102、Rod=20001、Mag=3(索引),主页实际倍率x5。仅一次实际付费抛竿,费用5;没有改随机鱼、强开药水活动或第二次补拍。
| 项目 | 动作前S1 | 收鱼后/S2/S3/恢复 |
|---|---|---|
| 金币 | 36550472 | 36552317(+1845) |
| 体力 | 7305 | 7300(−5) |
| energyRM | 7231 | 7236 |
| 鱼10231原值 | 6\|0\|54\|0\|False | 6\|9.23\|54\|5\|False |
| 药水EventPotion01 | 索引4、未完成 | 保持;运行时三个当前引导指针为空 |
| GuideSaveDataNew整值 | 基线原值 | 完全一致,两个新进程均无该键写入审计 |
| BattlePassRecordTask | 基线原值 | 完全一致;本条玩法没有任务键变化,不把无变化声称为任务推进验收 |
原始票据:扣费NewPlayerDataDic sequence6;奖励最终主档sequence12、Map_5_102 sequence11。reward-confirmed 09:21:54.7609805Z先于presented 09:21:54.7650083Z,各一次;guide通知1、激活0;收鱼run fault0。只有NewPlayerDataDic/Map_5_102发生钓鱼差异,其他鱼值不变。原始events.jsonl/缓存和guide-reward-reconciliation.json可交叉核验。
恢复证据guide-recovered-values.json:valuesPass=true、55键mismatches=[];真实PlayerFishData最大重量9.23、level6、新鱼标记false,金币/体力/energyRM匹配。guide-recovery-login-state.json另证101/InternalId2/kv-loop/API、三个指针空及实际活动=-1。
## 6. 偏差、边界和结束状态
- S0→S1不是纯净登录:签到使体力+30,MonthlySignEvent总序6→7/日序3→4;ShopPackBuyCount日序270→271、主档登录统计更新。已在抛竿前单独冻结、归因,不计入+1845/−5钓鱼结果。用户未单独答复签到操作人,记录为未知;主会话没有模拟签到输入。
- 用户提前点“收下”,没有留存奖励面板截图或收下前快照。已获得confirmed/presented顺序审计、用户收下说明、真实主页截图及服务器对账;复核需裁决这是否足以支持本包有限验收,不隐去证据缺口,不默认要求再付费一次。
- +1845来自实际主档差值与奖励票据。未留存全部随机/增益公式输入,不声称独立重算了完整奖励公式。
- 恢复第一条采样在启动阶段空引用,堆栈仅动态采样脚本;补GContext未就绪返回分支后实际数据采样通过。游戏Console Error=0,未修改生产代码以掩盖采样问题。
- 恢复过程不是零保存:有一次既有NewPlayerDataDic同值accepted;最终S2/S3全等,无玩法操作。游戏身份链仍有PF依赖,不宣称完全脱离PF或以KV审计代替全HTTP审计。
- 本次修正后五轮备份工具(S0/S1/额外奖励/S2/S3)共10登录+10Get,工具Set/Delete=0;包含修正前085931Z取证则六轮12登录+12Get。相对原四轮计划多一轮奖励后取证,未新增付费业务。游戏请求另计:收鱼run accepted12(含localOnly),恢复run accepted1;accepted数不是HTTP Set请求数。备份DLL hash仍为锁定AAA12766…。
- 两次正常退出均closed、pending0、active/unknown=null。v3/v1已归档,根目录无活动permit,全部15个claim保留。Unity130200保持非Play,已用claim不可在同进程重跑;本包101停用协作窗口已结束。
- 无重导/覆盖/补发/删除claim/打包。StorageError/L7、全平台引导政策、26模块外键/5未定位键、热换号、4B3B/C、完整4C/4D/G4仍开放。
下一步交独立复核,见[提示词](101真实闭环与药水引导修正-独立实施复核提示词.md)。复核通过后由主会话核受审hash、逐项裁决并正式关闭本业务包;现在不自封关闭。