docs(upserver): 归档阶段裁决与批量迁移待办

This commit is contained in:
Liubing\LB
2026-09-28 18:17:40 +08:00
parent a6f5e107f8
commit 1c0cdf7a99
376 changed files with 89430 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
# 阶段4C2收线取消缺陷修复实施记录
2026-09-24。实施人:接手主会话。依据:《阶段4C2收线取消缺陷修复审查裁决与实施批准-2026-09-24.md》(独立审查《阶段4C2收线取消缺陷修复方案独立审查-2026-09-24.md》,10/10 hash基线)。缺陷实证:《阶段4C2第二次真实尝试与收线取消记录-2026-09-24.md》及用户提供的完整堆栈。
## 实施内容(完全在批准边界内)
1. **生产唯一改动**:`UserService.KVFishingReward.cs` CancelReward 在身份守卫后插入一行独立守卫:
`if(a.Ending && !a.Confirmed && ReferenceEquals(actor,a.Controller))return;`
字节级插入(CRLF保持),raw diff 精确为 `284a285` 一行新增,其余字节不变。语义:Ending已置位且票据未确认时,控制器自身的disable/destroy(FishEndCore→DestroyUI(FishingPanel)的正常拆除窗口)不构成放弃;战斗中(Ending=false)、确认后、Panel与Consumption.Actor路径均保持原语义。
2. **验证维护(P2-1/P3-1/P3-3落实)**:`UserService.KVFishingRewardValidation.cs` 在"confirmed-normal-cancel-no-second-exit"组后插入两组:
- `battle-controller-disable-still-cancels`:不置Ending,控制器disable→断言 Cancelled && !Ready && Faults==1(钉住保留的真实放弃保护);
- `ending-teardown-pre-confirm-not-cancel`:Batch()置Ending→两次控制器disable/destroy(模拟OnDisable+OnDestroy双钩子)→断言不取消不断言故障→ConfirmRewardAsync→PresentReward一次→断言确认并展示完成。
按harness既有模式直接置Ending(P3-3),未真调BeginRewardEnding。raw diff 为 `122a123,130` 八行新增。
3. 其余源码(FishingUpdateSys.cs、FishingRewardPanel.cs、KVGameplayLoop.cs等)零改动。
## 验证证据(全部基于最终字节)
| 门 | 结果 | 证据 |
|---|---|---|
| 红证据(修复前) | 新增主用例按预期失败:"Reward validation: ending teardown window is not a cancellation";其前的对照组通过 | diagnostic-impl/fix-red-validation.json(未应用守卫,仅验证文件改动) |
| 全量固定验证(修复后最终字节) | **success=true,45组171断言**(原43组168+新增2组3断言),两组新用例均passed | diagnostic-impl/fix-green-validation.json、fix-final-validation.json |
| Editor编译 | 0错误(三次:验证文件后/守卫后/守卫独立行后) | fix-validation-compile.json、fix-guard-compile.json、fix-final-compile.json |
| SERVICE_HOST编译 | exit0、0错误(注:一次exit1系工作目录错误CS2001找不到源文件,非代码错误;从Client目录重跑通过) | fix-final-service-host.log |
| 静态diff | 生产`284a285`一行;验证`122a123,130`八行;其余8项清单文件字节不变(8/8复核一致) | controller-cancel-fix-review-hashes.json基线+diagnostic-impl备份diff |
| 最终hash | UserService.KVFishingReward.cs `40EE14EB…93F9`(20093字节);UserService.KVFishingRewardValidation.cs `4CC10F91…F35`(42357字节) | diagnostic-impl/fix-final-hashes.json |
过程注记:守卫首次插入与`a.Cancelled=true;`同列一行,按裁决"一行守卫"要求改为独立行后重新编译并全量复验(45/171绿);一次验证调用恰逢编译域重载窗口("Unity server is starting"),等待后重试成功,非验证失败。
## 边界与下一步
- 本修复仅关闭"完成路径自拆除被误判为放弃"的缺陷;run 62216消耗的10点体力维持不补发/不退款。
- 审查者保留提示:Ending=false期间可能存在的非退出性瞬时禁用未实证、不在本次范围;如未来真实运行复现,另立方案。
- **修复后的真实收鱼奖励闭环(拉杆→收鱼→奖励保存→新进程恢复)仍需用户另行授权新进程运行。** 4C2/完整4C/G4未关闭。
- 固定 http://s101.local:18080/,Unity CLI Loop,不用UnitySkills、不打包。