3.8 KiB
3.8 KiB
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。 检索命令:rg -l 'PlayerKVSessionOwner.cs' CodexOutput -g '*.csproj',命中上述3个项目。 没有发现这些项目已引用结果类型或自动包含整个Client源码目录的配置。
2. 路线比较与推荐
| 路线 | 影响 | 裁决建议 |
|---|---|---|
| A:三个csproj各新增一条显式Compile引用 | 保持结果类型独立文件和现有真实源码测试方式;只补必要依赖 | 推荐 |
| B:把结果类型定义塞入Owner.cs | 避免csproj改动,但偏离已审独立文件布局,增加Owner文件职责 | 不采用 |
| C:全局Directory.Build.targets或源码通配符 | 间接影响不相关测试,扩大编译集合,边界难核验 | 不采用 |
3. 精确修改内容(待批准)
仅扩大原4A文件白名单,新增允许修改:
- CodexOutput/upserver/KVSyncCoordinatorTests/KVSyncCoordinatorTests.csproj
- CodexOutput/upserver/KVSyncCoordinatorReviewTests/KVSyncCoordinatorReviewTests.csproj
- 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架构。