61 lines
3.8 KiB
Markdown
61 lines
3.8 KiB
Markdown
# 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架构。 |