Files
ft/CodexOutput/upserver/阶段4A构建依赖最小差异方案-2026-09-23.md

61 lines
3.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.
# 4A构建依赖最小差异方案
日期:2026-09-23。状态:**待用户指定外部AI差异评审;未修改代码或csproj。**
原4A设计已审通过;3C/G3已通过。本差异仅补文件边界,不重新设计接口和生命周期。
## 1. 问题证据
原4A计划新增PlayerKVLocalReadResult.cs,并在PlayerKVSessionOwner.cs新增返回该类型的ReadLocalSnapshot()。下列3个独立测试项目显式链接Owner源码,却只自动包含其自身项目目录源码,不能自动编译Client目录内新增结果类型:
| 受影响项目 | 当前SHA256 |
|---|---|
| KVSyncCoordinatorTests/KVSyncCoordinatorTests.csproj | EDD94D2C694A2A960F94EF7F8B1B0529114F9573F989A51C57CCFE57889D8C4D |
| KVSyncCoordinatorReviewTests/KVSyncCoordinatorReviewTests.csproj | 27CC1AF41AC658EA9B8DE1ACB35E37058C294A93D30E232D42B9AFCBDD95A1E6 |
| KVStage3CTests/KVStage3CTests.csproj | 27CC1AF41AC658EA9B8DE1ACB35E37058C294A93D30E232D42B9AFCBDD95A1E6 |
路径均相对CodexOutput/upserver。完整显式Compile列表见[只读核对JSON](阶段4A开工依赖核对-2026-09-23.json)。
检索命令:rg -l 'PlayerKVSessionOwner.cs' CodexOutput -g '*.csproj',命中上述3个项目。
没有发现这些项目已引用结果类型或自动包含整个Client源码目录的配置。
## 2. 路线比较与推荐
| 路线 | 影响 | 裁决建议 |
|---|---|---|
| A:三个csproj各新增一条显式Compile引用 | 保持结果类型独立文件和现有真实源码测试方式;只补必要依赖 | **推荐** |
| B:把结果类型定义塞入Owner.cs | 避免csproj改动,但偏离已审独立文件布局,增加Owner文件职责 | 不采用 |
| C:全局Directory.Build.targets或源码通配符 | 间接影响不相关测试,扩大编译集合,边界难核验 | 不采用 |
## 3. 精确修改内容(待批准)
仅扩大原4A文件白名单,新增允许修改:
1. CodexOutput/upserver/KVSyncCoordinatorTests/KVSyncCoordinatorTests.csproj
2. CodexOutput/upserver/KVSyncCoordinatorReviewTests/KVSyncCoordinatorReviewTests.csproj
3. CodexOutput/upserver/KVStage3CTests/KVStage3CTests.csproj
每个文件只新增相同一行,在Owner引用相邻位置:
<Compile Include="../../../Client/Assets/Scripts/Services/PlayerData/PlayerKVLocalReadResult.cs" Link="Production/PlayerKVLocalReadResult.cs" />
约束:
- 不改三个测试项目的Program.cs、断言、目标框架、NuGet引用和运行行为。
- 不给它们添加GameSessionBridge引用;旧测试只需Owner新增返回类型的依赖。
- 新KVGameBridgeTests按原计划显式引用全部必要生产文件,包括结果类型和桥接类。
- 原有Owner仅增加只读接口,State/Cache/Coordinator/Client及游戏入口边界不变。
- 历史3C manifest、result/log、hash基线不修改;4A另外记录旧/新hash。csproj变化属于4A依赖接线,不冒充3C修复。
- 不利用共享props/targets、条件编译、复制生产类型或通配符规避白名单。
## 4. 完成效果与验收补充
- 新Owner接口和独立结果类型能被Unity及三个旧测试项目同时编译。
- 原阶段2 42、3A 86、3B 29、修复后的3C离线,以及KVSyncCoordinatorReviewTests现有测试全部保留并通过。
- 新KVGameBridgeTests完成A1–A12;Unity CLI Loop编译通过。
- 三个csproj差异只含上述一条Compile;测试Program和未授权生产文件hash不变。
- 所有4A网络均为合成替身;不重跑正式服、不打包。
## 5. 差异裁决前的状态
3C/G3正式关闭;4A设计仍通过,但代码实施等待本差异补充评审。原任务书前置门需增加“构建依赖差异评审并裁决”;不得提前把任务书标为已批准实施。
评审只需确认这三处构建依赖是否必要、路径正确、边界足够和验收完整。通过后由主会话落盘裁决并实施,不必再次审已通过的完整4A架构。