GFramework/ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
gewuyou 092946e91a docs(cqrs-benchmarks): 同步startup基准文档边界
- 更新 README 中 stream/request/notification startup benchmark 的覆盖矩阵与适用边界

- 补充 cqrs-rewrite public tracking 与 trace,记录本轮误报剔除、docs-only 收尾与停止判断
2026-05-12 14:18:18 +08:00

6.8 KiB
Raw Blame History

CQRS 重写迁移跟踪

目标

围绕 GFramework 当前的双轨 CQRS 现状,继续完成以“去外部依赖、降低反射、收口公开入口”为目标的 CQRS 迁移与收敛。

当前恢复点

  • 恢复点编号:CQRS-REWRITE-RP-139
  • 当前阶段:Phase 8
  • 当前 PR 锚点:PR #349已于 2026-05-12 合并到 origin/main
  • 当前结论:
    • 本轮按 $gframework-batch-boot 50 恢复后,先重新确认基线仍为 origin/main @ 2b2bec65 (2026-05-12 11:49:39 +0800),当前已提交 branch diff 为 14 files,仍远低于 50 files 阈值;是否继续的主停止信号仍是 context-budget / reviewability而不是 branch-size 预算。
    • 主线程结合本地抽样核对与两个 explorer 子代理的只读盘点后确认当前不应再继续按“benchmark XML <returns> 批量缺口”扩批:
      • README 一致性盘点成立,GFramework.Cqrs.Benchmarks/README.md 的 startup coverage / 解释边界仍可收紧
      • benchmark XML 缺口盘点存在明显误报;代表文件中的 class / benchmark 方法 <summary><returns> 已实际存在
      • 因此本轮不接受新的大范围 XML 收口波次,避免把上下文预算消耗在错误候选上
    • 本轮 accepted delegated scope 收敛为单文件 docs-only worker
      • GFramework.Cqrs.Benchmarks/README.md
        • 明确 StreamStartupBenchmarks 现已覆盖 MediatRGFramework.Cqrs reflection、 GFramework.Cqrs generated、NuGet Mediator 四组 initialization / cold-start 对照
        • 补充 RequestStartupBenchmarksNotificationStartupBenchmarksGFramework.Cqrs 路径是“单 handler 最小宿主 + 手工注册”的 startup / cold-start 模型,不外推到程序集扫描、 完整注册协调器、fan-out 或发布策略变体
    • 当前决定在该 docs-only 收口后停在自然边界:
      • branch-size 仍低于 50 files
      • 但下一批低风险候选已不再清晰;继续开波次的收益低于评审与上下文成本
    • tests 侧此前已补齐并提交:
      • CqrsRegistrationServiceTests:补空输入、空项过滤、稳定键排序与跨调用跳过边界
      • CqrsHandlerRegistrarTestsCqrsHandlerRegistrarFallbackFailureTests 补 abstract registry 与缺少无参构造器 registry 的回退 / 抛错覆盖
      • CqrsNotificationPublisherTests:补“零 publisher 回退到默认顺序发布器并缓存”回归
    • benchmark 侧此前已补齐并提交:
      • StreamPipelineBenchmarks
      • StreamingBenchmarks 的 steady-state Mediator 对照
      • GFramework.Cqrs.Benchmarks/README.md 的 stream coverage / gap 同步
      • StreamStartupBenchmarksMediator initialization / cold-start 对照
    • 本轮未修改 GFramework.Cqrs 运行时代码notification fallback 与 generated registry 激活守卫均由新回归证明现有实现已满足预期。

当前活跃事实

  • 当前分支:feat/cqrs-optimization
  • 当前 PRPR #349已合并当前分支暂无新的公开 PR
  • 当前写面:
    • GFramework.Cqrs.Benchmarks/README.md
    • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
    • ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md
  • 当前基线:
    • origin/main @ 2b2bec65 (2026-05-12 11:49:39 +0800)
    • 当前已提交 branch diff14 files
    • 当前分支比 origin/main5 个提交:f346110aa016e3d4ab422b05555c7c07c32a1ec4
    • 当前未提交面由 benchmark README 的 startup 边界同步与 ai-plan 恢复点更新构成
  • 本轮提交:
    • f346110a feat(cqrs-benchmarks): 补齐 stream startup 的 Mediator 对照路径
    • ab422b05 docs(cqrs-benchmarks): 补齐 request benchmark 返回值注释
    • 555c7c07 docs(cqrs-benchmarks): 补齐 request benchmark 返回值文档
    • c32a1ec4 docs(cqrs-benchmarks): 补齐stream与notification基准返回值文档

当前风险

  • StreamStartupBenchmarksMediator parity 目前只做了编译验证,尚未单独执行 benchmark 作业确认 startup 矩阵运行结果。
  • StreamLifetimeBenchmarks 仍缺 Mediator parity该项涉及 BenchmarkHostFactory 与 compile-time lifetime 形状,不再是本轮低风险切片。
  • benchmark XML 盘点若再次依赖粗糙脚本或只读 inventory仍有把已存在文档误记为缺口的风险后续若再开 XML 波次,必须先用主线程抽样核对代表文件。
  • 本轮已在 README 精度同步后主动停批次;若后续恢复,优先先做 StreamStartupBenchmarks smoke run 或更明确的 parity / docs 候选,而不是继续机械扩张 XML 批次。

最近权威验证

  • dotnet build GFramework.Cqrs.Benchmarks/GFramework.Cqrs.Benchmarks.csproj -c Release
    • 结果:通过,0 warning / 0 error
  • python3 scripts/license-header.py --check
    • 结果:通过
  • $gframework-pr-review
    • 结果:PR #349 已关闭latest-head review open thread 经本地核对仅剩 StreamingBenchmarks.Stream_MediatR() 的 XML 文档缺口仍成立
  • git --git-dir=/mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/GFramework/.git/worktrees/GFramework-cqrs --work-tree=/mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/GFramework-WorkTree/GFramework-cqrs diff -- GFramework.Cqrs.Benchmarks/README.md
    • 结果:通过
    • 备注:确认本轮 worker 仅修改 README 的 startup coverage / 边界文案

下一推荐步骤

  1. 串行运行 dotnet build GFramework.Cqrs.Benchmarks/GFramework.Cqrs.Benchmarks.csproj -c Releasepython3 scripts/license-header.py --check --paths ...git diff --check,作为本轮 docs-only 收尾的权威验证。
  2. 提交当前 README 与 ai-plan 更新,回到干净工作树。
  3. 若后续继续 benchmark 波次,优先单独执行 StreamStartupBenchmarks 的最小 smoke run验证新加 Mediator startup 路径可运行。
  4. 若后续再开文档批次,先用主线程核对代表文件,再决定是否存在真实 XML 缺口;不要直接沿用误报 inventory 扩批。

活跃文档

  • 当前 active trackingai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
  • 当前 active traceai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md
  • 当前历史归档:
    • ai-plan/public/cqrs-rewrite/archive/todos/cqrs-rewrite-migration-tracking-history-through-rp131.md
    • ai-plan/public/cqrs-rewrite/archive/traces/cqrs-rewrite-migration-trace-history-through-rp131.md

说明

  • RP-131 及之前的长历史验证、阶段流水与旧恢复点说明已迁移到新的 archive/ 文件,不再继续堆叠在 active 入口。
  • active tracking 现在只保留当前恢复点所需的最小事实、风险、权威验证与下一步,供 boot 与后续 PR review 快速恢复。