101 lines
4.6 KiB
Markdown
101 lines
4.6 KiB
Markdown
# 阶段3C实施任务书:组合验证、限定联调与诊断导出
|
||
|
||
> 2026-09-23补修复更新:R1–R5已修复并完成本轮技术验证;外部实施复核待完成。最新证据见[补修复交付与逐项证据](阶段3C补修复交付与逐项证据-2026-09-23.md),源码hash见KVStage3CTests/repair-final-source-hashes.json。下方为修复前历史记录(含旧final-source-hashes.json),不能替代新证据,也不代表3C/G3已经重新最终通过。
|
||
|
||
日期:2026-09-23。状态:**原实施与初次审查已交付;同版本新增R1–R5待补修复/验收及外部复裁。** 最新依据为《阶段3C复核更正与补验收-2026-09-23.md》,本任务书历史检查点不代表当前全部通过。
|
||
|
||
## 1. 前置门
|
||
|
||
开始编码前必须全部满足:
|
||
|
||
1. 用户确认的高层设计已记录。
|
||
2. 其他AI完成对《阶段3C组合与限定联调方案-2026-09-23.md》的独立审查。
|
||
3. 主会话逐条裁决审查意见并将本文件状态改为“已批准实施”。
|
||
4. 不存在未关闭的P1/P2方案问题。
|
||
|
||
以上四项均已满足:独立审查无P1/P2,F1–F6已全部采纳并落盘。
|
||
|
||
## 2. 允许文件
|
||
|
||
只允许新增:
|
||
|
||
- `CodexOutput/upserver/KVStage3CTests/KVStage3CTests.csproj`
|
||
- `CodexOutput/upserver/KVStage3CTests/Program.cs`
|
||
- `CodexOutput/upserver/KVStage3CTests/`下本任务证据文件。
|
||
- `CodexOutput/upserver/阶段3C实施记录-2026-09-23.md`
|
||
|
||
不允许修改生产源码、既有测试、包、asmdef、服务器代码或游戏入口。发现接口缺口时停止并回到差异评审。
|
||
|
||
## 3. 实施顺序
|
||
|
||
### 检查点1:项目骨架和安全门
|
||
|
||
- 显式链接阶段2/3A/3B及S101AccountSession源码,不使用通配符。
|
||
- 实现显式`--offline`、`--live-s101`、`--cleanup <manifest>`模式。
|
||
- 无参数或非法参数必须不访问网络并以非0退出。
|
||
- 固定API、账号、run目录和manifest schema;默认无网络。
|
||
- 先实现manifest验证和路径约束,再实现任何请求。
|
||
|
||
### 检查点2:离线组合与子进程
|
||
|
||
- 实现O1–O4。
|
||
- 所有子进程有超时、退出码和独立日志。
|
||
- 验证文件锁释放、pending恢复、Unknown和RecoveryRequired策略。
|
||
|
||
### 检查点3:脱敏诊断
|
||
|
||
- 关闭Owner后读取不可变诊断快照。
|
||
- 使用专用DTO,只输出方案允许字段。
|
||
- Owner关闭前从票据、`WaitForTicketAsync`和`FlushAsync`结果累计票据状态;不从`Inspect()`推断票据历史。
|
||
- 添加禁止字段扫描和测试key哈希验证。
|
||
|
||
### 检查点4:受限转发Handler
|
||
|
||
- 先实现请求路径和manifest key白名单测试。
|
||
- 无keys的Get改写为manifest key;Set/Delete含任一越界key就在网络前整体拒绝;Set空data按no-op放行。
|
||
- H2直接断言Handler内部转发计数为0;完整Owner链检查必须使用一次性run目录,并预期计数0及Unknown冻结。
|
||
- 禁重定向、禁重试、固定Cookie归属;不打印正文和值。
|
||
|
||
### 检查点5:限定正式服
|
||
|
||
- manifest先行、双账号碰撞预检。
|
||
- 执行L1/L2正常路径。
|
||
- finally按L3清理并用双新会话读回。
|
||
- 任一Unknown按L4停止并保留manifest,不把cleanup结果改写为通过。
|
||
|
||
### 检查点6:回归和交付
|
||
|
||
- 复跑阶段2 42、3A 86、3B 29。
|
||
- Unity CLI Loop编译。
|
||
- 生成源码hash和实施记录。
|
||
- 停止开发,交主会话代码审查;不进入阶段4。
|
||
|
||
## 4. 必跑命令
|
||
|
||
方案审查通过后,实施记录必须列出实际命令和退出码:
|
||
|
||
```powershell
|
||
dotnet run --project C:/projects/ft/CodexOutput/upserver/KVStage3CTests/KVStage3CTests.csproj -- --offline
|
||
dotnet run --project C:/projects/ft/CodexOutput/upserver/KVStage3CTests/KVStage3CTests.csproj -- --live-s101
|
||
dotnet run --project C:/projects/ft/CodexOutput/upserver/KVContractTests/KVContractTests.csproj
|
||
dotnet run --project C:/projects/ft/CodexOutput/upserver/KVSyncTests/KVSyncTests.csproj
|
||
dotnet run --project C:/projects/ft/CodexOutput/upserver/KVSyncCoordinatorTests/KVSyncCoordinatorTests.csproj
|
||
uloop compile --project-path C:/projects/ft/Client --wait-for-domain-reload true
|
||
```
|
||
|
||
`--cleanup`只在manifest遗留或清理补救时运行,不能预先伪造成功证据。
|
||
|
||
## 5. 实施交付格式
|
||
|
||
完成时只报告:
|
||
|
||
- 新增/修改文件及完整SHA256。
|
||
- 离线用例分组、数量、命令、退出码。
|
||
- 正式服manifest文件名、前缀、账号、断言数量、Unknown状态和清理结果;不报告测试值。
|
||
- 脱敏诊断字段扫描结果。
|
||
- 阶段2/3A/3B回归和Unity编译结果。
|
||
- synthetic、live和未执行项的明确区分。
|
||
- 已知限制、任何偏离、遗留manifest和清理命令。
|
||
|
||
实施者不得自行宣布阶段3C或整个阶段3最终通过。
|