test(cqrs): 补齐外部 contract gate 回归

- 新增缺少 ILogger 合同时的 generator 静默跳过覆盖

- 新增缺少 IServiceCollection 合同时的 generator 静默跳过覆盖

- 更新 CQRS 恢复文档与本轮验证记录
This commit is contained in:
gewuyou 2026-05-04 19:15:32 +08:00
parent 915d93d06d
commit 61cc1be1e5
3 changed files with 41 additions and 4 deletions

View File

@ -2350,6 +2350,12 @@ public class CqrsHandlerRegistryGeneratorTests
[TestCase( [TestCase(
"[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]", "[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]",
"[AttributeUsage(AttributeTargets.Assembly)]")] "[AttributeUsage(AttributeTargets.Assembly)]")]
[TestCase(
"public interface ILogger",
"rename:MissingILogger")]
[TestCase(
"public interface IServiceCollection",
"rename:MissingServiceCollection")]
public void Does_Not_Generate_Registry_When_Runtime_Lacks_Required_Generation_Contract( public void Does_Not_Generate_Registry_When_Runtime_Lacks_Required_Generation_Contract(
string startMarker, string startMarker,
string endMarker) string endMarker)

View File

@ -7,7 +7,7 @@ CQRS 迁移与收敛。
## 当前恢复点 ## 当前恢复点
- 恢复点编号:`CQRS-REWRITE-RP-080` - 恢复点编号:`CQRS-REWRITE-RP-081`
- 当前阶段:`Phase 8` - 当前阶段:`Phase 8`
- 当前 PR 锚点:`PR #307` - 当前 PR 锚点:`PR #307`
- 当前结论: - 当前结论:
@ -15,8 +15,9 @@ CQRS 迁移与收敛。
- `dispatch/invoker` 生成前移已扩展到 request / stream 路径,`RP-077` 已补齐 request invoker provider gate 与 stream gate 对称的 descriptor / descriptor entry runtime 合同回归 - `dispatch/invoker` 生成前移已扩展到 request / stream 路径,`RP-077` 已补齐 request invoker provider gate 与 stream gate 对称的 descriptor / descriptor entry runtime 合同回归
- `RP-078` 已补齐 mixed fallback metadata 在 runtime 不允许多个 fallback attribute 实例时的单字符串 attribute 回退回归 - `RP-078` 已补齐 mixed fallback metadata 在 runtime 不允许多个 fallback attribute 实例时的单字符串 attribute 回退回归
- `RP-079` 已补齐 runtime 缺少 generated handler registry interface 时的 generator 静默跳过回归 - `RP-079` 已补齐 runtime 缺少 generated handler registry interface 时的 generator 静默跳过回归
- 当前 `RP-080` 已将基础 generation gate 回归扩展到 notification handler interface、stream handler interface 与 registry attribute 缺失分支 - `RP-080` 已将基础 generation gate 回归扩展到 notification handler interface、stream handler interface 与 registry attribute 缺失分支
- `ai-plan` active 入口现以 `PR #307``RP-080` 为唯一权威恢复锚点;更早 PR 与阶段细节均以下方归档为准 - 当前 `RP-081` 已继续补齐基础 generation gate 的 logging 与 DI runtime contract 缺失分支
- `ai-plan` active 入口现以 `PR #307``RP-081` 为唯一权威恢复锚点;更早 PR 与阶段细节均以下方归档为准
## 当前活跃事实 ## 当前活跃事实
@ -68,11 +69,18 @@ CQRS 迁移与收敛。
- 备注:当前 WSL worktree 需要显式绑定 `GIT_DIR` / `GIT_WORK_TREE` 后运行 - 备注:当前 WSL worktree 需要显式绑定 `GIT_DIR` / `GIT_WORK_TREE` 后运行
- `git diff --check` - `git diff --check`
- 结果:通过 - 结果:通过
- `dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --filter "FullyQualifiedName~CqrsHandlerRegistryGeneratorTests.Does_Not_Generate_Registry_When_Runtime_Lacks_Required_Generation_Contract"`
- 结果:通过,`6/6` passed
- `python3 scripts/license-header.py --check`
- 结果:通过
- 备注:当前 WSL worktree 需要显式绑定 `GIT_DIR` / `GIT_WORK_TREE` 后运行
- `git diff --check`
- 结果:通过
## 下一推荐步骤 ## 下一推荐步骤
1. 继续处理 `PR #307` 的剩余 review 收尾,优先保持 `ai-plan` active 入口与 trace 的单一锚点一致 1. 继续处理 `PR #307` 的剩余 review 收尾,优先保持 `ai-plan` active 入口与 trace 的单一锚点一致
2. 若继续推进代码切片,优先复核基础 generation gate 中 logging / DI 依赖是否已有合适的输入编译安全回归覆盖方式 2. 若继续推进代码切片,优先复核基础 generation gate 中 request handler contract 与 handler registry attribute 以外是否还有可安全构造的缺失分支
3. 在进入下一批 runtime / generator 收敛前,保持最小 Release build 或 targeted test 作为权威验证 3. 在进入下一批 runtime / generator 收敛前,保持最小 Release build 或 targeted test 作为权威验证
## 活跃文档 ## 活跃文档

View File

@ -134,3 +134,26 @@
1. 继续复算 branch diff vs `origin/main`,若仍低于 `25` 个文件可继续下一批 1. 继续复算 branch diff vs `origin/main`,若仍低于 `25` 个文件可继续下一批
2. 下一批优先复核基础 generation gate 中 logging / DI 依赖是否已有合适的输入编译安全回归覆盖方式 2. 下一批优先复核基础 generation gate 中 logging / DI 依赖是否已有合适的输入编译安全回归覆盖方式
### 阶段:基础 generated registry external contract gate 回归CQRS-REWRITE-RP-081
- 延续 `RP-080` 的参数化基础 generation gate 测试,将外部 logging / DI 依赖也纳入同一组静默跳过回归
- 已补齐缺失分支:
- `GFramework.Core.Abstractions.Logging.ILogger`
- `Microsoft.Extensions.DependencyInjection.IServiceCollection`
- 两个变体均通过类型重命名构造 runtime metadata miss保持输入源码可编译避免把依赖缺失测试误写成编译失败测试
### 验证RP-081
- `dotnet test GFramework.SourceGenerators.Tests/GFramework.SourceGenerators.Tests.csproj -c Release --filter "FullyQualifiedName~CqrsHandlerRegistryGeneratorTests.Does_Not_Generate_Registry_When_Runtime_Lacks_Required_Generation_Contract"`
- 结果:通过,`6/6` passed
- `python3 scripts/license-header.py --check`
- 结果:通过
- 备注:当前 WSL worktree 需要显式绑定 `GIT_DIR` / `GIT_WORK_TREE` 后运行
- `git diff --check`
- 结果:通过
### 当前下一步RP-081
1. 继续复算 branch diff vs `origin/main`,若仍低于 `25` 个文件可继续下一批
2. 下一批优先复核基础 generation gate 中 request handler contract 与 handler registry attribute 以外是否还有可安全构造的缺失分支