docs(upserver): 归档阶段裁决与批量迁移待办
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# 101真实闭环与药水引导修正:复核裁决与关闭
|
||||
|
||||
2026-09-28,主会话。独立报告《101真实闭环与药水引导修正-独立实施复核.md》限定通过,无P1/P2,P3一条。主会话09:37:42.9426203Z重算guide-delivery-hashes.json全部120项SHA256/长度,120/120一致。未运行Unity、正式接口或修改受审证据。
|
||||
|
||||
## 七项逐条裁决
|
||||
|
||||
| 项 | 裁决及说明 |
|
||||
|---|---|
|
||||
| 1 实现范围 | 接受。实际编译边界为UNITY_EDITOR && !SERVICE_HOST;有效存档节点、实际Panel名、KV Enabled/Ready、GetEvent严格=-1、异常回原恢复及常量均落实。没有放宽钓鱼门。 |
|
||||
| 2 红绿与回归 | 接受有限结论。精确计数为奖励55组243断言,消费19组81、M09/M10/M12为12、31模块为83;合计419。不是奖励55组自身有419断言。双编译0错误。 |
|
||||
| 3 唯一一次付费流程 | 接受。S1在抛竿前;原票据确认、奖励先确认后呈现,用户收下回主页;没有再次扣费补拍。 |
|
||||
| 4 数据与恢复 | 接受实质对账结论,纠正报告中的阶段名称,见下表。药水整值保持,任务键没有推进,不夸大覆盖。 |
|
||||
| 5 运行边界 | 接受。两run正常closed/drain,许可已归档,15claim保留;无导入/覆盖/补发/强杀/打包。102仅附带观测。 |
|
||||
| 6 偏差 | 接受限定通过:签到+30在S1前分离;奖励页缺截图由原票据/presented、用户收下确认、主页截图和服务器对账支持,不再付费补证。签到操作人仍未单独确认,历史先例不替代本轮事实;接受依据是本轮差异被明确分离。动态采样过早错误为工具脚本问题。 |
|
||||
| 7 范围 | 接受。只关闭101这条Editor KV业务链及两文件修正;不宣称全体用户/全活动/热换号/G4或完整奖励公式验证。 |
|
||||
|
||||
## 报告文字纠正(不改报告原件/原证据)
|
||||
|
||||
| 区间 | 正确名称与含义 |
|
||||
|---|---|
|
||||
| 091527→092018 | S0游戏前→S1动作前:登录统计/日序+签到,三键变化;尚未抛竿,也未退出。 |
|
||||
| 092018→092245 | S1动作前→收鱼并收下后的额外取证:主档/Map_5_102两键变化。 |
|
||||
| 092245→092418 | 收鱼后取证→首个游戏进程正常退出S2:55键全等;并非恢复进程退出。 |
|
||||
| 092418→092948 | 首进程退出S2→新进程恢复且正常退出S3:55键全等。 |
|
||||
|
||||
报告第6项“金币+30”是笔误:实际为**体力+30**(7275→7305);S0→S1金币仍36550472,钓鱼后金币+1845。第4项第一段不含抛竿消费,消费发生于S1后。依据为封存快照及guide-precast-reconciliation.json、guide-reward-reconciliation.json、guide-recovered-values.json。以上均可由已有证据明确裁决,不需作者再改报告或重新复审。
|
||||
|
||||
## 唯一P3裁决
|
||||
|
||||
采纳流程建议,不修改代码。后续真实收鱼协作清单显式写为:
|
||||
1. 主会话冻结动作前基线后再交用户一次操作。
|
||||
2. 用户成功后停奖励页,主会话完成截图、票据/保存核验并回复“可收下”后才点击收下。
|
||||
3. 若已提前收下,不自动要求再收费;保留实际证据并在该轮交付说明偏差,由复核裁决。
|
||||
|
||||
本次此前提示已有“先不要点收下”,因此此项属协作提醒加强,不是缺少原合同,也不需新增UI锁/通用工具框架。
|
||||
|
||||
## 正式关闭与下一步
|
||||
|
||||
**本业务包(101真实收鱼/保存/新进程恢复+不可用药水引导最小修正)限定关闭。** 101迁移档和102既有进度各自已完成被批准的真实链路;不重复本包开发、付费验证或复核。
|
||||
|
||||
下一步主会话准备更接近日常开发的单账号运行方案;先查清无permit时默认PF/普通kv拒绝、一次性动作状态等真实边界,再形成完整方案交审。此关闭不授权删除一次性门、开放连续消费或正式kv。继续采用一次完整方案评审→连续实施/内部日志→一次交付复核。完整4B3B/C、其余活动/模块外键、StorageError/L7、4D/G4仍开放。
|
||||
@@ -0,0 +1,84 @@
|
||||
# 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、逐项裁决并正式关闭本业务包;现在不自封关闭。
|
||||
@@ -0,0 +1,45 @@
|
||||
# 101真实闭环与药水引导修正:独立实施/执行复核
|
||||
|
||||
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与本包实施与真实运行;此前参与为业务包方案与引导修正方案两轮审查(两条P3为本轮核对项)。本轮只读+hash重算+源码/对账独立核对;未运行Unity/正式接口/修改任何证据。
|
||||
|
||||
## 受审hash核对
|
||||
|
||||
`guide-delivery-hashes.json`:**120/120重算全部一致**(两文件前后版、方案/裁决、红绿/回归/编译、两真实run、许可/claim、各轮快照与对账全套)。
|
||||
|
||||
## 总结论
|
||||
|
||||
**通过(限定)。本业务包(101真实闭环+药水引导修正)可交主会话裁决后关闭。** 两项已知偏差经评估为可接受的有限通过;无P1/P2;P3一条。
|
||||
|
||||
## 七项逐条
|
||||
|
||||
**1. 修正实现严格遵守合同:确认(代码抽查)。** `GuideData.cs:179–198`:条件链完整——`UNITY_EDITOR`包裹+KV Enabled/Ready+恰EventPotion01+saved非null/isFinish=false/guideSubIndex>0且<定义数组长度+**节点panelName=="EventPotionPanel"实际断言(我的P3-1已落实)**;`GetEvent`用**具名常量potionEventType=4/potionEventSubType=5(我的P3-2已落实)**且严格==-1;**异常记录警告返回false(原路径恢复)**——五重条件+异常保守全部到位。不放宽钓鱼门、不改存档。
|
||||
|
||||
**2. 红绿与回归:支撑有限范围。** 红测result3(101真实残留重现阻塞);新10组+原45组全绿(419断言);AddIndex/GuideNext专项验证不误完成旧引导;双编译0错误;消费/M10/31模块回归通过。测试时序(Init为async void的完成信号/超时/每例恢复)按方案执行。
|
||||
|
||||
**3. 101一次付费流程:成立。** S1前置冻结;普通鱼/装备/地图/倍率记录;扣费sequence6+奖励sequence12/11;**confirmed先于presented**;用户收下返回主页;仅主档/鱼档两键业务差异、无重试——与4C2合同一致。
|
||||
|
||||
**4. 数据保持与恢复:成立(对账独立核验)。** 本审查核对`guide-final-reconciliation.json`四段对账:
|
||||
- S1前→退出(091527→092018):3键差异=MonthlySignEvent/NewPlayerDataDic/ShopPackBuyCount(**签到+30与跨日/消费**——签到键单列归因✓);
|
||||
- 退出→恢复前(092018→092245):2键=Map_5_102/NewPlayerDataDic(**收鱼奖励**:fish10231+金币1845/体力-5);
|
||||
- **恢复前→恢复退出(092245→092418):differentKeys=[] 全等✓**;
|
||||
- **恢复退出→最终(092418→092948):全等✓**;
|
||||
- GuideSaveDataNew全程未出现在差异列表——**药水引导整值保持、未被误完成**(修正目标达成);
|
||||
- 102四段全部全等(附带快照未受影响)。
|
||||
- 任务键本次未变——交付未夸大为任务推进验收✓。
|
||||
|
||||
**5. 运行边界:守住。** 两run正常closed/drain(待存0);无活动permit;15个claim保留;无强杀/重导/补发/102游戏写入/打包;备份工具与游戏计数分开。
|
||||
|
||||
**6. 两项偏差裁决:可接受(有限通过依据)。**
|
||||
- **签到+30**:发生在S1前,MonthlySignEvent/ShopPackBuyCount差异已单列归因、金币+30计入登录段不混入收鱼奖励(1845为净收鱼);操作人未单独确认——但4C2第四次同类情况(用户手动签到)已有先例,且本次对账把三键明确分离,**证据充分支持有限通过**;
|
||||
- **提前收下缺奖励页截图**:确认/呈现事件各1次+用户确认收下+主页截图+服务器全量对账构成替代证据链(面板三属性以既有红绿为证)——与4C2第四次裁定先例一致,**不要求补付费尝试**;
|
||||
- 动态采样过早报错后实际核验通过——工具问题不混作游戏异常,处理正确。
|
||||
|
||||
**7. 范围:不越界。** 本包只证明101这条真实链+两文件修正;全体用户迁移/G4/26模块外键/PF身份依赖/StorageError/L7均保留开放;奖励公式未独立重算(输入参数未全留)如实声明。
|
||||
|
||||
## P3清单
|
||||
|
||||
- **P3-1**:建议后续真实run把"奖励页截图"列入用户协作清单的必选项提示(本次用户提前收下——流程提醒而非合同缺口)。
|
||||
|
||||
## 结论
|
||||
|
||||
**通过(限定)本业务包交付。** 主会话核hash(已代验120/120+对账独立核验)逐项裁决后可关闭。**里程碑:迁移后的历史档(101)已在真实游戏完整走通——登录→加载55键→一次收鱼→保存→重启恢复,药水引导缺陷修复且进度零丢失。** 至此101(迁移档)与102(原生进度)两条真实链均验证完毕。
|
||||
@@ -0,0 +1,17 @@
|
||||
# 101真实闭环与药水引导修正:独立实施/执行复核提示词
|
||||
|
||||
请对C:\projects\ft做一次合并复核,不再把内部检查点拆成多轮。只读审查,不运行Unity/CLI真实登录/正式接口,不修改业务代码、共享入口/TODO/日志/许可/claimed。仅落盘:
|
||||
`CodexOutput/upserver/Gameplay101Validation/101真实闭环与药水引导修正-独立实施复核.md`。
|
||||
|
||||
先读同目录《101真实闭环与药水引导修正-实施交付.md》及《不可用药水引导修正裁决与实施记录.md》,核`guide-delivery-hashes.json`全部SHA256和字节长度。该清单包含两文件修改前后、已审方案和裁决、红绿/回归/编译、两次真实run与许可/claim、各轮完整快照、采样和对账;共享状态不冻结。原`stale-guide-review-hashes.json`是修正前基线,最终仅两批准源码应改变,不把此预期差异报成受审漂移。
|
||||
|
||||
请逐项裁决:
|
||||
1. 实现是否严格遵守Editor非SERVICE_HOST/KV Enabled+Ready/EventPotion01有效未完成节点/EventPotionPanel/GetEvent严格=-1的合同,保存对象/isUpdate/其他指针/异常原路径/P3具名常量是否保持;没有放宽钓鱼门或改存档绕过。
|
||||
2. 实际Init红测有效(result3),新10组与原45组全部绿,AddIndex/GuideNext不会误完成旧引导;测试临时上下文、runner、资源定义和容器清理是否可靠;双编译和消费/M10/31模块回归是否支撑有限范围。
|
||||
3. 101一次付费流程:S1前置、普通鱼/装备/地图/倍率,扣费sequence6及奖励sequence12/11,confirmed先presented,用户收下返回主页;仅主档/鱼档两键差异且无重试。
|
||||
4. 药水存档整值保持,当前指针为空;金币/体力/鱼值跨进程恢复,S2=S3全部55键,缓存与最终一致。任务键本次未变,不能夸大为任务推进验收。
|
||||
5. 两run正常closed/drain,无活动permit,15个claim保留;没有强杀、重导、补发、102游戏写入或打包。备份工具与游戏accepted计数不得混淆。
|
||||
6. 必须明确裁决两项偏差:登录后签到+30已在S1前分离,操作人未单独确认;用户提前收下使奖励页截图缺失。已有审计/用户确认/主页截图/服务器全量对账能否支持本包有限通过?不要补造证据或默认新增付费尝试。另有动态采样过早报错,后续实际核验通过,不混作游戏异常。
|
||||
7. 只判本包及两文件修正,不扩展为全量迁移/G4关闭;未独立重算全部奖励公式、PF身份依赖和原StorageError/L7均保留。
|
||||
|
||||
输出通过/有条件通过/不通过;每项P级、依据和最小整改或非阻塞解释,明确受审hash核对数量。若通过且无待修项,说明可交主会话逐项裁决后关闭;复核侧不要替主会话更新共享状态,也不要新增无依据的复审轮次。
|
||||
@@ -0,0 +1,607 @@
|
||||
{
|
||||
"createdUtc": "2026-09-28T09:33:03.6719549Z",
|
||||
"purpose": "101真实闭环与药水引导最小修正独立实施复核;项目根相对路径;排除共享日志/入口/TODO及此清单自身",
|
||||
"count": 120,
|
||||
"items": [
|
||||
{
|
||||
"path": "cfgData/tbfishingevent.json",
|
||||
"sha256": "C8A4A9794E9390C94B9C8F1927B3E718B3EB9F784F0889508E1E576DD4B77A2D",
|
||||
"bytes": 1000464
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset",
|
||||
"sha256": "5926124E5633166CC1B91569B8A71AB2C388AA3446A736B3E7E42B3EBD9F3D3A",
|
||||
"bytes": 147854
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs",
|
||||
"sha256": "3EE995F29639DA4A0E81D04E249DE5F8F1F958F3513A690C7B96EF7098B02DEE",
|
||||
"bytes": 123663
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs",
|
||||
"sha256": "93A354CBB683D3B6CB0B0A4A3AA2DAD2445A8281156F9E0180A93FAF93C7EF4B",
|
||||
"bytes": 31273
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs",
|
||||
"sha256": "F449C9A7F71BF4E0FBD69A5D825E6E99495158C3C42E84B2B5526DD1D31C1510",
|
||||
"bytes": 52782
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs",
|
||||
"sha256": "937EF7EC0BC258303DE2A8C740F8B245C716C2EF9F4773550BBED3DE05190CA3",
|
||||
"bytes": 130654
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingReward.cs",
|
||||
"sha256": "40EE14EBFF6F3D61B6270EA01E73C48DCA0B279B924D26DE6911C0261D7293F9",
|
||||
"bytes": 20093
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs",
|
||||
"sha256": "34C32F02597DB7A1877BB1B87B73EC1F6E368360EBBAA080D6B0B2577799E825",
|
||||
"bytes": 53687
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs",
|
||||
"sha256": "930D1FF02108915F2223BC340010EF1697942EC50CDE9457A578BF1AEEEF2B4A",
|
||||
"bytes": 40556
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Stages/FishingStage.cs",
|
||||
"sha256": "A79E40F3CD633DD3814FEFCBF5654E0B5B68B8F5D41DE50857039C53EC62EF2F",
|
||||
"bytes": 22969
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs",
|
||||
"sha256": "3C39458B01439DB4B8B3B40649A01A816A77688127B48462B02866828D28B0D9",
|
||||
"bytes": 59049
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/Home/HomeBtnPotion.cs",
|
||||
"sha256": "A3625D3A0DDAE96920CC618C1560AE9DA72E62DCBAB8E4ADF2E701EC5AF92D76",
|
||||
"bytes": 4311
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/Potion/EventPotionPanel.cs",
|
||||
"sha256": "23B4DBB989B1A3A29C62C752A94A43A8AC285B4959A0DF7EF57FE903E30A10CF",
|
||||
"bytes": 75454
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/101真实玩法与迁移档恢复业务包-待评审-2026-09-28.md",
|
||||
"sha256": "88F1FF7DBFB4CF1BF4BB9C882229D9EDE150E09EEE1ACFA31E32DCC0844F7B9B",
|
||||
"bytes": 10124
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/101真实闭环与药水引导修正-独立实施复核提示词.md",
|
||||
"sha256": "338FC1B033A6F1796CFAFFE357DFF46537907070AA2A8CB56281AD4909E7F5BA",
|
||||
"bytes": 2866
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/101真实闭环与药水引导修正-实施交付.md",
|
||||
"sha256": "93F4DDFD6E3DD77AB5B53884963BFD6A0FA62EBE6F7104E6503034DA5E6B1444",
|
||||
"bytes": 8703
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/不可用药水引导恢复独立方案审查.md",
|
||||
"sha256": "B4251A8644EBBEF39509DCA9137FD1F67563D2FFD0555FD96534486D704CB01C",
|
||||
"bytes": 4093
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/不可用药水引导恢复最小修正方案-待评审.md",
|
||||
"sha256": "B04789B943A4426C500F3A78BE9758A762527BDBA51B402428AA72E67C52D9BB",
|
||||
"bytes": 10282
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/不可用药水引导修正裁决与实施记录.md",
|
||||
"sha256": "7AEC0630C57AE327E747169E8EC3CF510163622F58873625FF21752E33416B24",
|
||||
"bytes": 9398
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/方案复核裁决与执行记录.md",
|
||||
"sha256": "A6C62136636B9F532AA8471FFF6CEDFD7F4FE648A07CAC7B75D96C2F338F60D0",
|
||||
"bytes": 5954
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/完整业务包独立方案审查.md",
|
||||
"sha256": "2DC71207D7E8033899D10743650B635C77C0D39AA89789458FBDAE9A8C354D0B",
|
||||
"bytes": 4813
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/before-guide-fix/DataCenter.GuideData.cs",
|
||||
"sha256": "64B4155167A1AA07A5FE0287DE7E1091AF83EF017026337EF86D2C93326CD0F4",
|
||||
"bytes": 29637
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/before-guide-fix/UserService.KVFishingRewardValidation.cs",
|
||||
"sha256": "4CC10F91095FE2F058997AA798936C556ABCC04797582CF8990E53A05E79EF35",
|
||||
"bytes": 42357
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-after-tests-state.json",
|
||||
"sha256": "4EAE7A6AB31A711FE5725BA16E54E8CCABA5660384AEE3BB744272448500155D",
|
||||
"bytes": 934
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-await-context.json",
|
||||
"sha256": "F804BA65DCD01EC8BDA8F3C3A9F1C0BF4C02F88DA4BAB93C841E9EA29EA6C686",
|
||||
"bytes": 681
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-await-context2.json",
|
||||
"sha256": "F5E755959C6835C82828B3FBF4497C87022BB6CBADABA2C3E53C273160AEC6B1",
|
||||
"bytes": 4261
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-await-context3.json",
|
||||
"sha256": "2F8C855D5F63214DBD256C08227D6235A8B02546B4D68EAF9850C4CF895337D2",
|
||||
"bytes": 2114
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-final-idle-state.json",
|
||||
"sha256": "807917E948C864799996258D64145440FD89477ED1E2D226545B8DB49AA94F9C",
|
||||
"bytes": 1115
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-final-reconciliation.json",
|
||||
"sha256": "62066756301270B893FB8CA221F44DEE19F81E821C74607C4D4DB90AD705E091",
|
||||
"bytes": 5418
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-green-compile.json",
|
||||
"sha256": "6B628BCFE0E9406A0ECFA3B998E53EB990F7600AC84F06C03806B1F804A71F25",
|
||||
"bytes": 90502
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-green-result.json",
|
||||
"sha256": "4CD552547416D958ADC9264794598D6B08805F76BECE00D79AD3719EA88EC470",
|
||||
"bytes": 2794
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-implementation-hashes.json",
|
||||
"sha256": "4C4BCB8CD9ED026C38F1F705C51F07B8640F9B458B21A81837C4FF2561F234BE",
|
||||
"bytes": 4539
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-baseline-comparison.json",
|
||||
"sha256": "D0A02AD9C30A67246B83FCD8CD46419C9295C23DE5DEF8C347F9411F71AC3AAC",
|
||||
"bytes": 205
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-closed-state.json",
|
||||
"sha256": "9956A92DE4244BBF27A0F37141C1E84701A0C1D94614581E26CCC9DEE31B6817",
|
||||
"bytes": 1075
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-config.json",
|
||||
"sha256": "1440734AEE4DD6D9534D65C21CDC96FC23C98166E7062BFA265060860EAF8F61",
|
||||
"bytes": 552
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-editor-close.json",
|
||||
"sha256": "F4868B627A4989D9CCE816518B3EE80AE8759C37C12D675C45F508409FDD300A",
|
||||
"bytes": 98
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-final-backup.log",
|
||||
"sha256": "55EB88C14B300648614DB35B0CE389BB33E0AFD134B59F302ABE5552951F5344",
|
||||
"bytes": 2312
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-idle-state.json",
|
||||
"sha256": "4EAE7A6AB31A711FE5725BA16E54E8CCABA5660384AEE3BB744272448500155D",
|
||||
"bytes": 934
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-inspect.cs.txt",
|
||||
"sha256": "325FF278AFF00627F9979EB989BDE32807113F0C97B3E90994CD9696A82B9BAF",
|
||||
"bytes": 978
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-login-check.json",
|
||||
"sha256": "64885FBBDFBA950DC67C4A0719B18D16A5C68B66A54A63AF60B4AFEEC4A03CE9",
|
||||
"bytes": 1320
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-login-errors.json",
|
||||
"sha256": "3926EC63ED0550035DD79EEA4EF8352C93E0DC1469599E9B5467096A259FE5E1",
|
||||
"bytes": 156
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-login-screen.json",
|
||||
"sha256": "6AC0080D0B0710E0F7FE6E50C58A571228AF1D4C46B8815DD5C7EEB46A99D48E",
|
||||
"bytes": 386
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-login-verified.json",
|
||||
"sha256": "3B403DC136266BDE44E3E74F2EB080912E06AF7AD2630F97EFEC07EBD2A9CBD1",
|
||||
"bytes": 1343
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-normal-quit.json",
|
||||
"sha256": "A74D6EB4C40AA46509C7BA0C11CE4E6DDF03B4E56F6E6CA5BBEA2A2E923D8491",
|
||||
"bytes": 331
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-permit-prepared.json",
|
||||
"sha256": "F7F8959F9F0B493006FACC89BDB07D8B2CAFE19FAECEB849F06624071957BD14",
|
||||
"bytes": 1134
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-play.json",
|
||||
"sha256": "CC6C75A7F694FAAE136DBADFCFFBCEE5244511FBD0E03BEF1444F700A2EE31E3",
|
||||
"bytes": 85
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-live-preparation-backup.log",
|
||||
"sha256": "1E5E635D0DE8048960D7AF6493FD5EC64EB7F9CC36470BE985F97B2C40777517",
|
||||
"bytes": 2312
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-new-editor-launch.json",
|
||||
"sha256": "C82AA20018160CBCBD3B05372E50DB7D924773657BCBE74B1DCA23DF67CFD8F7",
|
||||
"bytes": 167
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-normal-editor-close.json",
|
||||
"sha256": "6EA9A5AAFB2C4E9B09D72D56095853D1201CA8188C178E4F0D8F0A8BD542B1CF",
|
||||
"bytes": 93
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-precast-backup.log",
|
||||
"sha256": "02E1D55599060A58B3F50BF6E533F66FD37A46687159861FD895C53E380AEC9A",
|
||||
"bytes": 2312
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-precast-reconciliation.json",
|
||||
"sha256": "C955A2AFD81F3B12EAED24E37381F0368A4CCC5E40FB8D7B0CE71702013C371B",
|
||||
"bytes": 522
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-precast-screen.json",
|
||||
"sha256": "8A91BA0732342584E5D34DC9EFE590A1297A28B37E9A4178299B2D9B55DB8597",
|
||||
"bytes": 387
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovered-values-first.json",
|
||||
"sha256": "30CA7412906037066107DF0FBEEDA6836C096C80706D3F914C1FC3020A0D6219",
|
||||
"bytes": 2822
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovered-values.cs.txt",
|
||||
"sha256": "9A3F84B63D2FD59C54DCCD1D83203908D075BCFA34F83AAB9C795D328492DA47",
|
||||
"bytes": 1960
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovered-values.json",
|
||||
"sha256": "2ACC8B7C0AD5BD3EA4D4BC15FFA2878C0D65B04B9AEF184A745EE669167EE6DB",
|
||||
"bytes": 1895
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-closed-state.json",
|
||||
"sha256": "2BFE0504AC58F6553843DF725C445692DE2A01D855DFB15A3C0AF5ED7835FE3F",
|
||||
"bytes": 1114
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-config.json",
|
||||
"sha256": "FDEF5F4A52B541DB9B1E60414F547A12301702F25B873EC0B647CC56DBD5E340",
|
||||
"bytes": 520
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-editor-launch.json",
|
||||
"sha256": "C82AA20018160CBCBD3B05372E50DB7D924773657BCBE74B1DCA23DF67CFD8F7",
|
||||
"bytes": 167
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-errors.json",
|
||||
"sha256": "922DB4F63B9A2058FB68E20A5D241E0EB326CD3DCD7E739C5A2C5DD9ED19767E",
|
||||
"bytes": 156
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-final-backup.log",
|
||||
"sha256": "71D974BAA9E3775D888B3F97F1D9787551F3A7B8A2351D0165ECEAE69FA47046",
|
||||
"bytes": 2312
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-idle-state.json",
|
||||
"sha256": "18485A658243E5FDEF7EF16EB4141997BC3501687ABD0B0D5218DFA2C89B3AB2",
|
||||
"bytes": 971
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-login-state.json",
|
||||
"sha256": "DB50CD4C06B1B4E5759850CEB20F9C62F33B4E534F431E1D8950D3E8F51CA943",
|
||||
"bytes": 1382
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-normal-quit.json",
|
||||
"sha256": "A74D6EB4C40AA46509C7BA0C11CE4E6DDF03B4E56F6E6CA5BBEA2A2E923D8491",
|
||||
"bytes": 331
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-permit.json",
|
||||
"sha256": "8A08480602EDAFBDE7CC43B978AA50E88DA5AB00A68BA23A83EB5F3E96D7C9A8",
|
||||
"bytes": 1171
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-play.json",
|
||||
"sha256": "CC6C75A7F694FAAE136DBADFCFFBCEE5244511FBD0E03BEF1444F700A2EE31E3",
|
||||
"bytes": 85
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-recovery-screen.json",
|
||||
"sha256": "FA2E5CEC44FDED17CD7935964C440130DFD5EC3D8FACFAB4F4AC0D9A10BDD7E1",
|
||||
"bytes": 387
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-compile.json",
|
||||
"sha256": "FEEE9EADCDE52717657A9C0331E9486504BD92D5C8A253656190DE7DF62E2D47",
|
||||
"bytes": 90502
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-compile2.json",
|
||||
"sha256": "FF76EBDECB173D4A55F122ACBD476BD8E0DBF00B862BA875731EB6A90933CD9C",
|
||||
"bytes": 89338
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-compile3.json",
|
||||
"sha256": "3700C86DC4A774F9254A84D26B9247900ADAC5198EF4B5C6BE04315E39A847B2",
|
||||
"bytes": 89338
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-editmode-preload.json",
|
||||
"sha256": "BE733C3CFD10957C7C0B6993FA7E2285C92DA97BB3ECC7FADB424AA35B2F811B",
|
||||
"bytes": 316
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-result.json",
|
||||
"sha256": "A1301E72386E5F3C1EBFF59D8D4609E96C9B581F60E5D068C464AFABADC23EB3",
|
||||
"bytes": 5135
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-result2.json",
|
||||
"sha256": "69C603576800090A74D10F58EC00A0D860B758EBCFA5C69E15AD521D46332B76",
|
||||
"bytes": 5295
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-red-result3.json",
|
||||
"sha256": "D4A55028A5ED18CD14FDDF13A082343617C3FF96D6FF7EDAD92A8826C4D79B1E",
|
||||
"bytes": 5275
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-regressions.cs.txt",
|
||||
"sha256": "10AA7794948D777AA28D0AC8F1341B29731618F6B3D063970B24CF10163B66AB",
|
||||
"bytes": 257
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-regressions.json",
|
||||
"sha256": "F88A6B2C00E4B5333AA5A31267FEFB195A6F5242B31273010C655C62C931865D",
|
||||
"bytes": 1757
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-reward-backup.log",
|
||||
"sha256": "E96D8A5437125BE9E036BAC54378AB3E40BE053B27F28ADCF549F7F8D849D9AF",
|
||||
"bytes": 2312
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-reward-errors.json",
|
||||
"sha256": "922DB4F63B9A2058FB68E20A5D241E0EB326CD3DCD7E739C5A2C5DD9ED19767E",
|
||||
"bytes": 156
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-reward-home-screen.json",
|
||||
"sha256": "D0FD9EFADFFAB77DD713F5A1D752ACEBCA80519FC257D278BE31F4A9BCF798E1",
|
||||
"bytes": 387
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-reward-live-state.json",
|
||||
"sha256": "148BF5B0AE61D5560C43797AEA7A9EADAF918F3BC005FAF3BECE6620C170D58D",
|
||||
"bytes": 1343
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-reward-reconciliation.json",
|
||||
"sha256": "ACD81F8409935E08253EC6ED80015E72731239AF3563D40A277417DE04046816",
|
||||
"bytes": 737
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-service-host.log",
|
||||
"sha256": "525A28E3FDC21E66E887A4AE9D4894334C20A72624B6924285B049E7D628B57D",
|
||||
"bytes": 53202
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/guide-service-host.rsp",
|
||||
"sha256": "AC41FC00D71C7A75212678B622EB2A84DCAA17426DD7EE78786219133B68B6F1",
|
||||
"bytes": 150294
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/HotUpdate.guide.service-host.dll",
|
||||
"sha256": "484F9DF69D803F95AF2F974ECB7B03B095FAC3DEDFC5155208E27C7E85828EF8",
|
||||
"bytes": 7574016
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/HotUpdate.guide.service-host.pdb",
|
||||
"sha256": "BBA776960800852B061F4E1A3FF918FBFA96C1D33231374B80DC7DE28214ED90",
|
||||
"bytes": 3029404
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/manual-handoff-reconciliation.json",
|
||||
"sha256": "5E78B809197FA264B1AB62598192BB12406BCCFA861C503E195BEF1EA4FB71B2",
|
||||
"bytes": 141
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/manual-login-verified.json",
|
||||
"sha256": "2BBED98EF18BAB5AA641C52B36E23F5E6FFBE1A80F6FBD30A0BB4650B50E464D",
|
||||
"bytes": 1412
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/no-visible-guide-check.json",
|
||||
"sha256": "1A8057B3172BFED8951C9AD2622F1F0D075DAAEFDC807C3B9C55145ACD7CA690",
|
||||
"bytes": 1399
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/permit-retired-guide-live-55088.json",
|
||||
"sha256": "7B2B1EBA92BDABE337485144BF1C77D9D023E1F9D2D8A2BD366D95CF2DBE4591",
|
||||
"bytes": 1340
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/permit-retired-guide-recovery-130200.json",
|
||||
"sha256": "3D8B421502B40EB957B57F7F5CFB300D0C27847315A616AD2F083FA777C94957",
|
||||
"bytes": 1306
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/prepare-guide-fixed-v3.cs.txt",
|
||||
"sha256": "27532DAB9CFC2E01EB2F97D6DC2007047B64096E218B3EA4C87074BBF5452D24",
|
||||
"bytes": 1956
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/prepare-guide-recovery-v1.cs.txt",
|
||||
"sha256": "F0E8F6C62A79FCAB0628BFDA8BAE8678E63CA50F77D59233C7FE17ACCC4018AB",
|
||||
"bytes": 1943
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/reconcile-guide-final.ps1",
|
||||
"sha256": "F64D399A803DE5AD5871ADB409FF83599D2D4075CF31DB3068ECE485B3EE9C21",
|
||||
"bytes": 2613
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/Rendering_20260928_171952_761.png",
|
||||
"sha256": "E75BF5CCEF5B6B80F194CB67C43047F36F284C8639998154117D3271BED5B768",
|
||||
"bytes": 88686
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/Rendering_20260928_172059_283.png",
|
||||
"sha256": "D94E9ADF17DFAC7588914340CB2108CE718FDA478D386487D321A3A36CB31709",
|
||||
"bytes": 122345
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/Rendering_20260928_172254_440.png",
|
||||
"sha256": "BE709F3EFE51F82DD2D6A9FF899BCE6325343D622FB87CF5609683F95A50105D",
|
||||
"bytes": 613767
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/Rendering_20260928_172929_557.png",
|
||||
"sha256": "C56A1D736945F8ADC5F5FEA20A1B1F742EBD855FFE0BDA296745992FA8C51BF6",
|
||||
"bytes": 612237
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/stale-guide-review-hashes.json",
|
||||
"sha256": "CEA99FFD52DBA4569F6CF85A6D40C2BA7BFE35A4EB95A042B21032860C0CAC89",
|
||||
"bytes": 4080
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVFishingRewardTests/guide-baseline-projection.jsonl",
|
||||
"sha256": "A3D056313FE0F40D395FE92F97BEDE31BA47D8D79A3C4C28781395A43118E89C",
|
||||
"bytes": 26976
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T082052Z/101.json",
|
||||
"sha256": "33E8D998725FA1468EA0167AE3C3BDC8F7F1C75749ABCA9D2868251C19C568A5",
|
||||
"bytes": 22107
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T085931Z/101.json",
|
||||
"sha256": "AFF8E5209BFD66A35CA0A8130F6D07B9D4E90CE09FD2DC74C55EAB91806C3966",
|
||||
"bytes": 22107
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T085931Z/102.json",
|
||||
"sha256": "434EF0DB31839683D9B0497FCFA328DAA8C1D7C85C23448BB0C74C7C31C49ECC",
|
||||
"bytes": 14405
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T091527Z/101.json",
|
||||
"sha256": "2973F0D9CD8E1150F46E9F1297D74174236A4B1127BDE0203BCC09B62498390D",
|
||||
"bytes": 22107
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T091527Z/102.json",
|
||||
"sha256": "3944EDB4FA754C39BAA2692B61A002DE69F6EE7B087F478AE5378135703A459B",
|
||||
"bytes": 14408
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092018Z/101.json",
|
||||
"sha256": "8E3FEDF74652D4183FA1CE4A6409BC8472704C79A8B26E1DBB84EDBBFA3E9221",
|
||||
"bytes": 22107
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092018Z/102.json",
|
||||
"sha256": "B70B2970086D62FE0ECA6479071EE8B46684B14934E132623EB794B3A960030F",
|
||||
"bytes": 14408
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092245Z/101.json",
|
||||
"sha256": "B7401D842AED437918F7EC7C60A161466236B1E03CFD3E8AFCA2B8BD19015C7A",
|
||||
"bytes": 22110
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092245Z/102.json",
|
||||
"sha256": "BA2B3483E338BEF9C8C68B9699B2EB10D46EDEE391C44C49A577C68F5B5430AA",
|
||||
"bytes": 14408
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092418Z/101.json",
|
||||
"sha256": "A372A85E71AB26ED274330C98018213DD95A8F75A82DF0452E112D45577AECA1",
|
||||
"bytes": 22110
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092418Z/102.json",
|
||||
"sha256": "7ADA3C011CFF86C78CBC7B6E88F86F23BD899D6C86A7A8E427C929EBD6E68435",
|
||||
"bytes": 14408
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092948Z/101.json",
|
||||
"sha256": "7FB7E7DF6342206302F1E22534E563FF70CBDF4166D086B5EBAABC65515DC060",
|
||||
"bytes": 22110
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T092948Z/102.json",
|
||||
"sha256": "BF9B065AD1FDF2D940446AA2DE53C182C12CEDAE8A92D4C6B96032746A774808",
|
||||
"bytes": 14408
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/fishing-fixed-runs/20260928T091356_36659adf4d474ffcb0c035e5283dfc0c/result.json",
|
||||
"sha256": "F47410E955F07651777964C53BCAA44EAC998E36BB374638FDAF9E3C72094A78",
|
||||
"bytes": 954
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/reward-fixed-runs/20260928T091151_13f7ff597cc5403581497cd095ce5436/result.json",
|
||||
"sha256": "2F05EB961BCEF192F0479A68C9A802EACA61A8CDBF8C04A2D3730436D37A442D",
|
||||
"bytes": 2375
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/run-control/130200_639261843009600548.claimed",
|
||||
"sha256": "FDD2D855D7D9806C9AD15E4533CD008563BD1347016510104A9031B801A05790",
|
||||
"bytes": 28
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/run-control/55088_639261837988243647.claimed",
|
||||
"sha256": "E8142C1EFBC530D5087E36BF995B45A163E4D7293A3B8033DCACCEC58BE312D5",
|
||||
"bytes": 28
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/runs/130200_639261843009600548/cache/player-kv/v1/b84eace5c350a3cc305e79cc973f5d14512c3bb93bcbcca4c2a44d6803b53f4b/101/state.json",
|
||||
"sha256": "9BE6C6038E3F6DD63BBEB7BD868DF20B72425AB4BD5353784C7C0048CE0055A2",
|
||||
"bytes": 16256
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/runs/130200_639261843009600548/events.jsonl",
|
||||
"sha256": "B02692E3AC5CC48968128D88491A92FE33DDA89469E8436035D4DEF268039794",
|
||||
"bytes": 735
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/runs/55088_639261837988243647/cache/player-kv/v1/b84eace5c350a3cc305e79cc973f5d14512c3bb93bcbcca4c2a44d6803b53f4b/101/state.json",
|
||||
"sha256": "1F41FC053561B48415DC98E2DECC5161C4A0C5A647FA966B70E8ACB4F5A11CD1",
|
||||
"bytes": 16258
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/runs/55088_639261837988243647/events.jsonl",
|
||||
"sha256": "6A538609E5D7071F12CDF13B674EACD2CD09DAE542F9C2BA04E6DA2B81E5061B",
|
||||
"bytes": 6720
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/P2AlphaImport101/D1-bin/Preflight.dll",
|
||||
"sha256": "AAA1276630E8633C131072DDF638639B92F60134A0425E17616A4A5A2A436607",
|
||||
"bytes": 355328
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"createdUtc": "2026-09-28T09:15:05.5662477Z",
|
||||
"stage": "code-regressions-passed-live-pending",
|
||||
"items": [
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/不可用药水引导恢复最小修正方案-待评审.md",
|
||||
"sha256": "B04789B943A4426C500F3A78BE9758A762527BDBA51B402428AA72E67C52D9BB",
|
||||
"bytes": 10282,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/no-visible-guide-check.json",
|
||||
"sha256": "1A8057B3172BFED8951C9AD2622F1F0D075DAAEFDC807C3B9C55145ACD7CA690",
|
||||
"bytes": 1399,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/manual-login-verified.json",
|
||||
"sha256": "2BBED98EF18BAB5AA641C52B36E23F5E6FFBE1A80F6FBD30A0BB4650B50E464D",
|
||||
"bytes": 1412,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/manual-handoff-reconciliation.json",
|
||||
"sha256": "5E78B809197FA264B1AB62598192BB12406BCCFA861C503E195BEF1EA4FB71B2",
|
||||
"bytes": 141,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T082052Z/101.json",
|
||||
"sha256": "33E8D998725FA1468EA0167AE3C3BDC8F7F1C75749ABCA9D2868251C19C568A5",
|
||||
"bytes": 22107,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs",
|
||||
"sha256": "93A354CBB683D3B6CB0B0A4A3AA2DAD2445A8281156F9E0180A93FAF93C7EF4B",
|
||||
"bytes": 31273,
|
||||
"baselineSame": false
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs",
|
||||
"sha256": "34C32F02597DB7A1877BB1B87B73EC1F6E368360EBBAA080D6B0B2577799E825",
|
||||
"bytes": 53687,
|
||||
"baselineSame": false
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingReward.cs",
|
||||
"sha256": "40EE14EBFF6F3D61B6270EA01E73C48DCA0B279B924D26DE6911C0261D7293F9",
|
||||
"bytes": 20093,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs",
|
||||
"sha256": "930D1FF02108915F2223BC340010EF1697942EC50CDE9457A578BF1AEEEF2B4A",
|
||||
"bytes": 40556,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs",
|
||||
"sha256": "3EE995F29639DA4A0E81D04E249DE5F8F1F958F3513A690C7B96EF7098B02DEE",
|
||||
"bytes": 123663,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Stages/FishingStage.cs",
|
||||
"sha256": "A79E40F3CD633DD3814FEFCBF5654E0B5B68B8F5D41DE50857039C53EC62EF2F",
|
||||
"bytes": 22969,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs",
|
||||
"sha256": "937EF7EC0BC258303DE2A8C740F8B245C716C2EF9F4773550BBED3DE05190CA3",
|
||||
"bytes": 130654,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs",
|
||||
"sha256": "3C39458B01439DB4B8B3B40649A01A816A77688127B48462B02866828D28B0D9",
|
||||
"bytes": 59049,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/Home/HomeBtnPotion.cs",
|
||||
"sha256": "A3625D3A0DDAE96920CC618C1560AE9DA72E62DCBAB8E4ADF2E701EC5AF92D76",
|
||||
"bytes": 4311,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/Potion/EventPotionPanel.cs",
|
||||
"sha256": "23B4DBB989B1A3A29C62C752A94A43A8AC285B4959A0DF7EF57FE903E30A10CF",
|
||||
"bytes": 75454,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs",
|
||||
"sha256": "F449C9A7F71BF4E0FBD69A5D825E6E99495158C3C42E84B2B5526DD1D31C1510",
|
||||
"bytes": 52782,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset",
|
||||
"sha256": "5926124E5633166CC1B91569B8A71AB2C388AA3446A736B3E7E42B3EBD9F3D3A",
|
||||
"bytes": 147854,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVFishingRewardTests/guide-baseline-projection.jsonl",
|
||||
"sha256": "A3D056313FE0F40D395FE92F97BEDE31BA47D8D79A3C4C28781395A43118E89C",
|
||||
"bytes": 26976,
|
||||
"baselineSame": true
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbfishingevent.json",
|
||||
"sha256": "C8A4A9794E9390C94B9C8F1927B3E718B3EB9F784F0889508E1E576DD4B77A2D",
|
||||
"bytes": 1000464,
|
||||
"baselineSame": true
|
||||
}
|
||||
]
|
||||
}
|
||||
162
CodexOutput/upserver/Gameplay101Validation/review-hashes.json
Normal file
162
CodexOutput/upserver/Gameplay101Validation/review-hashes.json
Normal file
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"purpose": "101完整业务包方案审查,项目根相对路径;仅焦点依赖,共享状态和日志不冻结;不得运行正式接口或Unity",
|
||||
"createdUtc": "2026-09-28T07:49:57.0583879Z",
|
||||
"count": 31,
|
||||
"items": [
|
||||
{
|
||||
"path": "cfgData/tbeventpackmanager.json",
|
||||
"sha256": "FC9CEA913387D84824251358260BBDBAC98DEA37FBCEAD74ACFA0F833710D4BE",
|
||||
"bytes": 663446
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbfishcard.json",
|
||||
"sha256": "0E534C8AE67B77FA3FA295D73EE3CCED4C6B788F6FEED6DAE19ABF93D11839A0",
|
||||
"bytes": 456977
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbfishdata.json",
|
||||
"sha256": "846EEF5FF4139BBC5B9891686CCDD7AA8E836F1D1CBB6EAD546B14B60093C2E0",
|
||||
"bytes": 1756698
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbfishingevent.json",
|
||||
"sha256": "C8A4A9794E9390C94B9C8F1927B3E718B3EB9F784F0889508E1E576DD4B77A2D",
|
||||
"bytes": 1000464
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbglobalconfig.json",
|
||||
"sha256": "9AEE49D6041E2888798AEDB89ACD6503E6FB866EAAA1D148F2F5D0E13D2F5DA0",
|
||||
"bytes": 6818
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbmapdata.json",
|
||||
"sha256": "1B81E9F1727BC1F39DF68AA98BECEACB94601A818BC82667C29E92304EEE8646",
|
||||
"bytes": 112619
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbroddata.json",
|
||||
"sha256": "A1634FD01B03C23218D652B9944CAA7B08E38587CA89C41A5B7E2974A4DD74E6",
|
||||
"bytes": 36327
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset",
|
||||
"sha256": "5926124E5633166CC1B91569B8A71AB2C388AA3446A736B3E7E42B3EBD9F3D3A",
|
||||
"bytes": 147854
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Editor/KVGameplayLoopSetup.cs",
|
||||
"sha256": "63C369187806A2645C8C6A1411397A6CB7CDDBF5A2DC0E41D905872168DC8675",
|
||||
"bytes": 5105
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs",
|
||||
"sha256": "6581E2EF316B764F0E7B984B4A8040B93087A467FA374AA0E5E979D356580A04",
|
||||
"bytes": 99384
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/PlayerData/PlayerKVGameLoadTransaction.cs",
|
||||
"sha256": "C7EB34DB6FB42A44E9D930592D2928CC96CEC4D1D532A66A3207E82F263C02DB",
|
||||
"bytes": 4635
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/PlayerData/PlayerKVSaveSchema.cs",
|
||||
"sha256": "FBDB253D3415E35D7D30F867DA057A84E91EAA7DE2FE74094707C517CB8B51A1",
|
||||
"bytes": 76183
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/PlayerData/PlayerKVShutdownRegistry.cs",
|
||||
"sha256": "4CA9538F432F4FAA7029E2A5A22B0F4D45C3B39E1E676B60058B87928B559483",
|
||||
"bytes": 3989
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/PlayerData/PlayerKVSyncCoordinator.cs",
|
||||
"sha256": "026210CA2722FEC2FB8DCCE9D24D74A62B250E6A50EC6EAD811C59920875443C",
|
||||
"bytes": 16384
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingReward.cs",
|
||||
"sha256": "40EE14EBFF6F3D61B6270EA01E73C48DCA0B279B924D26DE6911C0261D7293F9",
|
||||
"bytes": 20093
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs",
|
||||
"sha256": "930D1FF02108915F2223BC340010EF1697942EC50CDE9457A578BF1AEEEF2B4A",
|
||||
"bytes": 40556
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVLoad.cs",
|
||||
"sha256": "45300AA455CF43C07286A442E7A2C8534B3654C4AEB8316CA5EB3A20593AEA0D",
|
||||
"bytes": 6963
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Stages/QuitStage.cs",
|
||||
"sha256": "89AD2688AB4CACAECA1B12EEC1DD44CFEDEDA6A8AB11E671848E84BAE6AC09E0",
|
||||
"bytes": 432
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs",
|
||||
"sha256": "3C39458B01439DB4B8B3B40649A01A816A77688127B48462B02866828D28B0D9",
|
||||
"bytes": 59049
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/101真实玩法与迁移档恢复业务包-待评审-2026-09-28.md",
|
||||
"sha256": "88F1FF7DBFB4CF1BF4BB9C882229D9EDE150E09EEE1ACFA31E32DCC0844F7B9B",
|
||||
"bytes": 10124
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/阶段4C2第四次真实闭环与新进程恢复记录-2026-09-28.md",
|
||||
"sha256": "ECE690DCCACF7D79993E4ED180319B6DF3551453F2D22B6289ECC2302F96CB86",
|
||||
"bytes": 8347
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVFishingRewardTests/guide-baseline-projection.jsonl",
|
||||
"sha256": "A3D056313FE0F40D395FE92F97BEDE31BA47D8D79A3C4C28781395A43118E89C",
|
||||
"bytes": 26976
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVFishingRewardTests/unity-real-precast.cs.txt",
|
||||
"sha256": "46DD79612453B8A1CE7A9E7E796282B7BDBC0BC38545C8D24BAC374927A6FFE2",
|
||||
"bytes": 1236
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/Preflight/Program.cs",
|
||||
"sha256": "57A44158B84B864B5E853EE74BFA4CBA07801E3231AA8F78398543230F984910",
|
||||
"bytes": 2349
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/unity-gameplay-state.cs.txt",
|
||||
"sha256": "50DD8E9D61C71DBF244515328F09ECBCC2FB93492510031B81EAB83EF8B2240E",
|
||||
"bytes": 255
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/unity-state.cs.txt",
|
||||
"sha256": "040D25CC55A85210B0DD89EB1B7AC9E16CF78DF030E55D859F8F2FC8511004F6",
|
||||
"bytes": 36
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/P2AlphaImport101/D1-bin/Preflight.dll",
|
||||
"sha256": "AAA1276630E8633C131072DDF638639B92F60134A0425E17616A4A5A2A436607",
|
||||
"bytes": 355328
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/P2AlphaImport101/D4-独立执行复核.md",
|
||||
"sha256": "BA76ABE48A069998EEBA53AEAA27BA99859B376EB99FBA0DF347DF09A814B86D",
|
||||
"bytes": 3997
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/P2AlphaImport101/D5-执行复核裁决与关闭.md",
|
||||
"sha256": "467E9226A800F2B1E4610805F783308EB906FDCD2C362853C68F67F5378EB614",
|
||||
"bytes": 2910
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/P2AlphaImport101/runs/20260928T073630Z-345b3ee1f47a419abf876bf5b5506d89/account.json",
|
||||
"sha256": "307C31E6FDC45282FDF1E9BA9BB16A20E930CB592F7589D130CBBE4E6F1E11BE",
|
||||
"bytes": 278
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/P2AlphaImport101/runs/20260928T073630Z-345b3ee1f47a419abf876bf5b5506d89/after.json",
|
||||
"sha256": "A6CB8A3A0FA3080150FA91D7E2EEBA1D25D7BC59001BFA1641D742B713CE3A2C",
|
||||
"bytes": 16491
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"purpose": "不可用药水引导恢复最小方案审查;项目根相对路径;不含共享状态日志和仍活动的run",
|
||||
"createdUtc": "2026-09-28T08:55:44.7861282Z",
|
||||
"count": 19,
|
||||
"items": [
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/不可用药水引导恢复最小修正方案-待评审.md",
|
||||
"sha256": "B04789B943A4426C500F3A78BE9758A762527BDBA51B402428AA72E67C52D9BB",
|
||||
"bytes": 10282
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/no-visible-guide-check.json",
|
||||
"sha256": "1A8057B3172BFED8951C9AD2622F1F0D075DAAEFDC807C3B9C55145ACD7CA690",
|
||||
"bytes": 1399
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/manual-login-verified.json",
|
||||
"sha256": "2BBED98EF18BAB5AA641C52B36E23F5E6FFBE1A80F6FBD30A0BB4650B50E464D",
|
||||
"bytes": 1412
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/Gameplay101Validation/manual-handoff-reconciliation.json",
|
||||
"sha256": "5E78B809197FA264B1AB62598192BB12406BCCFA861C503E195BEF1EA4FB71B2",
|
||||
"bytes": 141
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVGameplayLoopTests/backups/20260928T082052Z/101.json",
|
||||
"sha256": "33E8D998725FA1468EA0167AE3C3BDC8F7F1C75749ABCA9D2868251C19C568A5",
|
||||
"bytes": 22107
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs",
|
||||
"sha256": "64B4155167A1AA07A5FE0287DE7E1091AF83EF017026337EF86D2C93326CD0F4",
|
||||
"bytes": 29637
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs",
|
||||
"sha256": "4CC10F91095FE2F058997AA798936C556ABCC04797582CF8990E53A05E79EF35",
|
||||
"bytes": 42357
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVFishingReward.cs",
|
||||
"sha256": "40EE14EBFF6F3D61B6270EA01E73C48DCA0B279B924D26DE6911C0261D7293F9",
|
||||
"bytes": 20093
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Services/UserService.KVGameplayLoop.cs",
|
||||
"sha256": "930D1FF02108915F2223BC340010EF1697942EC50CDE9457A578BF1AEEEF2B4A",
|
||||
"bytes": 40556
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/DataCenter.FishingEventData.cs",
|
||||
"sha256": "3EE995F29639DA4A0E81D04E249DE5F8F1F958F3513A690C7B96EF7098B02DEE",
|
||||
"bytes": 123663
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/Stages/FishingStage.cs",
|
||||
"sha256": "A79E40F3CD633DD3814FEFCBF5654E0B5B68B8F5D41DE50857039C53EC62EF2F",
|
||||
"bytes": 22969
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/GampPlay/FishingB/FishingUpdateSys.cs",
|
||||
"sha256": "937EF7EC0BC258303DE2A8C740F8B245C716C2EF9F4773550BBED3DE05190CA3",
|
||||
"bytes": 130654
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/FishingReward/FishingRewardPanel.cs",
|
||||
"sha256": "3C39458B01439DB4B8B3B40649A01A816A77688127B48462B02866828D28B0D9",
|
||||
"bytes": 59049
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/Home/HomeBtnPotion.cs",
|
||||
"sha256": "A3625D3A0DDAE96920CC618C1560AE9DA72E62DCBAB8E4ADF2E701EC5AF92D76",
|
||||
"bytes": 4311
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/UI/Potion/EventPotionPanel.cs",
|
||||
"sha256": "23B4DBB989B1A3A29C62C752A94A43A8AC285B4959A0DF7EF57FE903E30A10CF",
|
||||
"bytes": 75454
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/Scripts/DataCenter/EventPotionDataManager.cs",
|
||||
"sha256": "F449C9A7F71BF4E0FBD69A5D825E6E99495158C3C42E84B2B5526DD1D31C1510",
|
||||
"bytes": 52782
|
||||
},
|
||||
{
|
||||
"path": "Client/Assets/ABPackage/pkgPrepare/Export/GuidanceConfig.asset",
|
||||
"sha256": "5926124E5633166CC1B91569B8A71AB2C388AA3446A736B3E7E42B3EBD9F3D3A",
|
||||
"bytes": 147854
|
||||
},
|
||||
{
|
||||
"path": "CodexOutput/upserver/KVFishingRewardTests/guide-baseline-projection.jsonl",
|
||||
"sha256": "A3D056313FE0F40D395FE92F97BEDE31BA47D8D79A3C4C28781395A43118E89C",
|
||||
"bytes": 26976
|
||||
},
|
||||
{
|
||||
"path": "cfgData/tbfishingevent.json",
|
||||
"sha256": "C8A4A9794E9390C94B9C8F1927B3E718B3EB9F784F0889508E1E576DD4B77A2D",
|
||||
"bytes": 1000464
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
# 不可用药水引导修正:裁决与实施记录
|
||||
|
||||
2026-09-28,主会话。独立方案审查通过,无P1/P2。主会话于2026-09-28T08:58:34.5804905Z核对19项SHA256及长度,19/19一致。
|
||||
|
||||
## 裁决与批准
|
||||
|
||||
| 审查项 | 裁决 |
|
||||
|---|---|
|
||||
| 1 Init处延后恢复 | 接受;在现有存档取出后、原恢复循环前处理。 |
|
||||
| 2 存档/isUpdate保持 | 接受;只保留该组到新字典并continue,不改进度、不清其他指针、不额外Save。 |
|
||||
| 3 GetEvent与异常 | 接受;仅只读GetEvent(4,5)严格=-1,查询失败走原恢复并告警。 |
|
||||
| 4 其他路径边界 | 接受;仅Editor非SERVICE_HOST、KV Enabled/Ready、EventPotion01有效未完成节点。 |
|
||||
| 5 回调误改风险 | 接受已核实风险;选择源头延后方案,不删除钓鱼门。报告“唯一正确选择”限定为本次已比较的三个选项,不推成一般架构结论。 |
|
||||
| 6 红绿与回归 | 接受;实际Init与AddIndex/GuideNextEvent,覆盖无活动/有活动/异常/节点及原奖励消费回归。 |
|
||||
| 7 退出与闭环 | 接受;先确认现会话已退出drain并退役permit,再改代码;后续完整闭环连续执行。 |
|
||||
|
||||
P3-1接受:实际检查节点panelName恰为EventPotionPanel,新增节点不匹配负例。P3-2接受:活动类型4/子类型5使用具名常量或同处明确语义注释。
|
||||
|
||||
批准仅修改DataCenter.GuideData.cs与UserService.KVFishingRewardValidation.cs,允许本目录记录命令/测试/运行证据。不改配置、钓鱼费用/奖励逻辑、存档数据、claimed,不打包。实施以完整方案为准;不额外安排实施前复核。
|
||||
|
||||
## 检查点0
|
||||
|
||||
实际CLI已见68504的playing=false/ready=false/Error=null;事件记录在08:35:55.4493751Z已closed,未新增fishing事件。没有为了满足步骤再发QuitStage;接下来核cache和最终服务器快照,退役当前许可。退出是谁触发的不作推断,不把本轮只读检查写成主会话执行了退出。
|
||||
|
||||
## 检查点1:有效红测与生产修正
|
||||
085931Z最终快照与082052Z的101全部55键一致;permit已归档,全部claimed保留。红测前两次因夹具静态PF赋值次序、原异步库Edit Mode上下文缺失提前失败,不计目标红测;预加载改同步完成,夹具临时补齐/恢复原上下文与runner,未改DLL或Init加载流程。guide-red-result3.json在实际Init完成且无异步异常后,明确失败于不可用药水指针为空断言;目标红测成立。随后按合同仅增加Init分支和私有只读判断,活动4/5具名,异常告警并原恢复。待全绿验收。
|
||||
|
||||
## 检查点2:限定实现与回归通过
|
||||
奖励固定验证55组243断言全绿(原45组171+新增10组72);消费19组81断言;M09/M10/M12的12断言;B2-20真实31模块双epoch的83断言及restored=true全部通过。Editor编译0错误(272历史警告),SERVICE_HOST编译exit0/0错误。本轮测试均mock,formalRequests=0。17项非修改焦点hash仍与原清单一致;仅两项批准源码变化,生产增加30行左右、既有逻辑不重排。新hash见guide-implementation-hashes.json。测试环境前两次失败记录保留,不冒充红测;有效红测为result3,绿测为guide-green-result.json。
|
||||
新增实际Init测试临时补齐原异步库Edit Mode上下文,结束恢复上下文/runner/资源定义/容器;没有修改第三方DLL或真实配置文件。生产不改默认PF/非Editor/SERVICE_HOST行为。后续新进程101实际闭环仍待执行,未宣布整体关闭。
|
||||
|
||||
## 检查点3:真实验证准备,等待正常退出
|
||||
固定回归后CLI核对playing/enabled/ready=false、error/run=null、permitExists=false;清理成功。09:15:22Z对68504发正常CloseMainWindow且返回true;再次查进程仍在,日志止于关闭请求前,不强杀、不启动第二实例,已请用户查看退出/保存对话框。091527Z新备份10155键/10245键均与085931Z逐值一致;准备新v3脚本但尚未执行。
|
||||
本轮备份工具共两轮(085931Z、091527Z),应用层合计4登录+4Get,工具Set/Delete=0;隔离测试formalRequests=0。实际钓鱼次数仍0,尚无新运行许可/新claim。原13个claim全部保留。下一步仍在主会话,先等旧进程确实退出再launch;用户启动CLI后核环境与最新基线再进入Play。若时间跨日或有外部操作,应刷新备份而非盲用091527Z。无需新增内部实施复核。
|
||||
|
||||
检查点3续:用户确认正常关闭后,主会话检查68504不存在,再经uloop launch启动项目,新进程55088(本地17:16:38)。加载完成,待用户启动CLI Loop;尚无新许可/Play/实际收鱼。
|
||||
|
||||
## 检查点4:真实登录与动作前基线通过
|
||||
用户确认CLI已启动,19/19实施hash一致,新进程55088空闲、固定API核对正确;091527Z距当前仅3分钟,未跨日,使用该基线建立既有v3。09:19:17Z claim,09:19:26Z ready;首轮采样尚未完成登录,不误报失败。随后实际IsLogin=true、101/InternalId2/kv-loop/API正确、level62、gold36550472、Energy7305;药水GetEvent=-1、curDefine/curGroup/curSaveData均null,存档EventPotion01|4|False。没有GuideSaveDataNew写入审计。
|
||||
092018Z动作前55键完整快照,GuideSaveDataNew原值保持,所有55键与cache.baseline一致,pending=0/activeBatch=null/unknownBatch=null,无fishing事件,accepted4。相对091527Z仅MonthlySignEvent(签到index6→7、日序3→4)、NewPlayerDataDic(体力7275→7305/登录统计)、ShopPackBuyCount(日序270→271)变化;正常签到路径与截图吻合,非钓鱼奖励/非补发,操作人已请用户确认。两次截图先每日赠礼后主页x5,AI未模拟UI输入。
|
||||
用户表示已可甩杆;已交用户一次普通抛竿/拉杆/收鱼,成功停奖励页先不收下,失败停止不重试。当前仍活动Play及v3,不能直接Stop/重进。后续奖励快照、收下、正常退出、新进程恢复及最终复核未完成。此次新增一轮只读备份工具2登录+2Get/Set0/Delete0(含102附带观测);游戏写入另计。
|
||||
|
||||
检查点4续:09:21:37Z用户实际抛竿通过原门,fishing-energy-applied为7305−5=7300,consume-confirmed票据sequence6及consume-ready已记录;09:21:39Z strike完成(写0),当前战斗中。实际尝试计1,不允许第二次自动尝试。
|
||||
|
||||
## 检查点5:唯一一次真实收鱼与奖励落库
|
||||
09:21:54Z fish10231 reward-confirmed(主档sequence12、Map_5_102 sequence11)及presented各1;用户报告已点击收下,主会话明确不再抛竿。奖励页停留截图未采集,不能补造;以原审计确认+用户收下说明+实际主页截图+服务器全量对账作为已获得证据,最终复核说明此偏差。092245Z快照与092018Z仅NewPlayerDataDic/Map_5_102两键变化;金币36550472→36552317(+1845)、体力7305→7300(−5)、energyRM7231→7236;鱼10231从6|0|54|0|False→6|9.23|54|5|False。GuideSaveDataNew及BattlePassRecordTask均保持,其他鱼不变。全55键cache相等,pending=0、active/unknown=null;consume/reward confirmed各1、presented1、fault0。实际三引导指针仍空,药水存档仍4/未完成。用户签到操作人尚未单独确认;签到+30及MonthlySignEvent变化已明确归因签到路径,未归入钓鱼收益。准备正常退出和新进程v1恢复。
|
||||
|
||||
## 检查点6:正常退出与恢复准备
|
||||
奖励后Unity Error=0。经QuitStage在09:23:42Z记录closed,CLI实际playing=false/Ready=false/Error=null,cache待存/active/unknown均空。092418Z退出后全量55键与092245Z全部一致;v3许可归档permit-retired-guide-live-55088.json,全部14个claim保留。以092418Z制作既有v1恢复准备脚本,仅准备未执行;09:24:39Z向旧编辑器发正常关闭请求,不强杀。恢复仅登录读取/正常退出,不再抛竿,需验证金币36552317、体力7300、鱼10231=6|9.23|54|5|False、药水原存档保持。
|
||||
|
||||
检查点6续:已确认55088完全退出,uloop launch启动恢复进程130200(本地17:25:00)。待用户启动CLI后执行prepare-guide-recovery-v1.cs.txt及只读恢复核验guide-recovered-values.cs.txt,不运行第二次钓鱼。
|
||||
|
||||
## 检查点7:新进程恢复完成,交付待复核
|
||||
恢复进程130200以v1登录101,09:28:49Z ready;guide-recovered-values.json为valuesPass=true、55键mismatches=[],实际金币36552317/体力7300/energyRM7236,鱼10231原值6|9.23|54|5|False及内存最大重量9.23/等级6一致,EventPotion01仍4/未完成且三个指针空。初次动态采样在启动阶段空引用,补GContext就绪判断;后续游戏Error0,非生产缺陷修复。
|
||||
正常QuitStage在09:29:30Z closed,pending0/active与unknown为空。最终S3为092948Z,与S2 092418Z全部55键一致;两run最终cache与S3全部相等,10245键各轮观测一致。恢复run只有一次主档同值accepted,无钓鱼事件;v1许可已归档,根目录无permit,全部15claim保留。编辑器非Play,本包101停用协作窗口结束。
|
||||
已编写合并实施交付与独立复核提示词,明确签到、提前收下缺奖励页截图、采样前置及请求统计偏差。下一步独立复核侧,仅复核本两文件及101业务包;主会话待核hash/逐项裁决后才能正式关闭,不继续新增开发或自封通过。
|
||||
@@ -0,0 +1,86 @@
|
||||
# 不可用药水引导恢复:最小修正方案
|
||||
|
||||
2026-09-28,主会话。状态:待完整独立方案评审;未修改源码。补充原《101真实玩法与迁移档恢复业务包》,本次评审覆盖修正、回归及剩余真实闭环,内部检查点不另开评审。
|
||||
|
||||
## 1. 问题和目标
|
||||
|
||||
101已成功登录KV,账号和存档均正确。用户看到的是普通主页,没有药水引导。只读证据 `no-visible-guide-check.json` 显示:curDefine/curGroupDefine指向EventPotion01/EventPotionPanel,CurPanelName为空,实际GetEvent(4,5)=-1。源存档 `GuideSaveDataNew` 中保留 `EventPotion01|4|0`。
|
||||
|
||||
原因链:GuideDataCenter.Init不检查活动可用性就恢复未完成引导指针;药水入口HomeBtnPotion在无活动时隐藏;CheckRewardGuide因指针非空拦截。因此不能要求用户去完成当前没有入口的引导,也不能把它解释成登录失败。
|
||||
|
||||
目标:在本次Editor KV运行中,没有可用药水活动时,历史EventPotion01继续保持未完成存档,但不恢复为“当前活动引导”;已有普通钓鱼准入规则保持,用户可以在通过真实预检后完成一次普通收鱼和重启恢复。
|
||||
|
||||
## 2. 方案选择
|
||||
|
||||
| 选项 | 影响 | 裁定建议 |
|
||||
|---|---|---|
|
||||
| 在GuideDataCenter.Init延后恢复这一个不可用引导 | 源头不产生活动指针;保留旧进度,正常钓鱼回调无需绕门 | **推荐**,限定Editor KV和EventPotion01 |
|
||||
| 放宽CheckRewardGuide接受非空药水指针 | 鱼死亡、奖励ApplySuccess会直接AddIndex(true),可能将药水引导误标完成并写档 | 不采用,不能只凭界面不可见放行 |
|
||||
| 改存档为完成、清除存档、开启过期活动 | 改变玩家历史进度或活动配置,掩盖恢复语义问题 | 不采用 |
|
||||
|
||||
关键源码依据:FishingUpdateSys鱼血量归零处直接AddIndex(true),FishingRewardPanel.ApplySuccess同样调用;GuideDataCenter.AddIndex(true)会把curSaveData.isFinish改true并Save。只改测试门会把现在的前置拦截变成收鱼时的错误写档。
|
||||
|
||||
## 3. 精确改动合同
|
||||
|
||||
生产改动仅 `Client/Assets/Scripts/DataCenter/DataCenter.GuideData.cs`,位置为Init遍历引导组、取得现有_saveData之后、执行原恢复循环之前。新增一个限定条件分支,必要时在本类内用一个私有判断函数容纳活动查询与异常处理;不抽取/重排整个恢复循环,不新增文件或通用引导框架。
|
||||
|
||||
所有条件同时满足才延后恢复:
|
||||
|
||||
1. 编译条件 `UNITY_EDITOR && !SERVICE_HOST`,并且PlayerKVGameplayLoop.Enabled与Ready均为true。
|
||||
2. 当前组恰为GroupName.EventPotion01,已有存档且isFinish=false,guideSubIndex>0且在当前定义数组范围内;对应节点属于EventPotionPanel。空定义/越界不由这个例外消化,仍走原诊断与检查。
|
||||
3. 通过现有FishingEventData.GetEvent(4,5)查询,结果严格等于-1。这是当前玩家实际活动可用性,**不**根据本地配置最后日期、硬编码活动ID或仅比较存档日期判断。不得调用GetEventAndInit、SetEvent、FixPotionData等有初始化/清理效果的接口。
|
||||
|
||||
满足时:把同一_saveData按原键加入本次keyValuePairs,然后continue;不进入该组的原恢复/JumpIndex逻辑,不修改isUpdate,不设置curSaveData/curDefine/curGroupDefine,不发布CompleteGuide或AddIndex事件,不额外调用Save。原字典中的该组数据保留;最终替换字典的既有逻辑照常执行。
|
||||
|
||||
必须保留的行为:
|
||||
|
||||
- 本分支不清空任何已存在的引导指针;它只阻止这一个不可用组在本次Init中被挂载,不覆盖其他组已经恢复的状态。
|
||||
- 活动查询异常/依赖不可用时不延后:记录具体查询失败的警告并继续原恢复路径,由未变的钓鱼准入拒绝。不能把异常当成GetEvent=-1。
|
||||
- 活动可用、其他组(含EventPotion02)、已完成组、索引0均保持原路径。本修正不把全部过期活动、全部不可见引导都放行。
|
||||
- 默认PF路径、非Editor、SERVICE_HOST不启用此分支。全平台/全部活动的引导恢复政策仍为后续范围,不借此扩大正式启用。
|
||||
- 如果将来药水活动重新可用,下次正常登录仍能按保留的进度走原恢复逻辑。本轮不新增定时恢复、跨日热切换或自动完成政策。
|
||||
|
||||
测试改动仅 `Client/Assets/Scripts/Services/UserService.KVFishingRewardValidation.cs`,在既有fishing-reward固定验证入口增加隔离案例。不改CheckRewardGuide、钓鱼/奖励/费用代码、许可规则、配置/场景/资源,不改101/102服务器数据作为测试准备。
|
||||
|
||||
## 4. 必须验证的行为
|
||||
|
||||
复用既有Unity隔离容器、mock KV、真实GuidanceConfig和当前101参考值。验证实际GuideDataCenter.Init恢复路径;不能只写一个与新if相同的真假表来冒充集成验证。Init是async void:固定测试须在无Play/无活动许可时启动,在已配置mock依赖的隔离容器内调用,按guidanceGroupDefines初始化完成和下一Unity调度帧观察结果,设有限超时,收集异步异常;每例Dispose引导订阅并恢复容器,不让未结束的异步继续到下一例。
|
||||
|
||||
| 验证 | 应有结果 |
|
||||
|---|---|
|
||||
| 修复前红测:101真实EventPotion01残留+无活动 | 实际Init恢复指针,证明当前阻塞可重现;不能使用手工把指针清空的替身 |
|
||||
| 修复后同输入 | 三个当前指针不因该组赋值;该组全部存档字段不变,不新增CompleteGuide/该组保存副作用 |
|
||||
| 相同存档+隔离配置构造可用药水活动 | 通过实际GetEvent(4,5)返回有效ID,原恢复成功,不丢旧进度;不修改真实cfg文件/时间 |
|
||||
| 活动查询失败 | 保留原恢复及门拒绝,不误判可用性;异常信息可追溯 |
|
||||
| 其他未完成组/其他已恢复指针 | 继续原恢复,或保留其他指针;CheckRewardGuide仍拒绝真实活动引导 |
|
||||
| 已完成、索引0、无存档、边界索引 | 新例外不改变旧行为;异常数据不被“延期”藏起 |
|
||||
| 延后后调用实际AddIndex(true)与GuideNextEvent | 没有当前引导时不得改变药水完成标记、索引、产生药水GuideSaveDataNew改值或CompleteGuide通知 |
|
||||
| 原普通鱼完整奖励路径 | 通过真实CheckRewardGuide/原31模块加载与奖励通知,原费用/奖励确认先后、普通引导未完成/特殊鱼等负例不变 |
|
||||
|
||||
测试中若原Init因其他合法引导需要Save,使用mock记录并逐字段比较,区别既有副作用与本修正产生的副作用;不能笼统要求整个Init在所有输入下零写。101实际样本则必须验证其GuideSaveDataNew原值保持。
|
||||
|
||||
验证范围:现有fishing-reward全组加新案例、既有4C1固定消费回归、M10/31模块加载原回归,以及Editor与SERVICE_HOST编译。非Editor既有_cheatingScore历史错误、StorageError/L7问题按原状态保留,不用修复本问题为由扩大改动。出现新失败才扩大针对性测试;不重跑101导入或全项目千项hash。
|
||||
|
||||
## 5. 连续实施与真实验收
|
||||
|
||||
完整独立评审后主会话核本方案焦点hash并逐条裁决。当前68504仍在Play且有活动v3许可:实施前必须正常QuitStage、确认drain/closed、保存最终快照并归档许可,保留全部claim;不能在用户运行中改源码触发域重载。此退出与后续新进程登录是同一业务包内部执行步骤,不新增评审。
|
||||
|
||||
随后连续完成:红测→上述两文件最小修改→固定回归和编译→新进程/新备份/既有v3许可→101实际登录→动作前核验及快照→用户手动一次普通抛竿/拉杆/收鱼→奖励确认后收下→正常退出→新进程v1恢复→统一交付复核。
|
||||
|
||||
新的运行基线为最新已验证的合法KV进度。目前参考 `KVGameplayLoopTests/backups/20260928T082052Z/101.json` 55键,与081406Z全等;后续以正常退出时新的全量快照补接证据,不能回滚原D导入after。任何用户实际操作差异均先归因,不能覆盖。
|
||||
|
||||
动作前必须满足:101/kv-loop/固定API、Ready且无错误、无未确认保存;实际GetEvent(4,5)=-1时当前引导指针为空,GuideSaveDataNew保留原值;其余原普通鱼/引导/活动准入仍检查。若药水活动变为可用,则保留正常引导,不能为了赶进度用例外放行。
|
||||
|
||||
操作仍由用户完成。第一次抛竿前先冻结完整服务器/运行时基线;奖励成功先停奖励面板采样,再收下;失败不自动再付费,不补发、不重导、不删除claim。本修正不保证自然随机鱼必然符合已有门。
|
||||
|
||||
验收除原金币/体力/鱼档/任务票据与新进程恢复外,必须新增:普通收鱼过程中EventPotion01没有被AddIndex误完成,GuideSaveDataNew保持;修正不需要用户完成一个不存在入口的药水活动。全部完成再统一交付复核,不把“已不拦截”当作闭环完成。
|
||||
|
||||
固定http://s101.local:18080/;Unity CLI Loop;不使用UnitySkills;不打包。
|
||||
|
||||
## 6. 评审提示词与交付边界
|
||||
|
||||
请独立审查本最小补充方案,并核同目录 `stale-guide-review-hashes.json`。重点:Init处延期是否避免恢复错误指针;save数据和isUpdate是否保持;GetEvent只读语义与异常分支;其他组/PF/非Editor不回归;AddIndex(true)/GuideNextEvent/奖励通知是否可能误改存档;实际Init的红绿验证是否充分;当前活动会话退出后才能编码;剩余真实闭环是否完整覆盖。
|
||||
|
||||
给出通过/有条件通过/不通过,逐条列问题严重级别、依据和最小修改。不要把原失败现场再拆成独立实施复核;不要要求改档完成引导或删除钓鱼门。只读审查,不运行Unity/正式接口,不修改共享状态或业务代码,仅落盘 `Gameplay101Validation/不可用药水引导恢复独立方案审查.md`。
|
||||
|
||||
作者自查:根因、三选一取舍、两文件范围、精确分支、状态/持久化边界、失败分支、红绿与原回归、实际运行、统一验收均已明确。尚无实施批准或代码修改;下一步交审核侧。原31项方案受审清单不回写,本补充清单只冻结相关源码/输入/证据,不冻结共享日志与活动run文件。
|
||||
@@ -0,0 +1,36 @@
|
||||
# Gameplay101Validation 不可用药水引导恢复独立方案审查
|
||||
|
||||
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与本方案编写与101首次运行;此前参与为业务包方案审查。本轮只读+hash重算+源码核对;未运行Unity/正式接口/修改共享状态。
|
||||
|
||||
## 受审hash核对
|
||||
|
||||
`stale-guide-review-hashes.json`:**19/19重算全部一致**。
|
||||
|
||||
## 总判定
|
||||
|
||||
**通过。** 无P1/P2;P3两条不阻塞。根因链准确、三选一取舍正确(放宽门会导致AddIndex(true)误完成引导——本审查独立核实该危险真实存在)、改动合同最小且边界严格。
|
||||
|
||||
## 重点逐项(按§6提示词)
|
||||
|
||||
**1. Init处延期避免错误指针:正确。** 根因链经源码核实:`GuideDataCenter.Init`(:95 async void)不检查活动可用性即恢复未完成指针→CheckRewardGuide因指针非空拦截→用户被要求完成无入口的引导。延期分支置于取现有_saveData之后、原恢复循环之前——**源头不产生活动指针**,正确位置。
|
||||
|
||||
**2. save数据与isUpdate保持:合同明确。** 延期时同_saveData按原键加入keyValuePairs后continue;不设curSaveData/curDefine/curGroupDefine、不改isUpdate、不发布事件、不额外Save、不清其他组指针、保留原字典数据——**只阻止挂载不丢进度**(活动将来可用时下次登录仍能原路恢复)。
|
||||
|
||||
**3. GetEvent只读语义与异常分支:严格。** `GetEvent(4,5)`(:449)只读查询严格=-1才延期;禁用GetEventAndInit/SetEvent/FixPotionData等有副作用接口;**异常不当作-1**(记录警告继续原恢复,由钓鱼准入拒绝)——保守方向正确。
|
||||
|
||||
**4. 其他组/PF/非Editor不回归:边界完备。** 限定`UNITY_EDITOR&&!SERVICE_HOST`+KV Ready+恰EventPotion01+isFinish=false+guideSubIndex>0且在范围内;EventPotion02/已完成/索引0/其他组/活动可用均原路径;默认PF与非Editor完全不触发。
|
||||
|
||||
**5. AddIndex(true)/GuideNextEvent误改风险:真实且被正确规避。** 本审查独立核实三处`AddIndex(true)`调用(FishingUpdateSys:2037/3028+FishingRewardPanel:582)——若选路线2放宽CheckRewardGuide,收鱼/鱼死亡时会把EventPotion01误标完成并写档。**路线1(源头延期)是唯一正确选择**;延期后无当前引导→AddIndex(true)无目标可改。
|
||||
|
||||
**6. 红绿验证充分:是。** 红测用101真实EventPotion01残留(非清指针替身)重现阻塞;绿测同输入指针不挂载+存档不变;可用药水活动经隔离配置构造走原恢复(不丢旧进度);异常/其他组/边界全覆盖;**"延后后调用AddIndex(true)不得改药水标记"的专项验证**直接锁定核心风险;Init为async void的测试时序(完成信号/下一帧观察/有限超时/每例恢复容器)考虑周全。
|
||||
|
||||
**7. 当前会话退出后才编码+剩余闭环覆盖:完整。** 68504在Play须先正常QuitStage/归档许可——不能运行中改源码触发域重载;后续连续执行(红测→两文件修改→回归→新进程→真实抛竿→收下→退出→v1恢复→统一复核)与原业务包合同一致;新增验收项"EventPotion01未被误完成+GuideSaveDataNew保持"精确对应本修正的风险。
|
||||
|
||||
## P3清单(不阻塞)
|
||||
|
||||
- **P3-1**:延期分支的条件2要求"对应节点属于EventPotionPanel"——建议实现时以`guidanceGroupDefines`节点数组实际Panel名断言(而非仅组名推断),测试加一条节点Panel不匹配时不延期的负例。
|
||||
- **P3-2**:`GetEvent(4,5)`的magic数字(type4/subType5)建议在修正分支内用具名常量或注释标明语义(药水活动类型对),便于未来维护。
|
||||
|
||||
## 结论
|
||||
|
||||
**通过本最小修正方案。** 主会话核hash(已代验19/19)逐条裁决后:先正常退出当前68504会话(归档许可/保留claim),再连续执行红测→两文件修改→回归→新进程真实闭环→统一交付复核。原业务包合同继续有效;本修正不扩大到全平台/全部活动引导政策。
|
||||
41
CodexOutput/upserver/Gameplay101Validation/完整业务包独立方案审查.md
Normal file
41
CodexOutput/upserver/Gameplay101Validation/完整业务包独立方案审查.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Gameplay101Validation 完整业务包独立方案审查
|
||||
|
||||
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与本方案编写;此前参与为P2-α-A/B/C/D与4C1/4C2全链审查(本包直接复用这些已关闭单元的入口与合同)。本轮只读+hash重算;未运行Unity/正式接口/修改共享文档。
|
||||
|
||||
## 受审hash核对
|
||||
|
||||
`Gameplay101Validation/review-hashes.json`:**31/31重算全部一致**。Preflight.dll独立核验=`AAA1276630E8633C…`(与方案引用一致);导入after参考run目录(20260928T073630Z)八件证据在位。
|
||||
|
||||
## 总判定
|
||||
|
||||
**通过。** 无P1/P2;P3三条不阻塞。方案是对已验证组件(4C2入口+D导入档+既有许可体系)的正确组合复用,生产代码零改动可信,且从4C1–4C2全部教训中吸收了流程改进。
|
||||
|
||||
## 重点逐项(按§7提示词)
|
||||
|
||||
**1. 101既有账号与55键备份:充分。** S0门要求55键与D导入after**原值一致**(身份/关键档/配置匹配+解码有效)——不一致即停不覆盖;S0兼作v3许可backupPath(位于KVGameplayLoopTests下满足现有许可约束——方案如实说明导入after不能直接用);101其他客户端停用至包结束(不沿用已结束的15分钟窗口);102不需停用且附带快照仅观测——三个账号边界各自准确。
|
||||
|
||||
**2. v3/v1边界:清楚。** v3=一次钓鱼动作(S0的55键为许可键上限);v1=恢复登录(S2备份建立);钓鱼写门六键+必须在S0键集+新键维持拒绝——与4C2已关闭合同一致;"许可键集≠允许点击55种业务"的限定诚实。
|
||||
|
||||
**3. PF身份依赖:如实。** "登录仍先PF身份→s101→KV加载,存在PF域名解析依赖;不能宣称完全不访问PF;PF存档写入不在授权范围、发现即停"——与4C2第四次运行的DNS现实一致。
|
||||
|
||||
**4. 登录写与钓鱼写的区分:明确。** S1在**动作前**冻结(登录稳定且未抛竿);S0→S1登录规范化/跨日差异**单列归因**不混入钓鱼奖励;S1→S2业务差异可解释——三层快照切分正确(直接吸收4C2第四次"用户先操作后采样"的教训:本方案明确"主会话完成动作前采样后才通知用户")。
|
||||
|
||||
**5. 一次扣费与奖励/退出确认:闭合。** 一次付费动作、失败不重试、自然鱼不保证抽中合格鱼且拦截照停不改随机、`fishing-reward-confirmed`先于`presented`、QuitStage正常退出不靠强杀、未确认票据为0或有明确终态、**"扣费已确认而奖励失败则如实记账,不自动补发"**——与4C1/4C2失败合同完全一致。
|
||||
|
||||
**6. 新进程恢复:充分。** 新进程+S2的v1许可+不操作玩法+恢复值与S2核对+S3差异归因(登录附带变化单列);"恢复失败不把S0重新导入"。
|
||||
|
||||
**7. 备份工具附带102只读:正确。** 锁定DLL仅`--backup-101-102`分支(import分支禁止);每轮1登录+1Get/账号、无Set/Delete;102快照只报告观测值——"不能把其他客户端变化归于本次101游戏"的限度诚实。
|
||||
|
||||
**8. 失败不重导/重放/绕过:贯穿。** §5全部失败分支(PF解析/加载/准入/并发/Unknown/写门)均为停止+留证;"不授权任意故障修复代码,必须改业务逻辑则完整评审补充"——与既定边界一致。
|
||||
|
||||
**9. 执行方式(一次授权连续执行+统一复核):合理。** 把备份/许可/准备从独立评审改为内部检查点是正确的效率取舍——所有组件均已各自过审,本包只是组合执行;提示词要求"只将真实阻断项作为开工条件,不因文档样式另设实施前复核"——与本审查判断一致。四轮备份8登录+8Get与游戏请求分开计数、"不能把工具计数当游戏总请求数"——吸取4C2口径教训。
|
||||
|
||||
## P3清单(不阻塞)
|
||||
|
||||
- **P3-1**:S0快照与D导入after的对账建议直接复用D4复核的逐值比较脚本产物(hash引用而非重算),并在交付中交叉引用两份独立对账。
|
||||
- **P3-2**:检查点2"协作点击收下"——若CLI LongPress适配(4C1经验)需要再次使用,建议在交付中记录实际输入方式(用户手动/CLI模拟)与参数,延续既有约定。
|
||||
- **P3-3**:S3后建议附一次最终101全量Get快照(S4概念,仅读)作为交付对账终点——当前S3即恢复退出后快照已含此意,显式命名即可(可选)。
|
||||
|
||||
## 结论
|
||||
|
||||
**通过完整业务包方案。** 主会话核hash(已代验31/31+DLL)逐条裁决后,取得你的一次运行授权即可连续执行(登录→一次收鱼→保存→退出→新进程恢复→统一复核)。本包证明范围=101这条真实链;26模块外键/全活动/热换号/4B3B/C/G4不因此完成——方案自身声明准确。
|
||||
52
CodexOutput/upserver/Gameplay101Validation/方案复核裁决与执行记录.md
Normal file
52
CodexOutput/upserver/Gameplay101Validation/方案复核裁决与执行记录.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 101完整业务包:方案复核裁决与执行记录
|
||||
|
||||
2026-09-28,主会话。独立报告《完整业务包独立方案审查.md》通过,无P1/P2。主会话于2026-09-28T07:53:29.6197453Z重算受审31项SHA256及长度,31/31一致。批准按完整业务包连续执行,生产代码零改动;不新增实施前复核。
|
||||
|
||||
## 逐条裁决
|
||||
|
||||
| 报告项 | 裁决 |
|
||||
|---|---|
|
||||
| 1 账号与备份 | 接受;S0须新取且与D导入55键逐值一致,其他客户端停用是实际运行前提。 |
|
||||
| 2 v3/v1边界 | 接受;一次钓鱼/恢复分新进程,55键只是许可上限,保留现有严格钓鱼写门。 |
|
||||
| 3 PF身份 | 接受;PF身份依赖保留,不能称游戏无PF请求。 |
|
||||
| 4 登录/钓鱼写 | 接受;先取得动作前S1和登录差异,才通知用户抛竿。 |
|
||||
| 5 费用/奖励/退出 | 接受;最多一次付费,失败不重试;奖励确认后展示,正常退出和drain。 |
|
||||
| 6 恢复 | 接受;新进程v1,基于S2,恢复失败不重导。 |
|
||||
| 7 102备份 | 接受;工具附带102登录/Get,无102游戏或KV写;登录元数据副作用不隐瞒。 |
|
||||
| 8 失败边界 | 接受;不绕门、不重放、不自动补发;需要业务代码变更才补审方案。 |
|
||||
| 9 连续执行 | 接受;准备/运行/恢复为内部检查点,最后统一交付复核。 |
|
||||
|
||||
P3-1部分采纳:交叉引用D4的两份独立对账,复用比较口径;但旧产物的hash不能证明新S0一致,必须重算新S0与D-after的Ordinal原值、UTF8 hash和长度,不以旧hash替代新快照验证。
|
||||
|
||||
P3-2采纳:记录每次实际输入为用户手动或CLI模拟,后者记录参数。计划请用户手动完成抛竿/拉杆和收下,不另造输入适配。
|
||||
|
||||
P3-3采纳命名澄清:S3就是恢复进程正常退出后的最终全量Get快照,不增加重复S4请求。报告“八件证据”沿用7文件加目录的口径。
|
||||
|
||||
## 运行范围与前提
|
||||
|
||||
用户本轮“复核完成,继续”承接已呈现的完整业务包,按该范围推进,无需逐动作重复许可。最多一次101普通付费钓鱼及奖励保存、正常退出和新进程恢复;四轮备份附带102只读。旧导入窗口和许可不复用。开始时仍须核实101当前其他客户端已停用这一事实,不能由历史确认推断。
|
||||
|
||||
本轮先完成CLI空闲/API/进程claim检查并记录;停用事实未确认前不进入Play。固定http://s101.local:18080/,Unity CLI Loop,不打包、不改生产代码。
|
||||
|
||||
## 检查点0:开始执行
|
||||
|
||||
用户明确确认:101其他客户端已停用。确认记录UTC:2026-09-28T07:56:02.8476756Z。31项hash再次一致,开始S0备份,不调用import分支。
|
||||
|
||||
S0:backups/20260928T075611Z,101为55键,与D-after逐值Ordinal及UTF8 hash/长度55/55一致。工具2登录+2Get、Set/Delete=0;102附带45键快照只作观测。
|
||||
|
||||
## 2026-09-28 用户明确手动引导+抛竿收鱼,先恢复登录
|
||||
|
||||
用户明确:“我会完成药水活动引导,然后操作抛竿和收鱼,但是先需要检查登陆失败的问题”。据此,本轮先修复运行接管配置;界面引导/抛竿/收鱼由用户手动,主会话不模拟点击,不修改引导数据/业务代码。相较原自动验证范围,手动完成药水引导为用户明确新增操作;不代表允许新键、导入、覆盖进度、绕过准入或重复扣费。
|
||||
|
||||
基线调整:最新081406Z只读备份10155键与上次075950Z正常退出后逐值一致,保留已确认两键登录更新,不再以原D-after为起点。工具本轮2登录+2Get,零KV写。恢复继续使用既有v3和原55键,药水epdk及GuideSaveDataNew已在其中;引导完成后先核对实际写入与动作前基线,再开始一次普通钓鱼。若正常界面无活动入口、出现新键/错误或费用不明即停,不以改时间/强开面板/标记完成解决。
|
||||
|
||||
旧90064手动Play为默认PF入口、CustomID为空。正常QuitStage请求未使此未登录会话退出Play;只读确认IsLogin=false/InternalId=0、无KV会话后停止其Play,随后空闲检查通过,08:15:36Z发出CloseMainWindow正常关闭请求。未强杀、未删claim,待旧进程退出再启动新进程和新许可。本操作不是用Stop替代已登录游戏的保存退出。
|
||||
## 2026-09-28 手动接管登录恢复成功(68504)
|
||||
|
||||
用户确认新编辑器正常后,31项受审hash仍一致。使用081406Z的55键备份及既有v3许可启动新进程68504_639261801774257712,08:20:01.3796001Z ready。实际IsLogin=true、CustomId=101、InternalId=2、SaveBackend=kv-loop、EventApiURL=http://s101.local:18080/;等级62、金币36550472、体力7275、装备20001,Console Error=0。空账号/默认PF入口造成的本次登录失败已通过恢复正确运行配置解决,生产代码零改动;并非永久解除一次性测试许可机制。
|
||||
|
||||
手动接管前备份082052Z:10155键与081406Z逐值相同,游戏接受2次同值保存,pending=0、active/unknown为空、fishing事件0。证据manual-login-verified.json、manual-handoff-reconciliation.json、manual-handoff-screen.json及Rendering_20260928_162102_487.png。当前实际画面为游戏主页;没有停止Play、退役permit或关闭编辑器,留给用户接管。
|
||||
|
||||
实际运行时GetEvent(4,5)=-1,当前没有可用药水活动;curGroupDefine仍为EventPotion01。这次不再只是本地配置推测。药水引导无法直接通过当前活动入口完成的原因需单独处理;登录问题已解决,不能混称仍无法登录。暂不抛竿/强开活动/改档结束引导。用户正常界面操作仍由用户执行,之后需报告结果再核写入;尚未进行收鱼或新进程恢复。
|
||||
|
||||
本次恢复准备+接管前两轮备份共4登录+4Get(含附带102),无工具Set/Delete;游戏请求另计。当前有效许可仍在,101其他客户端应保持不并用。后续不要直接Stop再Play复用同一进程claim。
|
||||
66
CodexOutput/upserver/Gameplay101Validation/首次运行结果与引导阻塞.md
Normal file
66
CodexOutput/upserver/Gameplay101Validation/首次运行结果与引导阻塞.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# 101首次运行结果与引导阻塞
|
||||
|
||||
2026-09-28,主会话。**101真实登录与历史档加载成功;动作前发现未完成的EventPotion01活动引导,按已评审方案停止本次玩法。未抛竿、未扣费、未领奖,收鱼和新进程恢复尚未完成。** 本轮生产代码零改动,不需要对现有代码重复实施复核;后续若扩大到活动引导业务,须先给出具体路径和最小补充方案。
|
||||
|
||||
## 运行与证据
|
||||
|
||||
用户已确认101其他客户端停用;31项受审hash再次一致。进程 `90064_639261625195875237` 原无run/claim,建立v3许可后仅一次Play。
|
||||
|
||||
| 环节 | 结果/证据 |
|
||||
|---|---|
|
||||
| S0 07:56:11Z | `KVGameplayLoopTests/backups/20260928T075611Z`,10155键与D导入after逐值及UTF8 hash/长度55/55相同,见S0-reconciliation.json。 |
|
||||
| 当前解码 | checkpoint0-decode.json:与S0原值相同的PF源在当前配置诊断Valid/0;这是本地合成描述符诊断。后续真实登录加载成功为另一个运行证据。 |
|
||||
| 登录 07:57:46Z | ready,PlayerId101,Error=null;实际金币36550472、装备20001,与历史主档相符。固定API检查通过;PF身份登录成功,无本次错误日志。 |
|
||||
| 动作前 07:58:05Z | unlockedMag/Strike=true、frequency31、cruise=-1,无collectingTarget/piggy/bargain/challenge;但guideNode/guideGroup均true。 |
|
||||
| S1 07:58:23Z | 101仍55键且当时与S0原值相同;此时登录保存尚未在此快照反映,**不能当作登录写已确认的合格动作基线**。没有通知用户抛竿。 |
|
||||
| 阻塞定位 | checkpoint1-guide-detail-corrected.json:EventPotion01,EventPotionPanel,节点“正确的位置”,按钮root_main/PotionScrollView/Container/Data_Item-0/gild_group/gild1,文本GuidePotion_02。截图Rendering_20260928_155846_096.png另显示签到弹窗,未点击“收下”。 |
|
||||
| 正常退出 | 07:59:26.7902335Z出现closed,已走QuitStage和bridge drain;未强制停止。 |
|
||||
| 停止后最终快照 07:59:50Z | `KVGameplayLoopTests/backups/20260928T075950Z`。这是失败分支取证快照,**不是新进程恢复S3**。 |
|
||||
| 最终状态 | playing=false、ready=false、Error=null、无permit;Enabled=true为该进程静态运行标志残留,不代表仍可开始业务。11旧claim一致,新claim保留;下一次必须新进程。 |
|
||||
|
||||
采样小片段首次出现JsonConvert重复类型引用及错误的energy成员名,编译阶段未执行;改成既有公开成员的只读匿名结果后成功,原失败证据保留。不是生产代码编译错误或业务运行异常。
|
||||
|
||||
## 为什么停止
|
||||
|
||||
原档GuideSaveDataNew已有 `EventPotion01|4|0`,最终仍保持原值。`DataCenter.GuideData.cs` 的Init恢复未完成引导,设置curGroupDefine/curDefine;此次只读采样证实运行时恢复了EventPotion01。
|
||||
|
||||
`UserService.KVFishingReward.cs:58` 的CheckRewardGuide要求当前没有活动引导;本包方案§5也明确这一条件。因此主会话在抛竿前停止,**没有为了生成拒绝异常再调用钓鱼入口**。现有证据不支持把它说成新迁移代码导致的异常,也不证明药水活动引导能在当前活动时间下正常完成。
|
||||
|
||||
## 保存对账与影响
|
||||
|
||||
最终101仍55键,仅两键原值不同;其余53键(包括GuideSaveDataNew、全部鱼档及未知键)保持。见final-reconciliation.json。
|
||||
|
||||
- ShopPackBuyCount:`{"0":264}`→`{"0":270}`。`DataCenter.PlayerShopData.cs:683` InitShopPackData按DayOfYear重置,与本次日期匹配。
|
||||
- NewPlayerDataDic:newData的19槽字符串完全不变,所以金币36550472、体力7275、EnergyRM7231、钓鱼31/累计147未变。其内vipL基准337→343、滚动槽平移6天,对应PlayerData.UpdateVIPScoreDic;ad登录统计19由17/264→18/270,对应AchievementDataManager登录日更新;rt活动30301021→30301027,后者配置时间2026/9/27 18:00至9/28 18:00,符合现有AllRefresh活动刷新。未点击签到,不能把这些登录更新算成钓鱼奖励。
|
||||
|
||||
游戏审计接受3次保存(ShopPackBuyCount、GuideSaveDataNew、NewPlayerDataDic),最终三个值hash全部等于各自write-attempt;其中GuideSaveDataNew是同值保存。最终cache baseline55键与服务器快照逐值相同,pending=0、activeBatch=null、unknownBatch=null,closed=1,fishing事件=0,见final-save-and-scope-verification.json。接受次数不冒充HTTP Set次数。
|
||||
|
||||
三轮备份工具合计6登录+6Get、KV Set/Delete=0;游戏另外执行PF身份/s101登录、加载和保存,不能声称整个会话无写或无PF访问。未做全流量抓包,不声称完整HTTP请求计数。102三次45键快照逐值相同,未在游戏登录102。
|
||||
|
||||
## 下一步与边界
|
||||
|
||||
本次运行结束,101停用窗口到此结束;已退役的许可不复用,不回灌S0覆盖本次合法登录更新。
|
||||
|
||||
下一步仍由主会话处理:检查EventPotion01在当前活动周期的正常恢复/完成路径、涉及键和消耗,再形成一次最小补充方案。该范围应覆盖引导处理后继续普通钓鱼和恢复的整个剩余闭环,不再拆成取证、准备、单次点击等小评审。不能直接改GuideSaveDataNew为完成、清空引导指针或放宽钓鱼门。也不应让用户盲点活动或签到来试错。
|
||||
|
||||
若需恢复运行,新的起点必须是当前最终服务器存档并重新核对,而非原D导入after。原方案S0等于D-after的前提已经被合法登录写推进,补充方案需明确引用本次最终快照及两键差异。此次没有请求对失败现场再单独开一轮实施复核;完整业务包仍未关闭。
|
||||
|
||||
## 用户拟手动接管(2026-09-28)
|
||||
|
||||
用户表示“我来手动操作”;后续界面点击交给用户,不以脚本替代操作。当前编辑器已经退出Play,旧permit退役,不能直接复用90064启动。
|
||||
|
||||
只读核查:药水业务SyncData写epdk,该键已在101的55键中;HomeBtnPotion依赖GetEvent(4,5),无活动时隐藏入口;EventPotionPanel.InitGuidance进入面板后才根据关卡状态正常结束/恢复引导。旧档epdk.EventID=40000186;本地cfgData/tbfishingevent.json没有此ID,24条Type4/SubType5记录中最后结束日为2026-04-12。此为本地配置证据,不能在未核游戏实际加载表前断言当前UI必定无入口;不能通过修改活动时间或强开面板来替代真实路径。未重启/建立新permit/进入Play,代码和存档均未修改。
|
||||
## 2026-09-28 用户手动Play登录失败诊断
|
||||
|
||||
只读CLI实测当前90064已再次Play,Enabled=false/Ready=false/无permit;实际SaveBackend默认playfab,配置CustomID和PlayFabUserService.CustomId均为空,EventApiURL仍正确为http://s101.local:18080/。界面显示“请检查网络连接然后重试/登录失败”,Console Error=0。
|
||||
|
||||
PFLoginAct从配置取空ID;UserService.LoginWithBackend在正整数账号检查处直接返回ELoginStep.Api,未进入本次LoginCore网络调用。当前“网络”文字是通用失败提示,根因是手动接管时未恢复正确账号/KV入口。此前101成功登录和药水引导阻塞是另一轮运行,不应混为同一问题。
|
||||
|
||||
主会话退役临时许可后未完成手动接管配置,是本次流程衔接缺口。不能只填101让其使用默认PF存档;恢复迁移档操作需正确KV入口及新的进程许可。当前仅诊断,未改代码/配置、未重试登录、未主动停止用户Play。证据:Gameplay101Validation/user-login-question-{state,all-logs,errors,config,cause,screen}.json及Rendering_20260928_161223_576.png。
|
||||
## 2026-09-28 用户确认界面无药水引导:实测后台残留
|
||||
|
||||
用户说明当前没有药水引导,主会话重新只读检查:账号101已登录,KV ready=true;curDefine/curGroupDefine非空且指向EventPotion01/EventPotionPanel,CurPanelName为空,GetEvent(4,5)=-1。证据no-visible-guide-check.json。界面无引导与后台有历史恢复指针同时成立;此前要求用户手动完成药水引导不准确,不能继续要求用户寻找不存在的活动入口。
|
||||
|
||||
具体拦截点是UserService.KVFishingReward.cs的CheckRewardGuide,用任一引导指针非空直接拒绝。GuideDataCenter.Init可恢复历史未完成指针,而TriggerGuideNext会按目标面板匹配才推进,不能简单把非空等价于当前可见引导。最小修正需要同时核对残留指针对钓鱼通知的影响,不能直接删除全部引导保护,也不通过改存档完成标记处理。本轮没有修改代码、引导状态或存档,未触发抛竿。
|
||||
|
||||
下一步应由主会话形成并提交针对“不可用活动的不可见残留引导”的最小修正方案,完整评审后编码。当前仍保持已登录主页供用户查看,原业务包未完成,不再等待用户完成药水活动。
|
||||
Reference in New Issue
Block a user