Files
ft/CodexOutput/upserver/阶段4B1方案裁决与实施批准-2026-09-23.md

25 lines
2.8 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.
# 阶段4B1方案裁决与实施批准
日期:2026-09-23。用户要求“审查完成,阅读文档,进行下一步”。已读取《阶段4B分期与4B1方案独立审查-2026-09-23.md》:分期PASS、4B1方案PASS,无P1/P2。主会话重算受审基线18项SHA256全部一致。
**裁决:接受4B分期及4B1完整方案,批准按原§6白名单实施4B1。只新增两个生产文件/meta及KVLoginContextTests,维护相关文档;不进入4B2/4B3、不接游戏、不访问正式服、不打包。** 方案原文保留受审版本,以下为实施补充解释。
## P3逐条裁决
| 编号 | 裁决及实施要求 |
|---|---|
| P3-A | 采纳Close后IsCurrent=false、历史快照仍可枚举的显式测试。审查建议中“再Prepare被拒”按既有单次任务合同解释为不启动新准备、不恢复授权:若此前已调用Prepare,仍返回原Task(可能是历史Prepared成功),不能同时要求返回新的Cancelled任务;只有Close先于第一次Prepare时返回Cancelled。测试同时断言任务引用一致、0新增请求和IsCurrent=false。Prepared只记录当时结果,不能代替当前归属判断。 |
| P3-B | 全采纳:PrepareAsync及结果XML注释明确失败/取消需等待底层传输和Close真正收尾,忽略取消可能长期挂起;调用者不能用超时或new实例绕过关闭屏障。 |
| P3-C | 采纳XML说明和调试诊断:重复传入不同token仍返回首个Task,不替换生命期;记录固定不含身份/值的Debug诊断并以internal计数供测试验证。不使用可能中断调试/终止测试进程的Debug.Assert,不抛异常改变已审幂等返回合同。 |
## 文件边界与执行步骤
1. 新增PlayerKVLoginContext.cs、PlayerKVLoginPrepareResult.cs及meta;context拥有session,私有持有4A bridge/handle,结果不暴露它们。
2. 新增显式编译真实源码的KVLoginContextTests,TCS闸门覆盖B1-01~B1-16及P3补充;保存每次运行完整输出、真实退出码与独立run。
3. 4A/42/86/29/Review/3C离线回归,KVLiveTests只build,Unity CLI Loop身份核对与编译;源码白名单hash与脱敏检查。
4. 限定自审、逐项交付矩阵、外部实施复核提示词、每检查点日志与共享状态。4B1实现完成仍待独立实施复核,不自动关闭或继续4B2。
禁止修改原方案列出的既有生产文件、旧测试/csproj、游戏入口/存档/业务初始化、服务器或包。旧测试已为显式Compile;KVLiveTests虽为通配符但已包含账户依赖,新文件无新库需求,继续仅构建验证,实际结果以构建为准。
正式地址固定 `http://s101.local:18080/`;仅离线synthetic.invalid替身测试,默认生产传输不发请求;Unity只使用Unity CLI Loop,不使用UnitySkills;无Git提交/发布。