Skip to content

feat: CQRS cache hardening、ai-plan governance#253

Merged
GeWuYou merged 13 commits into
mainfrom
feat/cqrs-optimization
Apr 19, 2026
Merged

feat: CQRS cache hardening、ai-plan governance#253
GeWuYou merged 13 commits into
mainfrom
feat/cqrs-optimization

Conversation

@GeWuYou
Copy link
Copy Markdown
Owner

@GeWuYou GeWuYou commented Apr 18, 2026

Summary by CodeRabbit

发布说明

  • 新功能

    • 添加 GFramework 启动工作流 Codex 技能,支持 AI 任务恢复工件管理系统
    • 添加 PR 审查 Codex 技能,集成 GitHub API 和 CodeRabbit 评审信息
    • 建立 ai-plan/ 目录结构与工作流规范,用于管理任务恢复和追踪文档
  • 文档更新

    • 更新大量文档中的源生成器命名空间引用
    • 完善 AGENTS.md 和仓库根目录文档以支持新工作流
  • 配置调整

    • 调整 .gitignore 规则以支持新的 ai-plan/ 目录结构
    • 更新项目配置以排除第三方参考库路径

GeWuYou added 4 commits April 18, 2026 22:23
- 新增 ai-libs 目录作为第三方源码只读参考区的仓库约束
- 更新第三方参考说明并要求在计划与 trace 中记录本地参考路径
- 排除 ai-libs 目录
- 新增项目级 .codex/skills/gframework-boot 启动 skill,统一读取 AGENTS.md、环境清单与 local-plan 恢复信息
- 补充任务复杂度分级与 subagent/model 选择规则,约束 boot 阶段的委派流程
- 更新 AGENTS.md 中的 boot 入口约定,明确 skill 与仓库规则的优先级关系
- 配置包的基本信息包括ID、作者、描述和许可证
- 设置多目标框架支持net8.0、net9.0和net10.0
- 定义包发布相关属性如仓库URL和自动生成包
- 排除多个子目录和测试项目避免参与编译打包
- 聚合核心模块GFramework.Core和GFramework.Game作为项目引用
- 配置README.md文件包含到包中并设置符号包含选项
- 更新 docs/zh-CN 中 source generator 示例的命名空间到当前公开 API
- 修正文档叙述与 API 参考中的旧聚合模块表述
- 对齐 source generator 家族文档与教程示例的当前模块划分
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 18, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

此拉取请求引入了AI计划治理和PR审查工作流的基础设施,涉及新的Codex技能定义、目录结构约定和恢复工件管理。同时,大量更新文档和模板中源生成器的命名空间,从 GFramework.SourceGenerators.Abstractions 迁移至 GFramework.Core.SourceGenerators.Abstractions。新增了配置文件、追踪文档和恢复点记录。

Changes

Cohort / File(s) Summary
Codex 技能:GFramework 启动
.codex/skills/gframework-boot/SKILL.md, .codex/skills/gframework-boot/agents/openai.yaml, .codex/skills/gframework-boot/references/startup-artifacts.md
新增 gframework-boot 技能文档,定义了仓库启动与任务恢复的工作流,包含启动顺序、ai-plan 工件选择启发式、任务状态和复杂度分类、代理委派规则和恢复点处理指导。
Codex 技能:GFramework PR 审查
.codex/skills/gframework-pr-review/SKILL.md, .codex/skills/gframework-pr-review/agents/openai.yaml, .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py
新增 gframework-pr-review 技能文档和 Python 脚本,用于从 GitHub API 获取当前分支 PR 的 CodeRabbit 评审、测试报告和审查线程数据,支持多种输出格式和错误恢复。
AI 计划目录结构和文档
ai-plan/README.md, ai-plan/public/README.md, ai-plan/public/ai-plan-governance/todos/..., ai-plan/public/ai-plan-governance/traces/..., ai-plan/public/cqrs-rewrite/todos/..., ai-plan/public/archive/cqrs-cache-docs-hardening/...
新增 ai-plan 目录约定文档,定义了公共/私有恢复工件语义、工作流规则和内容约束;添加了主题映射索引、治理追踪、CQRS 迁移追踪和存档工作的恢复点记录。
仓库配置更新
.gitignore, AGENTS.md, README.md
更新 .gitignore 以支持新的 ai-plan 目录结构;更新 AGENTS.md 添加启动技能、ai-libs 只读参考策略和任务追踪约定迁移;更新 README.md 贡献指南以引用新的 ai-plan 位置。
项目文件配置
GFramework.csproj
<None><Compile><EmbeddedResource> 项类型添加 ai-libs\** 排除规则;调整多个项元素的格式(空格对齐)。
源生成器命名空间迁移
docs/zh-CN/api-reference/index.md, docs/zh-CN/best-practices/*, docs/zh-CN/core/*, docs/zh-CN/ecs/*, docs/zh-CN/game/*, docs/zh-CN/godot/*, docs/zh-CN/source-generators/*, docs/zh-CN/tutorials/*, GFramework.Core.Abstractions/Controller/IController.cs, Godot/script_templates/Node/*
大规模更新 C# using 指令和文档示例,将 GFramework.SourceGenerators.Abstractions.* 更改为 GFramework.Core.SourceGenerators.Abstractions.*;更新 API 参考文档以反映源生成器包的模块拆分。
第三方许可证
third-party-licenses/Mediator/LICENSE
添加新的 Mediator 库 MIT 许可证文件。

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant GFrameworkBoot as gframework-boot Skill
    participant LocalRepo as Local Repository
    participant AIPlans as ai-plan Artifacts

    User->>GFrameworkBoot: 启动或恢复工作
    GFrameworkBoot->>LocalRepo: 读取 AGENTS.md
    GFrameworkBoot->>LocalRepo: 读取 .ai/environment/tools.ai.yaml
    GFrameworkBoot->>AIPlans: 读取 ai-plan/public/README.md
    GFrameworkBoot->>AIPlans: 根据分支/工作树映射到主题
    alt 找到主题映射
        GFrameworkBoot->>AIPlans: 按优先级读取 todos/ 和 traces/
    else 未找到映射
        GFrameworkBoot->>AIPlans: 扫描所有活跃主题(忽略 archive/)
    end
    GFrameworkBoot->>AIPlans: 访问 ai-plan/private/<branch>/ 作为私有恢复上下文
    GFrameworkBoot->>User: 报告任务状态、复杂度分类和第一步计划
Loading
sequenceDiagram
    participant User
    participant PRReviewSkill as gframework-pr-review Skill
    participant LocalGit as Local Git
    participant GitHubAPI as GitHub API
    participant CodeRabbit as CodeRabbit Bot

    User->>PRReviewSkill: 检查当前 PR 审查
    PRReviewSkill->>LocalGit: 确定当前分支
    PRReviewSkill->>GitHubAPI: 根据分支查询 PR 号
    PRReviewSkill->>GitHubAPI: 获取 PR 元数据和评论
    GitHubAPI-->>CodeRabbit: CodeRabbit 评审数据
    PRReviewSkill->>GitHubAPI: 获取最新提交的审查线程
    PRReviewSkill->>CodeRabbit: 解析失败检查、可操作注释和测试报告
    PRReviewSkill->>User: 返回汇总结果(文本或 JSON)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • PR #220: 同时修改 AGENTS.md 的任务追踪和恢复文档约定,从 local-plan/ 迁移到 ai-plan/ 目录结构,与本 PR 在同一仓库启动/任务追踪规则上有重叠。
  • PR #217: 同时修改 AGENTS.md 中的子代理委派规则,本 PR 中的 gframework-boot 技能定义直接关联到该 PR 添加的委派规则。
  • PR #235: 同时进行源生成器命名空间/项目布局迁移到 GFramework.Core.SourceGenerators,更新 using 指令、csproj 引用和生成器相关文件,与本 PR 的大量命名空间更新一致。
🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 标题清晰准确地总结了变更的主要内容:CQRS 缓存加固和 AI 计划治理流程的建立。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cqrs-optimization

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 1ms

Test Results

passed 2103 passed

Details

tests 2103 tests
clock 35.5s
tool nunit
build CI - Build & Test arrow-right build-and-test link #878
pull-request Feat/cqrs optimization link #253

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2103 0 0 3.7s

build-and-test: Run #878

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 0 35.5s

🎉 All tests passed!

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
SendRequestAsync_Should_ResolveCqrsRuntime_OnlyOnce_When_AccessedConcurrently 1 3.7s 3.7s
Does_Not_Report_When_FieldInjectedModel_Is_Registered 1 2.2s 2.2s
Generates_Scene_Behavior_Boilerplate 1 1.9s 1.9s
CleanupDuringAcquire_Should_NotCauseRaceCondition 1 1.1s 1.1s
Append_ShouldNotBlock 1 1.0s 1.0s
Context_Caching_Should_Improve_Performance 1 778ms 778ms
PendingCount_ShouldReflectQueuedEntries 1 501ms 501ms
Cleanup_Should_NotRemoveActiveLocks 1 405ms 405ms
Cleanup_Should_RemoveUnusedLocks 1 401ms 401ms
Generates_Precise_Assembly_Type_Lookups_For_Inaccessible_External_Protected_Types 1 327ms 327ms

🎉 No failed tests in this run. | 🍂 No flaky tests in this run.

Github Test Reporter by CTRF 💚

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 18, 2026

⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Warnings Elapsed time
⚠️ CSHARP dotnet-format yes 1 no 0.75s
✅ REPOSITORY gitleaks yes no no 3.61s
✅ REPOSITORY trufflehog yes no no 3.99s

Detailed Issues

⚠️ CSHARP / dotnet-format - 1 error
Welcome to .NET 9.0!
---------------------
SDK Version: 9.0.114

----------------
Installed an ASP.NET Core HTTPS development certificate.
To trust the certificate, run 'dotnet dev-certs https --trust'
Learn about HTTPS: https://aka.ms/dotnet-https

----------------
Write your first app: https://aka.ms/dotnet-hello-world
Find out what's new: https://aka.ms/dotnet-whats-new
Explore documentation: https://aka.ms/dotnet-docs
Report issues and find source on GitHub: https://github.com/dotnet/core
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------
Unhandled exception: System.IO.FileNotFoundException: Both a MSBuild project file and solution file found in ''. Specify which to use with the <workspace> argument.
   at Microsoft.CodeAnalysis.Tools.Workspaces.MSBuildWorkspaceFinder.FindWorkspace(String searchDirectory, String workspacePath)
   at Microsoft.CodeAnalysis.Tools.Workspaces.MSBuildWorkspaceFinder.FindWorkspace(String searchDirectory, String workspacePath)
   at Microsoft.CodeAnalysis.Tools.FormatCommandCommon.ParseWorkspaceOptions(ParseResult parseResult, FormatOptions formatOptions)
   at Microsoft.CodeAnalysis.Tools.Commands.RootFormatCommand.FormatCommandDefaultHandler.InvokeAsync(ParseResult parseResult, CancellationToken cancellationToken)
   at System.CommandLine.Invocation.InvocationPipeline.InvokeAsync(ParseResult parseResult, CancellationToken cancellationToken)

See detailed reports in MegaLinter artifacts
Set VALIDATE_ALL_CODEBASE: true in mega-linter.yml to validate all sources, not only the diff

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
.codex/skills/gframework-boot/SKILL.md (1)

48-48: 建议统一 resumerecovery 的判定语义。

Line 48 把 next step/continue 直接映射为 recovery,和 Line 20 的 resume 定义有重叠。建议改成“先检索 local-plan/,再判定为 resume 或 recovery”。

✏️ 建议文案调整
-- If the user says `next step`, `continue`, `继续`, or similar resume language, assume recovery mode and search `local-plan/` first.
+- If the user says `next step`, `continue`, `继续`, or similar resume language, search `local-plan/` first, then classify the task as `resume` or `recovery` based on artifact clarity and continuity.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.codex/skills/gframework-boot/SKILL.md at line 48, Unify the semantics for
resume vs recovery: change the Line 48 wording that currently maps phrases like
"next step", "continue", "继续" directly to recovery so that it instead states to
first search local-plan/ and then determine whether the interaction should be
treated as resume or recovery; update the document text to reference both
"resume" and "recovery" semantics consistently (keeping the original examples
"next step"/"continue"/"继续" and the keyword "resume") and ensure the guidance
reads "search local-plan/ first, then decide resume or recovery" rather than
unconditionally assuming recovery.
AGENTS.md (1)

304-305: 建议收窄 active plan/trace 记录条件,避免执行歧义。

Line 304-305 当前表述容易被理解为所有任务都必须有 active plan/trace。建议补充“针对多步/复杂任务或已存在 active 文档时”再强制记录,避免和轻量任务流程冲突。

Based on learnings: “For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under local-plan/todos/ before making substantive code changes.”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@AGENTS.md` around lines 304 - 305, Narrow the guideline about recording
observations from `ai-libs/**` by making it conditional: only require recording
the referenced path and conclusion in the active plan/trace when the change is a
multi-step or complex task (e.g., refactor, migration, cross-module work) or
when an active plan/trace document already exists; also add the explicit mandate
that for any multi-step refactor/migration/cross-module task contributors MUST
create or adopt a dedicated recovery document under `local-plan/todos/` before
making substantive code changes, and update the sentence containing `ai-libs/**`
and `active plan/trace` to reflect these conditions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/zh-CN/best-practices/performance.md`:
- Line 281: Update the outdated namespace references: search for occurrences of
the old namespace "GFramework.SourceGenerators.Abstractions.Rule" used in the
ControllerTemplate, PageControllerTemplate and the IController documentation
comment, and replace them with the new namespace
"GFramework.Core.SourceGenerators.Abstractions.Rule"; ensure the using/import
statements and any XML/doc comments referencing the old namespace are changed so
the templates (ControllerTemplate, PageControllerTemplate) and the IController
interface docs all consistently reference the new namespace.

---

Nitpick comments:
In @.codex/skills/gframework-boot/SKILL.md:
- Line 48: Unify the semantics for resume vs recovery: change the Line 48
wording that currently maps phrases like "next step", "continue", "继续" directly
to recovery so that it instead states to first search local-plan/ and then
determine whether the interaction should be treated as resume or recovery;
update the document text to reference both "resume" and "recovery" semantics
consistently (keeping the original examples "next step"/"continue"/"继续" and the
keyword "resume") and ensure the guidance reads "search local-plan/ first, then
decide resume or recovery" rather than unconditionally assuming recovery.

In `@AGENTS.md`:
- Around line 304-305: Narrow the guideline about recording observations from
`ai-libs/**` by making it conditional: only require recording the referenced
path and conclusion in the active plan/trace when the change is a multi-step or
complex task (e.g., refactor, migration, cross-module work) or when an active
plan/trace document already exists; also add the explicit mandate that for any
multi-step refactor/migration/cross-module task contributors MUST create or
adopt a dedicated recovery document under `local-plan/todos/` before making
substantive code changes, and update the sentence containing `ai-libs/**` and
`active plan/trace` to reflect these conditions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 22248c22-d3ba-488b-9afb-73f86a15b15c

📥 Commits

Reviewing files that changed from the base of the PR and between c0ef3b5 and 4eca2f1.

📒 Files selected for processing (40)
  • .codex
  • .codex/skills/gframework-boot/SKILL.md
  • .codex/skills/gframework-boot/agents/openai.yaml
  • .codex/skills/gframework-boot/references/startup-artifacts.md
  • .gitignore
  • AGENTS.md
  • GFramework.csproj
  • docs/zh-CN/api-reference/index.md
  • docs/zh-CN/best-practices/architecture-patterns.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/best-practices/performance.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/core/configuration.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/core/pause.md
  • docs/zh-CN/core/property.md
  • docs/zh-CN/core/query.md
  • docs/zh-CN/core/state-machine.md
  • docs/zh-CN/core/state-management.md
  • docs/zh-CN/core/system.md
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/game/scene.md
  • docs/zh-CN/game/serialization.md
  • docs/zh-CN/game/ui.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/source-generators/bind-node-signal-generator.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/tutorials/basic/04-model-refactor.md
  • docs/zh-CN/tutorials/basic/05-command-system.md
  • docs/zh-CN/tutorials/godot-complete-project.md
  • docs/zh-CN/tutorials/pause-system.md
  • docs/zh-CN/tutorials/state-machine-tutorial.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Code Quality & Security
  • GitHub Check: Analyze (C#)
🧰 Additional context used
📓 Path-based instructions (2)
docs/**/*.md

📄 CodeRabbit inference engine (CLAUDE.md)

Documentation should be organized with Chinese content in docs/zh-CN/ and structured to include getting started, module-specific capabilities (Core, Game, Godot, ECS), source generator usage, tutorials, best practices, and troubleshooting

Files:

  • docs/zh-CN/tutorials/godot-complete-project.md
  • docs/zh-CN/tutorials/basic/04-model-refactor.md
  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/core/configuration.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/game/scene.md
  • docs/zh-CN/best-practices/performance.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/tutorials/basic/05-command-system.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/tutorials/state-machine-tutorial.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/api-reference/index.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/core/property.md
  • docs/zh-CN/best-practices/architecture-patterns.md
  • docs/zh-CN/core/query.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/source-generators/bind-node-signal-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/game/ui.md
  • docs/zh-CN/game/serialization.md
  • docs/zh-CN/core/state-machine.md
  • docs/zh-CN/core/state-management.md
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/tutorials/pause-system.md
  • docs/zh-CN/core/pause.md
  • docs/zh-CN/core/system.md
**/*.csproj

📄 CodeRabbit inference engine (AGENTS.md)

Follow repository defaults: ImplicitUsings disabled, Nullable enabled, GenerateDocumentationFile enabled for shipped libraries, LangVersion generally preview in main libraries

Files:

  • GFramework.csproj
🧠 Learnings (32)
📓 Common learnings
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Before choosing runtimes or CLI tools, read `@.ai/environment/tools.ai.yaml` for project-relevant tool inventory
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When working in WSL against Windows-backed worktree, prefer Windows Git from WSL (`git.exe`) instead of Linux `git` binary
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Every completed task MUST pass at least one build validation before it is considered done
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Commit messages MUST use Conventional Commits format: `<type>(<scope>): <summary>` with summary in simplified Chinese
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Commit body MUST use unordered list items starting with verbs such as `新增`、`修复`、`优化`、`更新`、`补充`、`重构`; keep technical terms in English
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When starting new task on `main` branch, update local `main` from remote first, then create dedicated branch before making substantive changes
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Branch naming rule for new task branch is `<type>/<topic-or-scope>`, where `<type>` matches Conventional Commit category
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Prefer invoking `$gframework-boot` when user uses short startup prompts such as `boot`, `continue`, `next step`, `按 boot 开始`, `先看 AGENTS`, `继续当前任务`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Use `explorer` subagents for read-only discovery, comparison, tracing, and narrow codebase questions; use `worker` subagents only for bounded implementation tasks
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Every delegation MUST specify concrete objective, expected output format, files/subsystem ownership, and constraints about tests, diagnostics, or compatibility
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Core framework components (Architecture, Module, System, Context, Registry, Service Module, Lifecycle types) MUST include high-level explanations of responsibilities, lifecycle, interactions, and when to use instead of alternatives
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Generated logic and source generator pipelines MUST explain what is generated, why it is generated, semantic assumptions, and diagnostics/fallback behavior
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Keep abstractions projects free of implementation details and engine-specific dependencies
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Preserve existing module boundaries; do not introduce new cross-module dependencies without clear architectural need
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Every non-trivial feature, bug fix, or behavior change MUST include tests or an explicit justification for why a test is not practical
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Public API changes must be covered by unit or integration tests
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Minimize new package dependencies; add them only when necessary and keep scope narrow
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Treat source code, *.csproj, tests, generated snapshots, and packaging metadata as primary evidence for documentation updates
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Every user-facing package or module directory containing a *.csproj intended for direct consumption MUST have a sibling `README.md`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Use canonical filename `README.md` for module documentation; do not introduce variants like `ReadMe.md`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Module README MUST describe: the module's purpose, relationship to adjacent packages, major subdirectories/subsystems, minimum adoption path, and corresponding `docs/zh-CN/` entry points
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Adding a new top-level module directory without a `README.md` is considered incomplete work
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: If a module's responsibilities, setup, public API surface, generator inputs, or adoption path change, update that module's `README.md` in the same change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Update the relevant `README.md` or `docs/` page when behavior, setup steps, architecture guidance, or user-facing examples change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Treat `ai-libs/` as a read-only third-party source reference area; do not modify it unless user explicitly asks to sync or update
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When implementation plans, traces, reviews, or design notes reference a third-party project, prefer the repository-local path under `ai-libs/` instead of unspecified upstream
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Keep code samples, package names, and command examples in documentation aligned with the current repository state
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Prefer documenting behavior and design intent, not only API surface
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: For integration-oriented features such as AI-First config system, documentation MUST cover: project directory layout, file conventions, required wiring, minimal working usage example, and migration notes
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: If an existing documentation page no longer reflects the current implementation, fixing the code without fixing the documentation is considered incomplete work
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Do not rely on 'the code is self-explanatory' for framework features that consumers need to adopt; write the adoption path down so future users do not need to rediscover it
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Repository root `README.md` MUST mirror the current top-level documentation taxonomy used by the docs site; do not maintain a second, differently named navigation system
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Prefer linking the root `README.md` to section landing pages such as `index.md` instead of deep-linking to a single article when the target is intended to be a documentation category
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: If a docs category appears in VitePress navigation or sidebar, it MUST have a real landing page or be removed from navigation in the same change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When examples are rewritten, preserve only the parts that remain true; delete or replace speculative examples instead of lightly editing them into another inaccurate form
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Completing code changes without updating the active tracking document is considered incomplete work
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step so another contributor or subagent can continue the work safely
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work, recording current date, key decisions, validation milestones, and immediate next step
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: If subagents are used on a complex task, the main agent MUST capture the delegated scope and any accepted findings in the active recovery document or trace before continuing implementation
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T16:37:51.391Z
Learning: Before considering work complete, confirm: required comments and XML docs are present, code follows repository style and naming rules, relevant tests added/updated, no security issues introduced, documentation updated
📚 Learning: 2026-04-16T13:25:59.124Z
Learnt from: GeWuYou
Repo: GeWuYou/GFramework PR: 235
File: GFramework.SourceGenerators.Tests/Rule/ContextAwareGeneratorSnapshotTests.cs:1-3
Timestamp: 2026-04-16T13:25:59.124Z
Learning: In the GeWuYou/GFramework repository, the test project `GFramework.SourceGenerators.Tests` provides `global using NUnit.Framework;` via its `GlobalUsings.cs`. Do not flag missing `using NUnit.Framework;` directives in test files within this project, as the global using already covers it. The project-wide GlobalUsings.cs pattern is used broadly to supply common namespaces (including NUnit, System.IO, etc.) without per-file imports.

Applied to files:

  • docs/zh-CN/tutorials/godot-complete-project.md
  • docs/zh-CN/tutorials/basic/04-model-refactor.md
  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/core/configuration.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/game/ui.md
  • GFramework.csproj
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/tutorials/pause-system.md
  • docs/zh-CN/core/pause.md
  • docs/zh-CN/core/system.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Use the namespace pattern `GFramework.{Module}.{Feature}` with PascalCase segments.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • GFramework.csproj
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Source generator changes MUST be covered by generator tests. Preserve snapshot-based verification patterns already used in the repository. When generator behavior changes intentionally, update snapshots together with the implementation.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/core/configuration.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/best-practices/performance.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/api-reference/index.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/best-practices/architecture-patterns.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/source-generators/bind-node-signal-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/game/serialization.md
  • docs/zh-CN/core/state-machine.md
  • GFramework.csproj
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/tutorials/pause-system.md
  • docs/zh-CN/core/pause.md
  • docs/zh-CN/core/system.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/game/scene.md
  • docs/zh-CN/best-practices/performance.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/api-reference/index.md
  • AGENTS.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/core/property.md
  • docs/zh-CN/best-practices/architecture-patterns.md
  • docs/zh-CN/core/query.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/source-generators/bind-node-signal-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/game/ui.md
  • docs/zh-CN/game/serialization.md
  • docs/zh-CN/core/state-machine.md
  • GFramework.csproj
  • docs/zh-CN/core/state-management.md
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/tutorials/pause-system.md
  • docs/zh-CN/core/pause.md
  • docs/zh-CN/core/system.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.csproj : Any change to public API, lifecycle semantics, module behavior, or extension points MUST update the related XML docs.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/godot/architecture.md
  • AGENTS.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/core/property.md
  • docs/zh-CN/best-practices/architecture-patterns.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/core/state-machine.md
  • GFramework.csproj
  • docs/zh-CN/ecs/arch.md
📚 Learning: 2026-04-06T12:45:47.739Z
Learnt from: GeWuYou
Repo: GeWuYou/GFramework PR: 190
File: GFramework.Game/Config/GameConfigBootstrap.cs:1-3
Timestamp: 2026-04-06T12:45:47.739Z
Learning: In the GFramework repository (GeWuYou/GFramework), even though `ImplicitUsings` is disabled in the `.csproj` files, the project uses a manual `GlobalUsings.cs` file with `global using` directives to provide common System namespaces (e.g., System, System.Threading, System.Threading.Tasks) project-wide. Do not flag missing System-level `using` imports in C# files within this repository, as they are covered by GlobalUsings.cs.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/core/configuration.md
  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/source-generators/priority-generator.md
  • GFramework.csproj
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/tutorials/pause-system.md
  • docs/zh-CN/core/system.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Core framework components such as Architecture, Module, System, Context, Registry, Service Module, and Lifecycle types MUST include high-level explanations of responsibilities, lifecycle, interaction with other components, why the abstraction exists, and when to use it instead of alternatives.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/ecs/arch.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.

Applied to files:

  • docs/zh-CN/source-generators/auto-register-module-generator.md
  • docs/zh-CN/game/scene.md
  • docs/zh-CN/best-practices/performance.md
  • docs/zh-CN/source-generators/enum-generator.md
  • docs/zh-CN/core/command.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/godot/architecture.md
  • AGENTS.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/core/property.md
  • docs/zh-CN/best-practices/architecture-patterns.md
  • docs/zh-CN/core/query.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/core/system.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Do not rely on implicit imports. Declare every required `using` statement explicitly. Implicit usings are disabled in the project.

Applied to files:

  • docs/zh-CN/core/configuration.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/*.cs : Apply [ContextAware] attribute to automatically implement IContextAware boilerplate logic

Applied to files:

  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/game/scene.md
  • docs/zh-CN/best-practices/performance.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/game/data.md
  • docs/zh-CN/core/query.md
  • docs/zh-CN/core/events.md
  • docs/zh-CN/best-practices/index.md
  • docs/zh-CN/source-generators/context-aware-generator.md
  • docs/zh-CN/source-generators/bind-node-signal-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • docs/zh-CN/game/ui.md
  • docs/zh-CN/core/state-machine.md
  • docs/zh-CN/ecs/arch.md
  • docs/zh-CN/core/pause.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Keep source generators deterministic and free of hidden environment or network dependencies.

Applied to files:

  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/source-generators/auto-ui-page-generator.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/source-generators/context-get-generator.md
  • GFramework.csproj
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/*.cs : Apply [Priority] attribute for automatic priority comparison implementation generation

Applied to files:

  • docs/zh-CN/source-generators/get-node-generator.md
  • docs/zh-CN/source-generators/priority-generator.md
  • docs/zh-CN/ecs/arch.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to docs/**/*.md : Documentation should be organized with Chinese content in docs/zh-CN/ and structured to include getting started, module-specific capabilities (Core, Game, Godot, ECS), source generator usage, tutorials, best practices, and troubleshooting

Applied to files:

  • docs/zh-CN/core/command.md
  • docs/zh-CN/godot/architecture.md
  • docs/zh-CN/api-reference/index.md
  • AGENTS.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/*.cs : Apply [Log] attribute for automatic logging field and logging helper method generation

Applied to files:

  • docs/zh-CN/source-generators/logging-generator.md
  • docs/zh-CN/source-generators/priority-generator.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: All coding rules must be followed strictly as defined in AGENTS.md

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Every delegation MUST specify the concrete objective, the expected output format, the files or subsystem the subagent owns, and any constraints about tests, diagnostics, or compatibility. Subagents are not allowed to revert or overwrite unrelated changes from the user or other agents. They must adapt to concurrent work instead of assuming exclusive ownership of the repository.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Use subagents only when the task is complex, the context is likely to grow too large, or the work can be split into independent parallel subtasks. The main agent MUST identify the critical path first and not delegate the immediate blocking task. Use `explorer` subagents for read-only discovery, comparison, tracing, and narrow codebase questions. Use `worker` subagents only for bounded implementation tasks with an explicit file or module ownership boundary.

Applied to files:

  • AGENTS.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: If a new task starts while the current branch is `main`, contributors MUST first try to update local `main` from the remote, then create and switch to a dedicated branch before making substantive changes. The branch naming rule for a new task branch is `<type>/<topic-or-scope>`, where `<type>` should match the intended Conventional Commit category.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.md : Update the relevant `README.md` or `docs/` page when behavior, setup steps, architecture guidance, or user-facing examples change. Keep code samples, package names, and command examples aligned with the current repository state.

Applied to files:

  • AGENTS.md
  • docs/zh-CN/best-practices/index.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to README.md : Every user-facing package or module directory that contains a `*.csproj` intended for direct consumption MUST have a sibling `README.md`. Use the canonical filename `README.md`. Do not introduce new `ReadMe.md` or other filename variants. A module README MUST describe the module's purpose, the relationship to adjacent runtime/abstractions/generator packages, the major subdirectories or subsystems, the minimum adoption path, and the corresponding `docs/zh-CN/` entry points.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.901Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.901Z
Learning: The repository root `README.md` MUST mirror the current top-level documentation taxonomy used by the docs site. Do not maintain a second, differently named navigation system in the root README. Prefer linking the root `README.md` to section landing pages such as `index.md` instead of deep-linking to a single article when the target is intended to be a documentation category. If a docs category appears in VitePress navigation or sidebar, it MUST have a real landing page or be removed from navigation in the same change.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to README.md : If a module's responsibilities, setup, public API surface, generator inputs, or adoption path change, update that module's `README.md` in the same change. Adding a new top-level module directory without a `README.md` is considered incomplete work.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step.

Applied to files:

  • AGENTS.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
  • .codex/skills/gframework-boot/SKILL.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point. Completing code changes without updating the active tracking document is considered incomplete work.

Applied to files:

  • AGENTS.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.

Applied to files:

  • .codex/skills/gframework-boot/references/startup-artifacts.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : If subagents are used on a complex task, the main agent MUST capture the delegated scope and any accepted findings in the active recovery document or trace before continuing implementation.

Applied to files:

  • .codex/skills/gframework-boot/references/startup-artifacts.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.csproj : Follow the repository defaults: `ImplicitUsings` disabled, `Nullable` enabled, `GenerateDocumentationFile` enabled for shipped libraries, `LangVersion` is generally `preview` in the main libraries and abstractions.

Applied to files:

  • GFramework.csproj
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Preserve deterministic behavior in registries, lifecycle orchestration, and generated outputs.

Applied to files:

  • GFramework.csproj
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Minimize new package dependencies. Add them only when necessary and keep scope narrow.

Applied to files:

  • GFramework.csproj
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : When adding analyzers or suppressions, keep them minimal and justify them in code comments if the reason is not obvious. The repository uses `Meziantou.Analyzer`; treat analyzer feedback as part of the coding standard.

Applied to files:

  • GFramework.csproj
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Avoid logging secrets, tokens, credentials, or machine-specific sensitive data.

Applied to files:

  • GFramework.csproj
🪛 LanguageTool
.codex/skills/gframework-boot/SKILL.md

[style] ~28-~28: Specify a number, remove phrase, use “a few”, or use “some”
Context: ...allel discovery required - medium: a small number of modules, some read-only exploration hel...

(SMALL_NUMBER_OF)


[style] ~50-~50: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...re area, prefer resuming that thread. - If the repository state suggests in-flight...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~61-~61: Consider using the synonym “brief” (= concise, using a few words, not lasting long) to strengthen your wording.
Context: ...s/startup-artifacts.md` when you need a quick reminder of the repository entrypoints,...

(QUICK_BRIEF)

🔇 Additional comments (33)
.gitignore (1)

18-18: ai-libs/ 的忽略规则添加合理。

这能降低第三方参考快照被误提交的风险,与仓库里“只读参考区”的约束一致。

.codex/skills/gframework-boot/agents/openai.yaml (1)

1-4: Boot 接口配置清晰且与目标一致。

display_name、描述和默认提示词都聚焦到 $gframework-boot,落地路径明确。

GFramework.csproj (1)

73-73: ai-libs\** 在打包/编译/资源维度的排除是正确的。

这三处同步排除能避免参考目录被误打包或参与构建,行为一致性很好。

Also applies to: 122-122, 157-157

AGENTS.md (1)

40-48: Boot 规则补充完整,优先级定义明确。

“便捷层不替代 AGENTS.md”以及启动前必读项写得很清楚,可执行性强。

.codex/skills/gframework-boot/references/startup-artifacts.md (1)

1-31: 启动参考文档结构清晰,可直接执行。

必读项、复杂度分级、模型默认值和开场模板闭环完整,便于快速一致化启动流程。

.codex/skills/gframework-boot/SKILL.md (1)

15-37: 启动流程与任务跟踪约束设计完整。

从启动读取顺序到委派边界,再到恢复文档维护规则,流程衔接自然且可操作。

Also applies to: 40-45

docs/zh-CN/tutorials/basic/05-command-system.md (1)

177-177: 命名空间更新一致,示例可读性良好。

该处将 Rule 引用切到 GFramework.Core.SourceGenerators.Abstractions.Rule,与当前文档上下文保持一致。

docs/zh-CN/tutorials/state-machine-tutorial.md (1)

401-401: 导入路径调整正确,和教程代码段保持统一。

docs/zh-CN/best-practices/architecture-patterns.md (1)

660-660: 示例 import 更新合理,未引入额外风险。

docs/zh-CN/source-generators/get-node-generator.md (1)

175-175: Rule 命名空间指向更新正确。

docs/zh-CN/tutorials/basic/04-model-refactor.md (1)

190-190: 两处 import 同步更新到 Core 命名空间,处理一致。

Also applies to: 222-222

docs/zh-CN/tutorials/godot-complete-project.md (1)

477-477: 三个场景脚本示例的命名空间已统一,改动清晰且正确。

Also applies to: 633-633, 676-676

docs/zh-CN/source-generators/bind-node-signal-generator.md (1)

643-643: 导入路径更新准确,和生成器文档示例保持一致。

docs/zh-CN/core/state-management.md (1)

393-393: 变更简洁且正确,示例引用路径已对齐。

docs/zh-CN/ecs/arch.md (1)

511-511: 命名空间大小写无误

此行中的命名空间 GFramework.Core.SourceGenerators.Abstractions.Bases 与实际源代码一致,使用正确的 PascalCase 约定。无需进一步更正。

docs/zh-CN/core/property.md (1)

243-243: 命名空间迁移一致,示例可读性良好。

这两处 using 更新与当前文档上下文一致,未引入示例语义偏差。

Also applies to: 387-387

docs/zh-CN/core/events.md (1)

357-357: 示例中的 Rule 引用更新正确且统一。

该文件内多处控制器示例的命名空间已保持一致,迁移质量良好。

Also applies to: 455-455, 505-505

docs/zh-CN/core/system.md (1)

189-189: 控制器示例的命名空间替换正确。

单点变更清晰、风险低,与文档其余示例风格一致。

docs/zh-CN/tutorials/pause-system.md (1)

327-327: 教程示例中的命名空间已对齐,修改合理。

两处更新不影响教程步骤语义,且保持了示例一致性。

Also applies to: 667-667

docs/zh-CN/game/scene.md (1)

168-168: 场景文档中的三处命名空间更新一致且准确。

迁移后示例保持统一,阅读和复制体验更稳定。

Also applies to: 356-356, 440-440

docs/zh-CN/core/command.md (1)

60-60: Command 文档中的引用迁移处理到位。

两处变更都准确落在示例入口位置,符合预期。

Also applies to: 224-224

docs/zh-CN/source-generators/auto-register-module-generator.md (1)

32-32: Source Generator 示例导入路径更新正确。

变更粒度精确,且与该页上下文完全一致。

docs/zh-CN/core/pause.md (1)

112-112: Pause 文档内多处命名空间替换完成度高。

批量更新保持了统一性,未破坏示例结构与说明对应关系。

Also applies to: 130-130, 166-166, 218-218, 257-257, 365-365, 407-407, 444-444, 685-685, 787-787, 832-832

docs/zh-CN/game/serialization.md (1)

97-97: 命名空间迁移一致且正确。

示例中的 Rule 引用已统一到 GFramework.Core.SourceGenerators.Abstractions.Rule,与当前文档迁移方向一致。

Also applies to: 178-178

docs/zh-CN/source-generators/context-aware-generator.md (1)

24-24: ContextAware 示例引用更新无误。

两处代码片段都已对齐 GFramework.Core.SourceGenerators.Abstractions.Rule,文档示例一致性良好。

Also applies to: 236-236

docs/zh-CN/game/data.md (1)

134-134: 数据与存档文档中的 Rule 引用迁移完整。

三处示例均已切换到 GFramework.Core.SourceGenerators.Abstractions.Rule,与当前模块命名保持一致。

Also applies to: 241-241, 370-370

docs/zh-CN/source-generators/auto-ui-page-generator.md (1)

129-129: 组合示例的 Rule 依赖指向正确。

AutoUiPage[ContextAware] 混合示例已正确使用 Core 命名空间。

docs/zh-CN/godot/architecture.md (1)

344-344: Godot 架构文档的 ContextAware 引用已对齐。

两处示例都切换到 GFramework.Core.SourceGenerators.Abstractions.Rule,迁移方向正确。

Also applies to: 522-522

docs/zh-CN/source-generators/logging-generator.md (1)

3-3: 日志生成器文档迁移清晰且一致。

标题说明与示例 using 都已切换到 GFramework.Core.SourceGenerators.Abstractions.*,可读性和一致性都更好。

Also applies to: 14-14, 168-170

docs/zh-CN/source-generators/priority-generator.md (1)

30-30: Priority 文档中的命名空间替换覆盖充分。

相关示例已统一至 GFramework.Core.SourceGenerators.Abstractions.*,与 Source Generator 家族拆分后的包结构一致。

Also applies to: 94-94, 136-136, 553-556, 666-666

docs/zh-CN/api-reference/index.md (1)

437-441: API 参考对 Source Generators 家族的描述更新到位。

模块拆分与 Attribute 来源说明更准确,能更好反映当前生态结构。

docs/zh-CN/source-generators/context-get-generator.md (2)

48-48: 命名空间示例已完成一致性对齐,方向正确。

这些示例 using 统一到 GFramework.Core.SourceGenerators.Abstractions.Rule 后,与当前文档其余内容保持一致,能减少用户按示例接入时的命名空间偏差。

Based on learnings: “Treat source code, *.csproj, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates.”

Also applies to: 83-83, 111-111, 283-283, 331-331


626-626: 注册可见性分析归属更新清晰且必要。

将分析能力归属更新为 GFramework.Core.SourceGenerators 与本次文档其余命名空间迁移一致,语义更准确。

Based on learnings: “If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording.”

Comment thread docs/zh-CN/best-practices/performance.md
GeWuYou added 4 commits April 19, 2026 03:03
- 新增项目级 `-pr-review` 技能与 PR 页面抓取脚本,提取 CodeRabbit 评论、检查结果和测试状态
- 修复 gframework-boot 与 AGENTS 规则文案,使 resume/recovery 与 tracking 条件保持一致
- 更新 Godot 模板与 IController 文档注释中的旧 SourceGenerators Rule 命名空间引用
- 补充 CQRS 迁移 tracking 与 trace 的 RP-042 恢复点、验证结果和后续动作
- 重命名 local-plan 为 ai-plan,并收口 public 与 private 的目录语义
- 更新 AGENTS、README 与 boot skill 的恢复文档路径和安全约束
- 迁移共享 tracking 与 trace 文件到 ai-plan/public,并补充治理说明文档
- 在 third-party-licenses/Mediator 目录下创建 LICENSE 文件
- 包含完整的 MIT 许可证文本内容
- 添加版权持有者 Martin Othamar 的声明
- 确保许可证条款符合开源项目合规性要求
- 补充 `fix pr review` 与 `Use FPR` 作为 `gframework-pr-review` 的快捷触发示例
- 更新 skill 示例列表,降低 PR 审查场景下的调用门槛
@github-actions
Copy link
Copy Markdown

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 34.7s    ↓810ms

Test Results

passed 2103 passed

Details

tests 2103 tests
clock 34.7s ↓810ms
tool nunit
build CI - Build & Test arrow-right build-and-test link #879
pull-request Feat/cqrs optimization link #253

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2103 0 0 4.2s

build-and-test: Run #879

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 0 34.7s

🎉 All tests passed!

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
SendRequestAsync_Should_ResolveCqrsRuntime_OnlyOnce_When_AccessedConcurrently 2 3.9s 4.2s
Does_Not_Report_When_FieldInjectedModel_Is_Registered 2 2.1s 2.2s
Generates_Scene_Behavior_Boilerplate 2 1.8s 1.9s
CleanupDuringAcquire_Should_NotCauseRaceCondition 2 1.1s 1.1s
Append_ShouldNotBlock 2 1.0s 1.0s
Context_Caching_Should_Improve_Performance 2 777ms 778ms
PendingCount_ShouldReflectQueuedEntries 2 501ms 501ms
Cleanup_Should_NotRemoveActiveLocks 2 404ms 405ms
Cleanup_Should_RemoveUnusedLocks 2 401ms 401ms
Generates_Precise_Assembly_Type_Lookups_For_Inaccessible_External_Protected_Types 2 315ms 327ms

± Comparison with run #878 at 5cff710 | 🎉 No failed tests detected across all runs. | 🍂 No flaky tests detected across all runs. | ⏱️ Measured over 2 runs.

Github Test Reporter by CTRF 💚

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py:
- Around line 328-333: The current main() always calls get_current_branch() when
computing branch, even if args.pr was provided; change main() so that if args.pr
is present you skip any call to get_current_branch() and use args.pr directly
for pr_number, otherwise compute branch = args.branch or get_current_branch()
and call resolve_pr_number(branch); update the control flow in main()
(referencing main, parse_args, args.pr, args.branch, get_current_branch,
resolve_pr_number) so get_current_branch() is only invoked when resolving a PR
from a branch.
- Around line 19-33: The script hardcodes WINDOWS_GIT which breaks across
machines/CI; update initialization of WINDOWS_GIT to prefer an environment
override (e.g., os.environ["WINDOWS_GIT"] if set), then fall back to resolving
the system git binary (use 'git' or 'git.exe' via shutil.which and platform
detection) so run_command and get_current_branch use a configurable/portable git
path; ensure run_command still raises on non-zero exit and get_current_branch
calls the resolved WINDOWS_GIT.

In `@ai-plan/public/todos/cqrs-rewrite-migration-tracking.md`:
- Around line 402-405: The doc contains machine-local absolute paths (the NuGet
fallback path shown near the GFramework.csproj mention) which must not be
committed to ai-plan/public; replace the explicit path value with a redaction or
neutral phrasing such as "machine-local path omitted" or "local NuGet fallback
path (redacted)" and keep only the issue type and impact. Update the two
occurrences that reference the absolute path near the GFramework.csproj/NuGet
fallback package folder and ensure the rest of the sentence still explains the
build impact without any filesystem-specific strings.
- Around line 469-473: The document references conflicting recovery point IDs:
update the confirmation step that currently mentions CQRS-REWRITE-RP-015 to use
the current valid recovery point CQRS-REWRITE-RP-042 so the next-recovery-point
is consistent; specifically, in the section that says "确认当前恢复点
`CQRS-REWRITE-RP-015` 已对应到最新提交" change that identifier to `CQRS-REWRITE-RP-042`,
and verify any other occurrences in the same file and the linked trace file
(cqrs-rewrite-migration-trace.md) match CQRS-REWRITE-RP-042 so
ai-plan/public/todos/** accurately reflects the next recommended recovery point
referenced by CQRS_MODULE_SPLIT_PLAN.md Phase 7.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7740c339-21e9-47a2-8cd6-11b9a3fe7fca

📥 Commits

Reviewing files that changed from the base of the PR and between 4eca2f1 and 5db27fc.

📒 Files selected for processing (19)
  • .codex/skills/gframework-boot/SKILL.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
  • .codex/skills/gframework-pr-review/SKILL.md
  • .codex/skills/gframework-pr-review/agents/openai.yaml
  • .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py
  • .gitignore
  • AGENTS.md
  • GFramework.Core.Abstractions/Controller/IController.cs
  • Godot/script_templates/Node/ControllerTemplate.cs
  • Godot/script_templates/Node/PageControllerTemplate.cs
  • README.md
  • ai-plan/README.md
  • ai-plan/public/todos/ai-plan-governance-tracking.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • ai-plan/public/traces/ai-plan-governance-trace.md
  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/traces/cqrs-rewrite-migration-trace.md
  • third-party-licenses/Mediator/LICENSE
✅ Files skipped from review due to trivial changes (10)
  • third-party-licenses/Mediator/LICENSE
  • Godot/script_templates/Node/ControllerTemplate.cs
  • Godot/script_templates/Node/PageControllerTemplate.cs
  • .gitignore
  • GFramework.Core.Abstractions/Controller/IController.cs
  • .codex/skills/gframework-pr-review/agents/openai.yaml
  • README.md
  • ai-plan/public/todos/ai-plan-governance-tracking.md
  • ai-plan/README.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Code Quality & Security
  • GitHub Check: Analyze (C#)
🧰 Additional context used
📓 Path-based instructions (2)
ai-plan/public/**

📄 CodeRabbit inference engine (AGENTS.md)

Keep committed ai-plan/public/** content safe to publish in Git history. Never write secrets, tokens, credentials, private keys, machine usernames, home-directory paths, hostnames, IP addresses, proprietary URLs, or other sensitive environment details into any ai-plan/** file. Never record absolute file-system paths; use repository-relative paths, branch names, PR numbers, or stable document identifiers instead.

Files:

  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/traces/ai-plan-governance-trace.md
ai-plan/public/todos/**

📄 CodeRabbit inference engine (AGENTS.md)

When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under ai-plan/public/todos/ in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point.

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
🧠 Learnings (20)
📓 Common learnings
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Before choosing runtimes or CLI tools, read `@.ai/environment/tools.ai.yaml`. Use `@.ai/environment/tools.raw.yaml` only when you need the full collected facts behind the AI-facing hints. Prefer the project-relevant tools listed there instead of assuming every installed system tool is fair game.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: When working in WSL against the repository's Windows-backed worktree, prefer Windows Git from WSL (for example `git.exe`) instead of the Linux `git` binary. If a Git command in WSL fails with a worktree-style 'not a git repository' path translation error, rerun it with the Windows Git executable and treat that as the repository-default Git path for the rest of the task.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Every completed task MUST pass at least one build validation before it is considered done. If the task changes multiple projects or shared abstractions, prefer a solution-level or affected-project `dotnet build ... -c Release`; otherwise use the smallest build command that still proves the result compiles.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: If the required build passes and there are task-related staged or unstaged changes, contributors MUST create a Git commit automatically instead of leaving the task uncommitted, unless the user explicitly says not to commit.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Commit messages MUST use Conventional Commits format: `<type>(<scope>): <summary>`. The commit `summary` MUST use simplified Chinese and briefly describe the main change. The commit `body` MUST use unordered list items, and each item MUST start with a verb such as `新增`、`修复`、`优化`、`更新`、`补充`、`重构`. Each commit body bullet MUST describe one independent change point; avoid repeated or redundant descriptions. Keep technical terms in English when they are established project terms, such as `API`、`Model`、`System`.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: If a new task starts while the current branch is `main`, contributors MUST first try to update local `main` from the remote, then create and switch to a dedicated branch before making substantive changes. The branch naming rule for a new task branch is `<type>/<topic-or-scope>`, where `<type>` should match the intended Conventional Commit category as closely as practical.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: The repository-maintained Codex boot skill lives at `.codex/skills/gframework-boot/`. Prefer invoking `$gframework-boot` when the user uses short startup prompts such as `boot`、`continue`、`next step`、`按 boot 开始`、`先看 AGENTS`、`继续当前任务`. The boot skill is a startup convenience layer, not a replacement for AGENTS.md. If the skill and AGENTS.md diverge, follow AGENTS.md first and update the skill in the same change. The boot skill MUST read AGENTS.md、`.ai/environment/tools.ai.yaml` and the relevant `ai-plan/` artifacts before substantive execution.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Use subagents only when the task is complex, the context is likely to grow too large, or the work can be split into independent parallel subtasks. The main agent MUST identify the critical path first. Do not delegate the immediate blocking task if the next local step depends on that result.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Use `explorer` subagents for read-only discovery, comparison, tracing, and narrow codebase questions. Use `worker` subagents only for bounded implementation tasks with an explicit file or module ownership boundary.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Every delegation MUST specify: the concrete objective, the expected output format, the files or subsystem the subagent owns, and any constraints about tests, diagnostics, or compatibility. Subagents are not allowed to revert or overwrite unrelated changes from the user or other agents. They must adapt to concurrent work instead of assuming exclusive ownership of the repository.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Prefer lightweight models such as `gpt-5.1-codex-mini` for narrow exploration, indexing, and comparison tasks. Prefer stronger models such as `gpt-5.4` for cross-module design work, non-trivial refactors, and tasks that require higher confidence reasoning.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: The main agent remains responsible for reviewing and integrating subagent output. Unreviewed subagent conclusions do not count as final results.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Keep abstractions projects free of implementation details and engine-specific dependencies. Preserve existing module boundaries. Do not introduce new cross-module dependencies without clear architectural need.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Run targeted tests for the code you changed whenever possible. Run broader solution-level validation for changes that touch shared abstractions, lifecycle behavior, source generators, or dependency wiring. Do not claim completion if required tests were skipped; state what was not run and why.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Treat source code, *.csproj, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing README.md files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Treat `ai-libs/` as a read-only third-party source reference area. Code under `ai-libs/**` exists for comparison, tracing, design study, and behavior verification; do not modify it unless the user explicitly asks to sync or update that third-party snapshot. When implementation plans, traces, reviews, or design notes say 'reference a third-party project', prefer the repository-local path under `ai-libs/` instead of an unspecified upstream repository.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: If a task depends on observations from `ai-libs/**`, record the referenced path and conclusion in the active plan or trace when the work is multi-step or complex, or when an active tracking document already exists, rather than editing the third-party reference copy.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: When examples are rewritten, preserve only the parts that remain true. Delete or replace speculative examples instead of lightly editing them into another inaccurate form.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Use `ai-plan/public/todos/` for repository-safe recovery documents that may be committed and shared across worktrees. Use `ai-plan/public/traces/` for repository-safe execution traces that may be committed and shared across worktrees. Use `ai-plan/private/` for worktree-private recovery artifacts that should be kept untracked and scoped to the current worktree.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `ai-plan/public/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step so another contributor or subagent can continue the work safely.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Contributors MUST maintain a matching execution trace under `ai-plan/public/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: If subagents are used on a complex task, the main agent MUST capture the delegated scope and any accepted findings in the active recovery document or trace before continuing implementation.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: When documentation changes need local preview, use `cd docs && bun install && bun run dev`.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-18T19:29:39.168Z
Learning: Before considering work complete, confirm that required comments and XML docs are present, code follows repository style and naming rules, relevant tests were added or updated, sensitive or unsafe behavior was not introduced, user-facing documentation is updated when needed, and feature adoption docs under `docs/zh-CN/` were added or updated when functionality was added, removed, or refactored.
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.

Applied to files:

  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • AGENTS.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.

Applied to files:

  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.

Applied to files:

  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
  • AGENTS.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/traces/ai-plan-governance-trace.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : When adding caching, pooling, or shared mutable state, document thread-safety assumptions and failure modes.

Applied to files:

  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/*{Startup,Init,Register,Setup,Configure}*.cs : CQRS handler registration should use generated products from CqrsHandlerRegistryGenerator at runtime, falling back to reflection scanning when generation cannot cover cases; explicitly register handlers from non-default assemblies using RegisterCqrsHandlersFromAssembly(...) or RegisterCqrsHandlersFromAssemblies(...)

Applied to files:

  • ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • AGENTS.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/traces/ai-plan-governance-trace.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point. Completing code changes without updating the active tracking document is considered incomplete work.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • AGENTS.md
  • ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/traces/ai-plan-governance-trace.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/Cqrs/**/*.cs : Use CQRS (Command Query Responsibility Segregation) pattern with the Cqrs naming entry point instead of the historical Mediator alias

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: All coding rules must be followed strictly as defined in AGENTS.md

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Every delegation MUST specify the concrete objective, the expected output format, the files or subsystem the subagent owns, and any constraints about tests, diagnostics, or compatibility. Subagents are not allowed to revert or overwrite unrelated changes from the user or other agents. They must adapt to concurrent work instead of assuming exclusive ownership of the repository.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Use subagents only when the task is complex, the context is likely to grow too large, or the work can be split into independent parallel subtasks. The main agent MUST identify the critical path first and not delegate the immediate blocking task. Use `explorer` subagents for read-only discovery, comparison, tracing, and narrow codebase questions. Use `worker` subagents only for bounded implementation tasks with an explicit file or module ownership boundary.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: If a new task starts while the current branch is `main`, contributors MUST first try to update local `main` from the remote, then create and switch to a dedicated branch before making substantive changes. The branch naming rule for a new task branch is `<type>/<topic-or-scope>`, where `<type>` should match the intended Conventional Commit category.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.md : Update the relevant `README.md` or `docs/` page when behavior, setup steps, architecture guidance, or user-facing examples change. Keep code samples, package names, and command examples aligned with the current repository state.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to docs/**/*.md : Documentation should be organized with Chinese content in docs/zh-CN/ and structured to include getting started, module-specific capabilities (Core, Game, Godot, ECS), source generator usage, tutorials, best practices, and troubleshooting

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to README.md : Every user-facing package or module directory that contains a `*.csproj` intended for direct consumption MUST have a sibling `README.md`. Use the canonical filename `README.md`. Do not introduce new `ReadMe.md` or other filename variants. A module README MUST describe the module's purpose, the relationship to adjacent runtime/abstractions/generator packages, the major subdirectories or subsystems, the minimum adoption path, and the corresponding `docs/zh-CN/` entry points.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.901Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.901Z
Learning: The repository root `README.md` MUST mirror the current top-level documentation taxonomy used by the docs site. Do not maintain a second, differently named navigation system in the root README. Prefer linking the root `README.md` to section landing pages such as `index.md` instead of deep-linking to a single article when the target is intended to be a documentation category. If a docs category appears in VitePress navigation or sidebar, it MUST have a real landing page or be removed from navigation in the same change.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to README.md : If a module's responsibilities, setup, public API surface, generator inputs, or adoption path change, update that module's `README.md` in the same change. Adding a new top-level module directory without a `README.md` is considered incomplete work.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.csproj : Any change to public API, lifecycle semantics, module behavior, or extension points MUST update the related XML docs.

Applied to files:

  • AGENTS.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : If subagents are used on a complex task, the main agent MUST capture the delegated scope and any accepted findings in the active recovery document or trace before continuing implementation.

Applied to files:

  • AGENTS.md
🪛 LanguageTool
ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md

[grammar] ~8-~8: Ensure spelling is correct
Context: ...nce omits GeWuYou.GFramework.Cqrs and GeWuYou.GFramework.Cqrs.Abstractions even though the module ov...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~12-~12: Ensure spelling is correct
Context: ...ge, or compatibility notes. - Confirmed `GFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~37-~37: Ensure spelling is correct
Context: ...mework.Cqrs.) and handler base types (GFramework.Cqrs.Cqrs.). - Updated docs/zh-CN/source-...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~47-~47: Ensure spelling is correct
Context: ...nal/CqrsHandlerRegistrar.cs- ExpandedGFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~49-~49: Ensure spelling is correct
Context: ...rs after the cache is reused. - Updated GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherCacheTests.cs...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~51-~51: Ensure spelling is correct
Context: ...ion to change handler doc examples from using GFramework.Cqrs.Cqrs.Command; to `using GFramework.C...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~51-~51: Ensure spelling is correct
Context: ...using GFramework.Cqrs.Cqrs.Command;to using GFramework.Cqrs.Command;`. The repository's actual hand...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~52-~52: Ensure spelling is correct
Context: ...ual handler base types still live under GFramework.Cqrs.Cqrs.*, so the implementation kept the...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

ai-plan/public/todos/cqrs-rewrite-migration-tracking.md

[uncategorized] ~20-~20: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...沉到 GFramework.Cqrs - 已将 generator 从“整程序集回退”推进到“可见 handlers 走 typeof(...) 直注册,...

(wa5)


[uncategorized] ~22-~22: 您的意思是“"不"齐”?
Context: ...runtime fallback marker” - 已为手写/第三方程序集补齐正式的精确 fallback 入口:`CqrsReflectionFallba...

(BU)


[uncategorized] ~26-~26: 您的意思是“"不"齐”?
Context: ...只做常量时间绑定”的模式 - 已在 CqrsDispatcher 热路径补齐 service-type 缓存,减少 PublishAsync / `S...

(BU)


[uncategorized] ~27-~27: 您的意思是“"不"齐”?
Context: ... invoker method-definition 查找收敛为静态一次解析,并补齐 request/no-pipeline、request/with-pipel...

(BU)


[uncategorized] ~41-~41: 您的意思是“"不"反射”?
Context: ...Attribute` 对具体 handler implementation 定向补反射”; 若 runtime 合同不提供该 marker,则生成器保守地...

(BU)


[uncategorized] ~43-~43: 您的意思是“"不"齐”?
Context: ...y,避免静默漏注册 - 已完成一轮 review follow-up 小修:补齐 dispatcher string pipeline cache 清理,...

(BU)


[uncategorized] ~44-~44: 您的意思是“"不"齐”?
Context: ...用缓存与编译错误诊断输出 - 已完成三轮 review follow-up:补齐 ICqrsRuntime 异常/上下文约束文档,明确 `DefaultC...

(BU)


[uncategorized] ~47-~47: 您的意思是“"不"洞”?
Context: ...mainingReflectedHandlerInterfaces(...) 补洞推进到“按程序集名 + metadata name 定向 lookup”;I...

(BU)


[uncategorized] ~55-~55: 您的意思是“"不"齐”?
Context: ...-libs/**观察写入 active plan/trace 的触发条件,并补齐模板/接口注释中的旧Rule` 命名空间残留 ## 本轮计划 ### ...

(BU)


[uncategorized] ~93-~93: 您的意思是“"不"齐”?
Context: ...口 - [x] 提升 CqrsTestRuntime 反射绑定的签名鲁棒性并补齐 XML 文档 - [x] 将剩余 Mediator 兼容入口推进到正式弃...

(BU)


[uncategorized] ~141-~141: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...构 - [x] 将 partial reflection fallback 从“整程序集 GetTypes() 扫描”推进到“generator 输出精确 han...

(wa5)


[uncategorized] ~142-~142: 您的意思是“"不"齐”?
Context: ...embly.GetType(...)` 补扫” - [x] 为手写/第三方程序集补齐精确 fallback metadata 入口,避免这类场景只能依赖旧版空 m...

(BU)


[uncategorized] ~143-~143: 您的意思是“"不"齐”?
Context: ...rker 或脆弱的字符串约定 - [x] 为 CqrsDispatcher 补齐 notification/request/stream service-ty...

(BU)


[uncategorized] ~144-~144: 您的意思是“"不"齐”?
Context: ...ericType重复开销 - [x] 为CqrsDispatcher` 补齐 invoker method-definition 静态缓存,并把 requ...

(BU)


[uncategorized] ~159-~159: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...载精确 fallback handler 类型名清单;当清单为空时,仍保持旧版“整程序集补扫”的兼容语义。 - `GFramework.Cqrs/CqrsReflec...

(wa5)


[uncategorized] ~171-~171: 您的意思是“"不"位”?
Context: ...出现新的未覆盖类型形态,则改由程序集级 targeted fallback 合同补位 - `GFramework.SourceGenerators/Cqrs/Cq...

(BU)


[uncategorized] ~182-~182: 能愿动词不能成为‘把’字句、‘被’字句的谓语动词。应该是:"能把……“"。
Context: ...Cqrs/CqrsHandlerRegistryGenerator.cs现已把“生成注册器顶层上下文是否能合法书写某个类型”改为通过Compilation.IsSymbolAcces...

(wa3)


[uncategorized] ~186-~186: 您的意思是“"不"洞”?
Context: ... 内部的 implementation 级 GetInterfaces() 补洞辅助逻辑: - 不再生成 `RegisterRemainingReflec...

(BU)


[uncategorized] ~189-~189: 您的意思是“"不"反射”?
Context: ...Attribute对具体 handler implementation 定向补反射 -GFramework.SourceGenerators.Tests/...

(BU)


[uncategorized] ~196-~196: 您的意思是“"不"齐”?
Context: ...sMetadataReferenceTestBuilder.cs` 已补齐多程序集测试基础设施,允许 CQRS generator 回归显式追加内存元数...

(BU)


[uncategorized] ~197-~197: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...Assembly.GetType(...)补扫;只有缺少精确元数据时才继续走整程序集GetTypes()扫描。 -GFramework.Cqrs.Te...

(wa5)


[uncategorized] ~218-~218: 您的意思是“"不"入”?
Context: ...d已完成最小同步: - 根 README 的模块表、仓库结构与安装指引已补入GFramework.Cqrs` 以及拆分后的 SourceGenerat...

(BU)


[uncategorized] ~229-~229: 您的意思是“"不"齐”?
Context: ...ork.Cqrs.Abstractions/GlobalUsings.cs已补齐基础 system 命名空间,避免新项目在关闭ImplicitUsings...

(BU)


[uncategorized] ~236-~236: 您的意思是“"不"齐”?
Context: ...alUsings.csLogging/TestLogger.cs已补齐,确保新测试项目不再隐式依赖GFramework.Core.Tests` ...

(BU)


[uncategorized] ~242-~242: 您的意思是“"不"反射”?
Context: ...写/第三方程序集或 generator 仍未直接覆盖的场景需要 runtime 补反射”的程序集级兼容入口。 - `GFramework.SourceGenera...

(BU)


[uncategorized] ~297-~297: 您的意思是“"不"回”?
Context: ...handler”回归已适配 seam 方案:在裸容器 Clear() 后显式补回测试基础设施,再验证程序集去重状态重置。 - `ai-plan/migrati...

(BU)


[uncategorized] ~325-~325: 您的意思是“"不"齐”?
Context: ...r以及MessageHandlerDelegate` 的 XML 文档已补齐迁移后的契约边界,明确旧 Command/Query 总线与新 CQRS ...

(BU)


[uncategorized] ~333-~333: 您的意思是“"不"齐”?
Context: ...behavior 链式执行 - CqrsHandlerRegistrar 已补齐三项运行时硬化: - 按程序集名、处理器类型名与处理器接口名稳定排序,...

(BU)


[uncategorized] ~343-~343: 您的意思是“"不"齐”?
Context: ...注册 + warning 已记录”。 - CqrsTestRuntime 已补齐 XML 文档,并改为按 `IIocContainer + IEnumerab...

(BU)


[uncategorized] ~362-~362: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...处理器(例如私有嵌套 handler),生成注册器会改走定向反射注册,而不是退回整程序集补扫 - CqrsHandlerRegistrar 已改为优先查找 `Cq...

(wa5)


[uncategorized] ~366-~366: 您的意思是“"不"齐”?
Context: ...sts/Cqrs/CqrsHandlerRegistrarTests.cs` 已补齐: - 生成器输出快照测试 - 私有嵌套 handler 走 gene...

(BU)


[uncategorized] ~379-~379: 您的意思是“"不"齐”?
Context: ...ions.DependencyInjectionusing, 已补齐以恢复 IServiceCollection` 编译通过。 - 当前验证状态...

(BU)


[uncategorized] ~495-~495: 您的意思是“"不"齐”?
Context: ...径恢复验证链路: - scripts/GlobalUsings.cs 已补齐新的 GFramework.Cqrs.Abstractions.Cqrs*...

(BU)


[uncategorized] ~517-~517: 您的意思是“"不"齐”?
Context: ...首次访问时只执行一次容器解析 - ArchitectureContext 已补齐公开构造函数 XML 文档,以及 CqrsRuntime 惰性初始化的并发...

(BU)


[uncategorized] ~522-~522: 您的意思是“"不"齐”?
Context: ... GFramework.Cqrs.Tests 已通过链接编译同一份共享源码并补齐 global using, 避免两个测试项目继续维护分叉的反射绑定逻...

(BU)


[uncategorized] ~597-~597: 您的意思是“"不"齐”?
Context: ...qrs.Abstractions/Cqrs/ICqrsRuntime.cs已补齐三个公开方法的 XML 契约: -null参数对应Argume...

(BU)


[uncategorized] ~620-~620: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:细"地"回归
Context: ...lias + duplicate registration 组合场景再补一条更细的回归测试 ## 2026-04-16 补充记录(RP-033) ### 阶段...

(wb4)


[uncategorized] ~627-~627: 您的意思是“"不"齐”?
Context: ...eTests.csClearDispatcherCaches()已补齐 RequestPipelineInvokerCache...

(BU)

.codex/skills/gframework-boot/SKILL.md

[style] ~29-~29: Specify a number, remove phrase, use “a few”, or use “some”
Context: ...allel discovery required - medium: a small number of modules, some read-only exploration hel...

(SMALL_NUMBER_OF)


[style] ~53-~53: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...re area, prefer resuming that thread. - If the repository state suggests in-flight...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~64-~64: Consider using the synonym “brief” (= concise, using a few words, not lasting long) to strengthen your wording.
Context: ...s/startup-artifacts.md` when you need a quick reminder of the repository entrypoints,...

(QUICK_BRIEF)

.codex/skills/gframework-pr-review/SKILL.md

[style] ~50-~50: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e fetch with proxy variables removed. - If the PR page contains multiple CodeRabbi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

ai-plan/public/todos/cqrs-cache-docs-hardening-tracking.md

[grammar] ~45-~45: Ensure spelling is correct
Context: ...ly did not rename handler examples from GFramework.Cqrs.Cqrs.* to GFramework.Cqrs.*, becau...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

ai-plan/public/traces/ai-plan-governance-trace.md

[uncategorized] ~16-~16: 您的意思是“"不"齐”?
Context: ...md作为目录语义与内容规范的单点说明 - 在AGENTS.md` 中补齐 public/private 职责边界,以及敏感信息与绝对路径禁写规则 ...

(BU)

🪛 markdownlint-cli2 (0.22.0)
ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md

[warning] 73-73: Multiple headings with the same content

(MD024, no-duplicate-heading)

🔇 Additional comments (1)
ai-plan/public/traces/cqrs-cache-docs-hardening-trace.md (1)

24-24: ⚠️ Potential issue | 🟡 Minor

重复标题会触发 Markdown lint(MD024)

Line 24 与 Line 73 使用了相同的三级标题 Immediate Next Step。建议将后者改成更具体的标题(例如 Immediate Next Step (Post-validation))以避免 lint 警告。

🔧 建议修复
-### Immediate Next Step
+### Immediate Next Step

@@
-### Immediate Next Step
+### Immediate Next Step (Post-validation)

Also applies to: 73-73

⛔ Skipped due to learnings
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step.
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point. Completing code changes without updating the active tracking document is considered incomplete work.

Comment thread .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py Outdated
Comment thread .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py Outdated
Comment thread ai-plan/public/todos/cqrs-rewrite-migration-tracking.md Outdated
Comment thread ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md Outdated
@GeWuYou GeWuYou changed the title Feat/cqrs optimization feat: CQRS cache hardening、ai-plan governance Apr 19, 2026
- 修复 FPR 脚本的 Git 解析、--pr 控制流与 branch 到 PR 的 API 解析路径
- 优化 CodeRabbit summary、CTRF 测试结果与 latest head review threads 的 API-first 提取逻辑
- 更新 skill 文档、agent prompt 与 ai-plan 记录,明确最新提交后 review threads 的优先级
@github-actions
Copy link
Copy Markdown

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 36.1s    ↑1.4s

Test Results

passed 2103 passed

Details

tests 2103 tests
clock 36.1s ↑1.4s
tool nunit
build CI - Build & Test arrow-right build-and-test link #880
pull-request feat: CQRS cache hardening、ai-plan governance link #253

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2103 0 0 4.2s

build-and-test: Run #880

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 0 36.1s

🎉 All tests passed!

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
SendRequestAsync_Should_ResolveCqrsRuntime_OnlyOnce_When_AccessedConcurrently 3 4.0s 4.2s
Does_Not_Report_When_FieldInjectedModel_Is_Registered 3 2.1s 2.2s
Generates_Scene_Behavior_Boilerplate 3 1.9s 1.9s
CleanupDuringAcquire_Should_NotCauseRaceCondition 3 1.1s 1.1s
Append_ShouldNotBlock 3 1.0s 1.0s
Context_Caching_Should_Improve_Performance 3 780ms 786ms
PendingCount_ShouldReflectQueuedEntries 3 501ms 501ms
Cleanup_Should_NotRemoveActiveLocks 3 404ms 405ms
Cleanup_Should_RemoveUnusedLocks 3 401ms 402ms
Generates_Precise_Assembly_Type_Lookups_For_Inaccessible_External_Protected_Types 3 324ms 343ms

± Comparison with run #879 at 83c8b87 | 🎉 No failed tests detected across all runs. | 🍂 No flaky tests detected across all runs. | ⏱️ Measured over 3 runs.

Github Test Reporter by CTRF 💚

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ai-plan/public/todos/cqrs-rewrite-migration-tracking.md`:
- Line 689: The inline code in the rg command contains nested backticks (the
segment `` `GFramework\.SourceGenerators` ``) which breaks Markdown; edit the
command string (`rg -n "using GFramework\.SourceGenerators\.Abstractions\.|###
GFramework\.SourceGenerators|GFramework\.SourceGenerators
自动生成|`GFramework\.SourceGenerators` 现在还会分析" docs/zh-CN`) to remove or escape the
inner backticks—e.g. replace the inner `` `GFramework\.SourceGenerators` `` with
plain GFramework\.SourceGenerators or escape it (use
\`GFramework\.SourceGenerators\`), or switch the outer delimiters to single
quotes and leave the pattern unquoted—so the final line contains no nested
backticks and renders correctly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 63c0c219-5e01-4eeb-8120-1cbd290bc4d2

📥 Commits

Reviewing files that changed from the base of the PR and between 5db27fc and 97b619c.

📒 Files selected for processing (5)
  • .codex/skills/gframework-pr-review/SKILL.md
  • .codex/skills/gframework-pr-review/agents/openai.yaml
  • .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py
  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
  • ai-plan/public/traces/cqrs-rewrite-migration-trace.md
✅ Files skipped from review due to trivial changes (2)
  • .codex/skills/gframework-pr-review/agents/openai.yaml
  • .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • .codex/skills/gframework-pr-review/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Code Quality & Security
  • GitHub Check: Analyze (C#)
🧰 Additional context used
📓 Path-based instructions (4)
ai-plan/public/**

📄 CodeRabbit inference engine (AGENTS.md)

Contributors MUST keep committed ai-plan/public/** content safe to publish in Git history

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
ai-plan/**

📄 CodeRabbit inference engine (AGENTS.md)

Never write secrets, tokens, credentials, private keys, machine usernames, home-directory paths, hostnames, IP addresses, proprietary URLs, or other sensitive environment details into any ai-plan/** file

Never record absolute file-system paths in ai-plan/**; use repository-relative paths, branch names, PR numbers, or stable document identifiers instead

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
ai-plan/public/todos/**

📄 CodeRabbit inference engine (AGENTS.md)

When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under ai-plan/public/todos/ in the same change

Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point

For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under ai-plan/public/todos/ before making substantive code changes

Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step so another contributor or subagent can continue the work safely

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
ai-plan/public/{todos,traces}/**

📄 CodeRabbit inference engine (AGENTS.md)

When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off

If subagents are used on a complex task, the main agent MUST capture the delegated scope and any accepted findings in the active recovery document or trace before continuing implementation

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
🧠 Learnings (8)
📓 Common learnings
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Core framework components (Architecture, Module, System, Context, Registry, Service Module, and Lifecycle types) MUST include high-level explanations of responsibilities, lifecycle, interaction with other components, why the abstraction exists, and when to use it instead of alternatives
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Keep abstractions projects free of implementation details and engine-specific dependencies
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Preserve existing module boundaries and do not introduce new cross-module dependencies without clear architectural need
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Every non-trivial feature, bug fix, or behavior change MUST include tests or an explicit justification for why a test is not practical
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Public API changes must be covered by unit or integration tests
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: When a public API defines multiple contract branches, tests MUST cover meaningful variants including null, empty, default, and filtered inputs when those branches change behavior
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Regression fixes should include a test that fails before the fix and passes after it
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Adding a new top-level module directory without a `README.md` is considered incomplete work
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: When implementation plans, traces, reviews, or design notes say 'reference a third-party project', prefer the repository-local path under `ai-libs/` instead of an unspecified upstream repository
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: If an existing documentation page no longer reflects the current implementation, fixing the code without fixing the documentation is considered incomplete work
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Before choosing runtimes or CLI tools, read `@.ai/environment/tools.ai.yaml`; use `@.ai/environment/tools.raw.yaml` only when you need the full collected facts
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Prefer the project-relevant tools listed in the environment inventory instead of assuming every installed system tool is fair game
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: When working in WSL against this repository's Windows-backed worktree, prefer Windows Git from WSL (for example `git.exe`) instead of the Linux `git` binary
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: If a Git command in WSL fails with a worktree-style 'not a git repository' path translation error, rerun it with the Windows Git executable and treat that as the repository-default Git path for the rest of the task
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: If the shell does not currently resolve `git.exe` to the host Windows Git installation, prepend that installation's command directory to `PATH` and reset shell command hashing before continuing
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: After resolving the host Windows Git path, prefer an explicit session-local binding for subsequent commands so the shell does not fall back to Linux `/usr/bin/git` later in the same WSL session
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Every completed task MUST pass at least one build validation before it is considered done
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: If the task changes multiple projects or shared abstractions, prefer a solution-level or affected-project `dotnet build ... -c Release`; otherwise use the smallest build command that still proves the result compiles
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: If the required build passes and there are task-related staged or unstaged changes, contributors MUST create a Git commit automatically instead of leaving the task uncommitted, unless the user explicitly says not to commit
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Commit messages MUST use Conventional Commits format: `<type>(<scope>): <summary>`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The commit `summary` MUST use simplified Chinese and briefly describe the main change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The commit `body` MUST use unordered list items, and each item MUST start with a verb such as `新增`、`修复`、`优化`、`更新`、`补充`、`重构`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Each commit body bullet MUST describe one independent change point; avoid repeated or redundant descriptions
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Keep technical terms in English when they are established project terms, such as `API`、`Model`、`System`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: If a new task starts while the current branch is `main`, contributors MUST first try to update local `main` from the remote, then create and switch to a dedicated branch before making substantive changes
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The branch naming rule for a new task branch is `<type>/<topic-or-scope>`, where `<type>` should match the intended Conventional Commit category as closely as practical
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The repository-maintained Codex boot skill lives at `.codex/skills/gframework-boot/`; prefer invoking `$gframework-boot` when the user uses short startup prompts such as `boot`、`continue`、`next step`、`按 boot 开始`、`先看 AGENTS`、`继续当前任务`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The boot skill is a startup convenience layer, not a replacement for AGENTS.md; if the skill and AGENTS.md diverge, follow AGENTS.md first and update the skill in the same change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The boot skill MUST read AGENTS.md、`.ai/environment/tools.ai.yaml` and the relevant `ai-plan/` artifacts before substantive execution
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Use subagents only when the task is complex, the context is likely to grow too large, or the work can be split into independent parallel subtasks
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The main agent MUST identify the critical path first; do not delegate the immediate blocking task if the next local step depends on that result
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Use `explorer` subagents for read-only discovery, comparison, tracing, and narrow codebase questions
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Use `worker` subagents only for bounded implementation tasks with an explicit file or module ownership boundary
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Every delegation MUST specify the concrete objective, the expected output format, the files or subsystem the subagent owns, and any constraints about tests, diagnostics, or compatibility
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Subagents are not allowed to revert or overwrite unrelated changes from the user or other agents; they must adapt to concurrent work instead of assuming exclusive ownership of the repository
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Prefer lightweight models such as `gpt-5.1-codex-mini` for narrow exploration, indexing, and comparison tasks
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Prefer stronger models such as `gpt-5.4` for cross-module design work, non-trivial refactors, and tasks that require higher confidence reasoning
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: The main agent remains responsible for reviewing and integrating subagent output; unreviewed subagent conclusions do not count as final results
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: `ai-plan/` is split by intent: `ai-plan/public/todos/` contains repository-safe recovery documents that may be committed and shared across worktrees; `ai-plan/public/traces/` contains repository-safe execution traces; `ai-plan/private/` contains worktree-private recovery artifacts
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Use `ai-plan/public/**` only for durable, handoff-safe task state; put temporary notes, local experiments, or worktree-specific scratch recovery data under `ai-plan/private/`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:03:57.989Z
Learning: Completing code changes without updating the active tracking document is considered incomplete work
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point. Completing code changes without updating the active tracking document is considered incomplete work.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/Cqrs/**/*.cs : Use CQRS (Command Query Responsibility Segregation) pattern with the Cqrs naming entry point instead of the historical Mediator alias

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Avoid logging secrets, tokens, credentials, or machine-specific sensitive data.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
🪛 LanguageTool
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md

[uncategorized] ~20-~20: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...沉到 GFramework.Cqrs - 已将 generator 从“整程序集回退”推进到“可见 handlers 走 typeof(...) 直注册,...

(wa5)


[uncategorized] ~22-~22: 您的意思是“"不"齐”?
Context: ...runtime fallback marker” - 已为手写/第三方程序集补齐正式的精确 fallback 入口:`CqrsReflectionFallba...

(BU)


[uncategorized] ~26-~26: 您的意思是“"不"齐”?
Context: ...只做常量时间绑定”的模式 - 已在 CqrsDispatcher 热路径补齐 service-type 缓存,减少 PublishAsync / `S...

(BU)


[uncategorized] ~27-~27: 您的意思是“"不"齐”?
Context: ... invoker method-definition 查找收敛为静态一次解析,并补齐 request/no-pipeline、request/with-pipel...

(BU)


[uncategorized] ~41-~41: 您的意思是“"不"反射”?
Context: ...Attribute` 对具体 handler implementation 定向补反射”; 若 runtime 合同不提供该 marker,则生成器保守地...

(BU)


[uncategorized] ~43-~43: 您的意思是“"不"齐”?
Context: ...y,避免静默漏注册 - 已完成一轮 review follow-up 小修:补齐 dispatcher string pipeline cache 清理,...

(BU)


[uncategorized] ~44-~44: 您的意思是“"不"齐”?
Context: ...用缓存与编译错误诊断输出 - 已完成三轮 review follow-up:补齐 ICqrsRuntime 异常/上下文约束文档,明确 `DefaultC...

(BU)


[uncategorized] ~47-~47: 您的意思是“"不"洞”?
Context: ...mainingReflectedHandlerInterfaces(...) 补洞推进到“按程序集名 + metadata name 定向 lookup”;I...

(BU)


[uncategorized] ~55-~55: 您的意思是“"不"齐”?
Context: ...-libs/**观察写入 active plan/trace 的触发条件,并补齐模板/接口注释中的旧Rule` 命名空间残留 ## 本轮计划 ### ...

(BU)


[uncategorized] ~93-~93: 您的意思是“"不"齐”?
Context: ...口 - [x] 提升 CqrsTestRuntime 反射绑定的签名鲁棒性并补齐 XML 文档 - [x] 将剩余 Mediator 兼容入口推进到正式弃...

(BU)


[uncategorized] ~141-~141: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...构 - [x] 将 partial reflection fallback 从“整程序集 GetTypes() 扫描”推进到“generator 输出精确 han...

(wa5)


[uncategorized] ~142-~142: 您的意思是“"不"齐”?
Context: ...embly.GetType(...)` 补扫” - [x] 为手写/第三方程序集补齐精确 fallback metadata 入口,避免这类场景只能依赖旧版空 m...

(BU)


[uncategorized] ~143-~143: 您的意思是“"不"齐”?
Context: ...rker 或脆弱的字符串约定 - [x] 为 CqrsDispatcher 补齐 notification/request/stream service-ty...

(BU)


[uncategorized] ~144-~144: 您的意思是“"不"齐”?
Context: ...ericType重复开销 - [x] 为CqrsDispatcher` 补齐 invoker method-definition 静态缓存,并把 requ...

(BU)


[uncategorized] ~159-~159: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...载精确 fallback handler 类型名清单;当清单为空时,仍保持旧版“整程序集补扫”的兼容语义。 - `GFramework.Cqrs/CqrsReflec...

(wa5)


[uncategorized] ~171-~171: 您的意思是“"不"位”?
Context: ...出现新的未覆盖类型形态,则改由程序集级 targeted fallback 合同补位 - `GFramework.SourceGenerators/Cqrs/Cq...

(BU)


[uncategorized] ~182-~182: 能愿动词不能成为‘把’字句、‘被’字句的谓语动词。应该是:"能把……“"。
Context: ...Cqrs/CqrsHandlerRegistryGenerator.cs现已把“生成注册器顶层上下文是否能合法书写某个类型”改为通过Compilation.IsSymbolAcces...

(wa3)


[uncategorized] ~186-~186: 您的意思是“"不"洞”?
Context: ... 内部的 implementation 级 GetInterfaces() 补洞辅助逻辑: - 不再生成 `RegisterRemainingReflec...

(BU)


[uncategorized] ~189-~189: 您的意思是“"不"反射”?
Context: ...Attribute对具体 handler implementation 定向补反射 -GFramework.SourceGenerators.Tests/...

(BU)


[uncategorized] ~196-~196: 您的意思是“"不"齐”?
Context: ...sMetadataReferenceTestBuilder.cs` 已补齐多程序集测试基础设施,允许 CQRS generator 回归显式追加内存元数...

(BU)


[uncategorized] ~197-~197: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...Assembly.GetType(...)补扫;只有缺少精确元数据时才继续走整程序集GetTypes()扫描。 -GFramework.Cqrs.Te...

(wa5)


[uncategorized] ~218-~218: 您的意思是“"不"入”?
Context: ...d已完成最小同步: - 根 README 的模块表、仓库结构与安装指引已补入GFramework.Cqrs` 以及拆分后的 SourceGenerat...

(BU)


[uncategorized] ~229-~229: 您的意思是“"不"齐”?
Context: ...ork.Cqrs.Abstractions/GlobalUsings.cs已补齐基础 system 命名空间,避免新项目在关闭ImplicitUsings...

(BU)


[uncategorized] ~236-~236: 您的意思是“"不"齐”?
Context: ...alUsings.csLogging/TestLogger.cs已补齐,确保新测试项目不再隐式依赖GFramework.Core.Tests` ...

(BU)


[uncategorized] ~242-~242: 您的意思是“"不"反射”?
Context: ...写/第三方程序集或 generator 仍未直接覆盖的场景需要 runtime 补反射”的程序集级兼容入口。 - `GFramework.SourceGenera...

(BU)


[uncategorized] ~297-~297: 您的意思是“"不"回”?
Context: ...handler”回归已适配 seam 方案:在裸容器 Clear() 后显式补回测试基础设施,再验证程序集去重状态重置。 - `ai-plan/migrati...

(BU)


[uncategorized] ~325-~325: 您的意思是“"不"齐”?
Context: ...r以及MessageHandlerDelegate` 的 XML 文档已补齐迁移后的契约边界,明确旧 Command/Query 总线与新 CQRS ...

(BU)


[uncategorized] ~333-~333: 您的意思是“"不"齐”?
Context: ...behavior 链式执行 - CqrsHandlerRegistrar 已补齐三项运行时硬化: - 按程序集名、处理器类型名与处理器接口名稳定排序,...

(BU)


[uncategorized] ~343-~343: 您的意思是“"不"齐”?
Context: ...注册 + warning 已记录”。 - CqrsTestRuntime 已补齐 XML 文档,并改为按 `IIocContainer + IEnumerab...

(BU)


[uncategorized] ~362-~362: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...处理器(例如私有嵌套 handler),生成注册器会改走定向反射注册,而不是退回整程序集补扫 - CqrsHandlerRegistrar 已改为优先查找 `Cq...

(wa5)


[uncategorized] ~366-~366: 您的意思是“"不"齐”?
Context: ...sts/Cqrs/CqrsHandlerRegistrarTests.cs` 已补齐: - 生成器输出快照测试 - 私有嵌套 handler 走 gene...

(BU)


[uncategorized] ~379-~379: 您的意思是“"不"齐”?
Context: ...ions.DependencyInjectionusing, 已补齐以恢复 IServiceCollection` 编译通过。 - 当前验证状态...

(BU)


[uncategorized] ~495-~495: 您的意思是“"不"齐”?
Context: ...径恢复验证链路: - scripts/GlobalUsings.cs 已补齐新的 GFramework.Cqrs.Abstractions.Cqrs*...

(BU)


[uncategorized] ~517-~517: 您的意思是“"不"齐”?
Context: ...首次访问时只执行一次容器解析 - ArchitectureContext 已补齐公开构造函数 XML 文档,以及 CqrsRuntime 惰性初始化的并发...

(BU)


[uncategorized] ~522-~522: 您的意思是“"不"齐”?
Context: ... GFramework.Cqrs.Tests 已通过链接编译同一份共享源码并补齐 global using, 避免两个测试项目继续维护分叉的反射绑定逻...

(BU)


[uncategorized] ~597-~597: 您的意思是“"不"齐”?
Context: ...qrs.Abstractions/Cqrs/ICqrsRuntime.cs已补齐三个公开方法的 XML 契约: -null参数对应Argume...

(BU)


[uncategorized] ~620-~620: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:细"地"回归
Context: ...lias + duplicate registration 组合场景再补一条更细的回归测试 ## 2026-04-16 补充记录(RP-033) ### 阶段...

(wb4)


[uncategorized] ~627-~627: 您的意思是“"不"齐”?
Context: ...eTests.csClearDispatcherCaches()已补齐 RequestPipelineInvokerCache...

(BU)

🪛 markdownlint-cli2 (0.22.0)
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md

[warning] 385-385: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)


[warning] 689-689: Spaces inside code span elements

(MD038, no-space-in-code)

🔇 Additional comments (1)
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md (1)

13-477: 跟踪文档主结构完整,符合恢复治理预期

当前文档已覆盖“当前阶段/恢复点、完成结果、已知事实、风险、验证结果、下次恢复建议”等关键字段,且与 ai-plan/public/todos/** 的持续追踪用途一致。

As per coding guidelines: ai-plan/public/todos/** 要求跟踪更新反映 completed work、newly discovered issues、validation results 和 next recommended recovery point。

Comment thread ai-plan/public/todos/cqrs-rewrite-migration-tracking.md Outdated
- 修复 ai-plan 跟踪文档中命令示例的嵌套反引号问题
- 优化 rg 匹配串的 Markdown 渲染稳定性,避免 markdownlint 告警
- 保持原有验证语义不变,仅调整展示层面的文档写法
@github-actions
Copy link
Copy Markdown

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 35.7s    ↓323ms

Test Results

passed 2103 passed

Details

tests 2103 tests
clock 35.7s ↓323ms
tool nunit
build CI - Build & Test arrow-right build-and-test link #881
pull-request feat: CQRS cache hardening、ai-plan governance link #253

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2103 0 0 4.2s

build-and-test: Run #881

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 0 35.7s

🎉 All tests passed!

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
SendRequestAsync_Should_ResolveCqrsRuntime_OnlyOnce_When_AccessedConcurrently 4 3.9s 4.2s
Does_Not_Report_When_FieldInjectedModel_Is_Registered 4 2.1s 2.2s
Generates_Scene_Behavior_Boilerplate 4 1.9s 1.9s
CleanupDuringAcquire_Should_NotCauseRaceCondition 4 1.1s 1.1s
Append_ShouldNotBlock 4 1.0s 1.0s
Context_Caching_Should_Improve_Performance 4 779ms 786ms
PendingCount_ShouldReflectQueuedEntries 4 501ms 501ms
Cleanup_Should_NotRemoveActiveLocks 4 403ms 405ms
Cleanup_Should_RemoveUnusedLocks 4 401ms 402ms
Generates_Precise_Assembly_Type_Lookups_For_Inaccessible_External_Protected_Types 4 328ms 343ms

± Comparison with run #880 at 138c799 | 🎉 No failed tests detected across all runs. | 🍂 No flaky tests detected across all runs. | ⏱️ Measured over 4 runs.

Github Test Reporter by CTRF 💚

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md (1)

479-697: 建议将历史 RP 长段落拆分归档,降低后续追踪漂移风险

当前文档已非常长,且包含大量历史阶段细节。建议把 RP-015 ~ RP-041 历史记录迁移到 ai-plan/public/traces/ 或单独 archive 文档,主 tracking 仅保留“当前恢复点 + 最近两次变更 + 下一步”。这样可减少后续维护时出现阶段/编号不一致的概率。

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ai-plan/public/todos/cqrs-rewrite-migration-tracking.md` around lines 479 -
697, The document contains a long historical block (sections RP-015 through
RP-041) that should be split out to reduce tracking drift: extract the detailed
per-RP content currently in
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md (the headings "RP-015"
.. "RP-041" and their phase entries) into a separate archive under
ai-plan/public/traces/ (or a dedicated archive doc), leaving the main tracking
file to contain only the current recovery point, the last two RP summaries, and
the "下一步" list; update any internal references in this file to point to the new
archive and add a short pointer line (e.g., "历史记录见 ai-plan/public/traces/...")
where the removed sections were.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ai-plan/public/todos/cqrs-rewrite-migration-tracking.md`:
- Around line 469-474: The document's recovery step contradicts the current
phase: update the step that now prioritizes "Phase 7" so it matches the active
Phase 8 workflow (or add a clear precondition explaining why recovery should
revert to Phase 7); specifically edit the recovery list that references
CQRS-REWRITE-RP-042 and ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md so it either
points to Phase 8 actions or includes an explicit condition for returning to
Phase 7, and ensure the trace pointer
ai-plan/public/traces/cqrs-rewrite-migration-trace.md and the phrase "next
recommended recovery point" reflect that change.

---

Nitpick comments:
In `@ai-plan/public/todos/cqrs-rewrite-migration-tracking.md`:
- Around line 479-697: The document contains a long historical block (sections
RP-015 through RP-041) that should be split out to reduce tracking drift:
extract the detailed per-RP content currently in
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md (the headings "RP-015"
.. "RP-041" and their phase entries) into a separate archive under
ai-plan/public/traces/ (or a dedicated archive doc), leaving the main tracking
file to contain only the current recovery point, the last two RP summaries, and
the "下一步" list; update any internal references in this file to point to the new
archive and add a short pointer line (e.g., "历史记录见 ai-plan/public/traces/...")
where the removed sections were.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4fbc1735-3d96-4ce9-bfd6-3dd955bd8183

📥 Commits

Reviewing files that changed from the base of the PR and between 97b619c and ce5a9d5.

📒 Files selected for processing (1)
  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Analyze (C#)
  • GitHub Check: Code Quality & Security
  • GitHub Check: Build and Test
🧰 Additional context used
📓 Path-based instructions (2)
ai-plan/public/**

📄 CodeRabbit inference engine (AGENTS.md)

Keep committed ai-plan/public/** content safe to publish in Git history; never write secrets, tokens, credentials, private keys, machine usernames, home-directory paths, hostnames, IP addresses, proprietary URLs, or other sensitive environment details into any ai-plan/** file

Never record absolute file-system paths in ai-plan/**; use repository-relative paths, branch names, PR numbers, or stable document identifiers instead

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
ai-plan/public/todos/**

📄 CodeRabbit inference engine (AGENTS.md)

When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under ai-plan/public/todos/ in the same change

For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under ai-plan/public/todos/ before making substantive code changes

Files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
🧠 Learnings (8)
📓 Common learnings
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: Before choosing runtimes or CLI tools, read `@.ai/environment/tools.ai.yaml` for project-relevant tool preferences
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: Every completed task MUST pass at least one build validation before it is considered done
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: Commit messages MUST use Conventional Commits format: `<type>(<scope>): <summary>`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: The commit `summary` MUST use simplified Chinese and briefly describe the main change
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: The commit `body` MUST use unordered list items, and each item MUST start with a verb such as `新增`、`修复`、`优化`、`更新`、`补充`、`重构`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: Branch naming rule for a new task branch is `<type>/<topic-or-scope>`, where `<type>` should match the intended Conventional Commit category
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: Every user-facing package or module directory that contains a `*.csproj` intended for direct consumption MUST have a sibling `README.md`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:15:09.488Z
Learning: Prefer using the repository-maintained Codex boot skill at `.codex/skills/gframework-boot/` when the user uses short startup prompts
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point. Completing code changes without updating the active tracking document is considered incomplete work.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/Cqrs/**/*.cs : Use CQRS (Command Query Responsibility Segregation) pattern with the Cqrs naming entry point instead of the historical Mediator alias

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : Avoid logging secrets, tokens, credentials, or machine-specific sensitive data.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.

Applied to files:

  • ai-plan/public/todos/cqrs-rewrite-migration-tracking.md
🪛 LanguageTool
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md

[uncategorized] ~20-~20: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...沉到 GFramework.Cqrs - 已将 generator 从“整程序集回退”推进到“可见 handlers 走 typeof(...) 直注册,...

(wa5)


[uncategorized] ~22-~22: 您的意思是“"不"齐”?
Context: ...runtime fallback marker” - 已为手写/第三方程序集补齐正式的精确 fallback 入口:`CqrsReflectionFallba...

(BU)


[uncategorized] ~26-~26: 您的意思是“"不"齐”?
Context: ...只做常量时间绑定”的模式 - 已在 CqrsDispatcher 热路径补齐 service-type 缓存,减少 PublishAsync / `S...

(BU)


[uncategorized] ~27-~27: 您的意思是“"不"齐”?
Context: ... invoker method-definition 查找收敛为静态一次解析,并补齐 request/no-pipeline、request/with-pipel...

(BU)


[uncategorized] ~41-~41: 您的意思是“"不"反射”?
Context: ...Attribute` 对具体 handler implementation 定向补反射”; 若 runtime 合同不提供该 marker,则生成器保守地...

(BU)


[uncategorized] ~43-~43: 您的意思是“"不"齐”?
Context: ...y,避免静默漏注册 - 已完成一轮 review follow-up 小修:补齐 dispatcher string pipeline cache 清理,...

(BU)


[uncategorized] ~44-~44: 您的意思是“"不"齐”?
Context: ...用缓存与编译错误诊断输出 - 已完成三轮 review follow-up:补齐 ICqrsRuntime 异常/上下文约束文档,明确 `DefaultC...

(BU)


[uncategorized] ~47-~47: 您的意思是“"不"洞”?
Context: ...mainingReflectedHandlerInterfaces(...) 补洞推进到“按程序集名 + metadata name 定向 lookup”;I...

(BU)


[uncategorized] ~55-~55: 您的意思是“"不"齐”?
Context: ...-libs/**观察写入 active plan/trace 的触发条件,并补齐模板/接口注释中的旧Rule` 命名空间残留 ## 本轮计划 ### ...

(BU)


[uncategorized] ~93-~93: 您的意思是“"不"齐”?
Context: ...口 - [x] 提升 CqrsTestRuntime 反射绑定的签名鲁棒性并补齐 XML 文档 - [x] 将剩余 Mediator 兼容入口推进到正式弃...

(BU)


[uncategorized] ~141-~141: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...构 - [x] 将 partial reflection fallback 从“整程序集 GetTypes() 扫描”推进到“generator 输出精确 han...

(wa5)


[uncategorized] ~142-~142: 您的意思是“"不"齐”?
Context: ...embly.GetType(...)` 补扫” - [x] 为手写/第三方程序集补齐精确 fallback metadata 入口,避免这类场景只能依赖旧版空 m...

(BU)


[uncategorized] ~143-~143: 您的意思是“"不"齐”?
Context: ...rker 或脆弱的字符串约定 - [x] 为 CqrsDispatcher 补齐 notification/request/stream service-ty...

(BU)


[uncategorized] ~144-~144: 您的意思是“"不"齐”?
Context: ...ericType重复开销 - [x] 为CqrsDispatcher` 补齐 invoker method-definition 静态缓存,并把 requ...

(BU)


[uncategorized] ~159-~159: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...载精确 fallback handler 类型名清单;当清单为空时,仍保持旧版“整程序集补扫”的兼容语义。 - `GFramework.Cqrs/CqrsReflec...

(wa5)


[uncategorized] ~171-~171: 您的意思是“"不"位”?
Context: ...出现新的未覆盖类型形态,则改由程序集级 targeted fallback 合同补位 - `GFramework.SourceGenerators/Cqrs/Cq...

(BU)


[uncategorized] ~182-~182: 能愿动词不能成为‘把’字句、‘被’字句的谓语动词。应该是:"能把……“"。
Context: ...Cqrs/CqrsHandlerRegistryGenerator.cs现已把“生成注册器顶层上下文是否能合法书写某个类型”改为通过Compilation.IsSymbolAcces...

(wa3)


[uncategorized] ~186-~186: 您的意思是“"不"洞”?
Context: ... 内部的 implementation 级 GetInterfaces() 补洞辅助逻辑: - 不再生成 `RegisterRemainingReflec...

(BU)


[uncategorized] ~189-~189: 您的意思是“"不"反射”?
Context: ...Attribute对具体 handler implementation 定向补反射 -GFramework.SourceGenerators.Tests/...

(BU)


[uncategorized] ~196-~196: 您的意思是“"不"齐”?
Context: ...sMetadataReferenceTestBuilder.cs` 已补齐多程序集测试基础设施,允许 CQRS generator 回归显式追加内存元数...

(BU)


[uncategorized] ~197-~197: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...Assembly.GetType(...)补扫;只有缺少精确元数据时才继续走整程序集GetTypes()扫描。 -GFramework.Cqrs.Te...

(wa5)


[uncategorized] ~218-~218: 您的意思是“"不"入”?
Context: ...d已完成最小同步: - 根 README 的模块表、仓库结构与安装指引已补入GFramework.Cqrs` 以及拆分后的 SourceGenerat...

(BU)


[uncategorized] ~229-~229: 您的意思是“"不"齐”?
Context: ...ork.Cqrs.Abstractions/GlobalUsings.cs已补齐基础 system 命名空间,避免新项目在关闭ImplicitUsings...

(BU)


[uncategorized] ~236-~236: 您的意思是“"不"齐”?
Context: ...alUsings.csLogging/TestLogger.cs已补齐,确保新测试项目不再隐式依赖GFramework.Core.Tests` ...

(BU)


[uncategorized] ~242-~242: 您的意思是“"不"反射”?
Context: ...写/第三方程序集或 generator 仍未直接覆盖的场景需要 runtime 补反射”的程序集级兼容入口。 - `GFramework.SourceGenera...

(BU)


[uncategorized] ~297-~297: 您的意思是“"不"回”?
Context: ...handler”回归已适配 seam 方案:在裸容器 Clear() 后显式补回测试基础设施,再验证程序集去重状态重置。 - `ai-plan/migrati...

(BU)


[uncategorized] ~325-~325: 您的意思是“"不"齐”?
Context: ...r以及MessageHandlerDelegate` 的 XML 文档已补齐迁移后的契约边界,明确旧 Command/Query 总线与新 CQRS ...

(BU)


[uncategorized] ~333-~333: 您的意思是“"不"齐”?
Context: ...behavior 链式执行 - CqrsHandlerRegistrar 已补齐三项运行时硬化: - 按程序集名、处理器类型名与处理器接口名稳定排序,...

(BU)


[uncategorized] ~343-~343: 您的意思是“"不"齐”?
Context: ...注册 + warning 已记录”。 - CqrsTestRuntime 已补齐 XML 文档,并改为按 `IIocContainer + IEnumerab...

(BU)


[uncategorized] ~362-~362: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...处理器(例如私有嵌套 handler),生成注册器会改走定向反射注册,而不是退回整程序集补扫 - CqrsHandlerRegistrar 已改为优先查找 `Cq...

(wa5)


[uncategorized] ~366-~366: 您的意思是“"不"齐”?
Context: ...sts/Cqrs/CqrsHandlerRegistrarTests.cs` 已补齐: - 生成器输出快照测试 - 私有嵌套 handler 走 gene...

(BU)


[uncategorized] ~379-~379: 您的意思是“"不"齐”?
Context: ...ions.DependencyInjectionusing, 已补齐以恢复 IServiceCollection` 编译通过。 - 当前验证状态...

(BU)


[uncategorized] ~495-~495: 您的意思是“"不"齐”?
Context: ...径恢复验证链路: - scripts/GlobalUsings.cs 已补齐新的 GFramework.Cqrs.Abstractions.Cqrs*...

(BU)


[uncategorized] ~517-~517: 您的意思是“"不"齐”?
Context: ...首次访问时只执行一次容器解析 - ArchitectureContext 已补齐公开构造函数 XML 文档,以及 CqrsRuntime 惰性初始化的并发...

(BU)


[uncategorized] ~522-~522: 您的意思是“"不"齐”?
Context: ... GFramework.Cqrs.Tests 已通过链接编译同一份共享源码并补齐 global using, 避免两个测试项目继续维护分叉的反射绑定逻...

(BU)


[uncategorized] ~597-~597: 您的意思是“"不"齐”?
Context: ...qrs.Abstractions/Cqrs/ICqrsRuntime.cs已补齐三个公开方法的 XML 契约: -null参数对应Argume...

(BU)


[uncategorized] ~620-~620: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:细"地"回归
Context: ...lias + duplicate registration 组合场景再补一条更细的回归测试 ## 2026-04-16 补充记录(RP-033) ### 阶段...

(wb4)


[uncategorized] ~627-~627: 您的意思是“"不"齐”?
Context: ...eTests.csClearDispatcherCaches()已补齐 RequestPipelineInvokerCache...

(BU)

🪛 markdownlint-cli2 (0.22.0)
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md

[warning] 385-385: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)

🔇 Additional comments (1)
ai-plan/public/todos/cqrs-rewrite-migration-tracking.md (1)

402-405: 公开追踪文档的路径脱敏与恢复点统一处理到位

这里已经避免写入机器本地绝对路径,并且明确记录了恢复点编号统一动作,符合 ai-plan/public/** 的公开安全约束,处理很好。

Also applies to: 720-722

- 重构 ai-plan public 结构为按主题分组并引入归档层级
- 新增 public README worktree 映射并同步 boot 启动入口
- 更新治理 tracking trace 与仓库文档中的 ai-plan 路径约定
@github-actions
Copy link
Copy Markdown

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 35.9s    ↑189ms

Test Results

passed 2103 passed

Details

tests 2103 tests
clock 35.9s ↑189ms
tool nunit
build CI - Build & Test arrow-right build-and-test link #882
pull-request feat: CQRS cache hardening、ai-plan governance link #253

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2103 0 0 4.7s

build-and-test: Run #882

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 0 35.9s

🎉 All tests passed!

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
SendRequestAsync_Should_ResolveCqrsRuntime_OnlyOnce_When_AccessedConcurrently 5 4.1s 4.7s
Does_Not_Report_When_FieldInjectedModel_Is_Registered 5 2.1s 2.2s
Generates_Scene_Behavior_Boilerplate 5 1.9s 1.9s
CleanupDuringAcquire_Should_NotCauseRaceCondition 5 1.1s 1.1s
Append_ShouldNotBlock 5 1.0s 1.0s
Context_Caching_Should_Improve_Performance 5 781ms 789ms
PendingCount_ShouldReflectQueuedEntries 5 501ms 501ms
Cleanup_Should_NotRemoveActiveLocks 5 404ms 405ms
Cleanup_Should_RemoveUnusedLocks 5 401ms 402ms
Generates_Precise_Assembly_Type_Lookups_For_Inaccessible_External_Protected_Types 5 325ms 343ms

± Comparison with run #881 at d39cf23 | 🎉 No failed tests detected across all runs. | 🍂 No flaky tests detected across all runs. | ⏱️ Measured over 5 runs.

Github Test Reporter by CTRF 💚

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md (1)

473-474: ⚠️ Potential issue | 🟡 Minor

恢复主线阶段与当前阶段不一致

Line 16 已明确当前阶段是 Phase 8,但 Line 473 仍要求优先继续 Phase 7,恢复时会造成执行顺序歧义。建议统一为当前主线,或补充“回退到 Phase 7 的前置条件”。

✏️ 建议修改
-3. 优先继续执行 `ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` 中的 Phase 7:
+3. 优先继续执行 `ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` 中的 Phase 8(当前主线):

As per coding guidelines: ai-plan/public/*/todos/** 的恢复文档必须准确记录当前阶段与 next recommended resume step。

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md` around
lines 473 - 474, The document inconsistently references Phase 7 at the resume
step while the current stage is declared as Phase 8; update the resume
instruction in
ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md so it
either (a) aligns with the current Phase 8 mainline by changing the "优先继续执行
`ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` 中的 Phase 7" text to recommend
resuming Phase 8, or (b) explicitly adds a clear precondition that explains when
to fall back to Phase 7 (e.g., "only revert to Phase 7 if <specific
condition>"), and reference the related plan file
`ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` and the phases `Phase 7` / `Phase
8` in the updated sentence.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md`:
- Around line 46-55: Two identical section headings ("### 验证" and "### 下一步")
appear twice causing MD024 anchor conflicts; update the duplicate headings in
this file (the second occurrences) to include a unique recovery/checkpoint
suffix (e.g., "### 验证 — 恢复点 X" or "### 下一步 — 恢复点 X") so anchors are unique and
navigation works; locate the duplicated headings by searching for the exact
strings "### 验证" and "### 下一步" in ai-plan-governance-trace.md and rename the
later occurrences consistently.

---

Duplicate comments:
In `@ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md`:
- Around line 473-474: The document inconsistently references Phase 7 at the
resume step while the current stage is declared as Phase 8; update the resume
instruction in
ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md so it
either (a) aligns with the current Phase 8 mainline by changing the "优先继续执行
`ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` 中的 Phase 7" text to recommend
resuming Phase 8, or (b) explicitly adds a clear precondition that explains when
to fall back to Phase 7 (e.g., "only revert to Phase 7 if <specific
condition>"), and reference the related plan file
`ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md` and the phases `Phase 7` / `Phase
8` in the updated sentence.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: fdc37faa-2046-4d8a-9816-5a25f11fc7c1

📥 Commits

Reviewing files that changed from the base of the PR and between ce5a9d5 and c82518a.

📒 Files selected for processing (13)
  • .codex/skills/gframework-boot/SKILL.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
  • .gitignore
  • AGENTS.md
  • README.md
  • ai-plan/README.md
  • ai-plan/public/README.md
  • ai-plan/public/ai-plan-governance/todos/ai-plan-governance-tracking.md
  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
  • ai-plan/public/cqrs-rewrite/traces/cqrs-rewrite-migration-trace.md
✅ Files skipped from review due to trivial changes (6)
  • README.md
  • .gitignore
  • ai-plan/public/README.md
  • ai-plan/public/ai-plan-governance/todos/ai-plan-governance-tracking.md
  • AGENTS.md
  • .codex/skills/gframework-boot/references/startup-artifacts.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Analyze (C#)
  • GitHub Check: Code Quality & Security
🧰 Additional context used
📓 Path-based instructions (3)
ai-plan/public/**

📄 CodeRabbit inference engine (AGENTS.md)

Contributors MUST keep committed ai-plan/public/** content safe to publish in Git history; never write secrets, tokens, credentials, private keys, usernames, paths, hostnames, IPs, or other sensitive data

Files:

  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
ai-plan/**

📄 CodeRabbit inference engine (AGENTS.md)

Never record absolute file-system paths in ai-plan/**; use repository-relative paths, branch names, PR numbers, or stable document identifiers instead

Files:

  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/README.md
  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
ai-plan/public/*/todos/**

📄 CodeRabbit inference engine (AGENTS.md)

When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under ai-plan/public/<topic>/todos/ in the same change

Recovery documents in ai-plan/public/<topic>/todos/ MUST record the current phase, active recovery point identifier, known risks, and next recommended resume step

Files:

  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
🧠 Learnings (10)
📓 Common learnings
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Read `@.ai/environment/tools.ai.yaml` before choosing runtimes or CLI tools
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Use `@.ai/environment/tools.raw.yaml` only when you need the full collected facts behind the AI-facing hints
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Prefer Windows Git from WSL (`git.exe`) instead of the Linux `git` binary when working in WSL against the repository's Windows-backed worktree
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Every completed task MUST pass at least one build validation before it is considered done
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Commit messages MUST use Conventional Commits format: `<type>(<scope>): <summary>` with summary in simplified Chinese and body using unordered list with action verbs
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: When a new task starts on `main` branch, first update local `main` from remote, then create and switch to a dedicated branch with naming rule `<type>/<topic-or-scope>`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Prefer invoking `$gframework-boot` when the user uses short startup prompts such as `boot`, `continue`, `next step`
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Use subagents only when the task is complex, context is likely to grow too large, or work can be split into independent parallel subtasks
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Keep abstractions projects free of implementation details and engine-specific dependencies
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Preserve existing module boundaries; do not introduce new cross-module dependencies without clear architectural need
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Preserve deterministic behavior in registries, lifecycle orchestration, and generated outputs
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Every non-trivial feature, bug fix, or behavior change MUST include tests or an explicit justification for why a test is not practical
Learnt from: CR
Repo: GeWuYou/GFramework

Timestamp: 2026-04-19T02:49:16.364Z
Learning: Keep code under `ai-libs/**` as read-only third-party source reference; do not modify it unless the user explicitly asks to sync or update
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : Contributors MUST maintain a matching execution trace under `local-plan/traces/` for complex work. The trace should record the current date, key decisions, validation milestones, and the immediate next step. When a task spans multiple commits or is likely to exceed a single agent context window, update both the recovery document and the trace at each meaningful milestone before pausing or handing work off.

Applied to files:

  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/README.md
  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Treat source code, `*.csproj`, tests, generated snapshots, and packaging metadata as the primary evidence for documentation updates. Treat `CoreGrid` as a secondary evidence source for real project adoption patterns, directory layouts, and end-to-end usage examples. Treat existing `README.md` files and `docs/zh-CN/` pages as editable outputs, not authoritative truth. If existing documentation conflicts with code or tests, update the documentation to match the implementation instead of preserving outdated wording. Do not publish example code, setup steps, or package guidance that cannot be traced back to code, tests, or a verified consumer project.

Applied to files:

  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to **/*.cs : When adding caching, pooling, or shared mutable state, document thread-safety assumptions and failure modes.

Applied to files:

  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
📚 Learning: 2026-04-17T11:35:08.735Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-17T11:35:08.735Z
Learning: Applies to **/*{Startup,Init,Register,Setup,Configure}*.cs : CQRS handler registration should use generated products from CqrsHandlerRegistryGenerator at runtime, falling back to reflection scanning when generation cannot cover cases; explicitly register handlers from non-default assemblies using RegisterCqrsHandlersFromAssembly(...) or RegisterCqrsHandlersFromAssemblies(...)

Applied to files:

  • ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : For any multi-step refactor, migration, or cross-module task, contributors MUST create or adopt a dedicated recovery document under `local-plan/todos/` before making substantive code changes. Recovery documents MUST record the current phase, the active recovery point identifier, known risks, and the next recommended resume step.

Applied to files:

  • ai-plan/README.md
  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/todos/**/*.md : When working from a tracked implementation plan, contributors MUST update the corresponding tracking document under `local-plan/todos/` in the same change. Tracking updates MUST reflect completed work, newly discovered issues, validation results, and the next recommended recovery point. Completing code changes without updating the active tracking document is considered incomplete work.

Applied to files:

  • ai-plan/README.md
  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
  • ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md
  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to README.md : If a module's responsibilities, setup, public API surface, generator inputs, or adoption path change, update that module's `README.md` in the same change. Adding a new top-level module directory without a `README.md` is considered incomplete work.

Applied to files:

  • ai-plan/README.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to local-plan/traces/** : If subagents are used on a complex task, the main agent MUST capture the delegated scope and any accepted findings in the active recovery document or trace before continuing implementation.

Applied to files:

  • ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md
📚 Learning: 2026-04-18T14:00:12.900Z
Learnt from: CR
Repo: GeWuYou/GFramework PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-18T14:00:12.900Z
Learning: Applies to docs/zh-CN/**/*.md : When a feature is added, removed, renamed, or substantially refactored, contributors MUST update or create the corresponding user-facing integration documentation in `docs/zh-CN/` in the same change. For integration-oriented features, documentation MUST cover project directory layout and file conventions, required project or package wiring, minimal working usage example, and migration or compatibility notes when behavior changes.

Applied to files:

  • ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md
🪛 LanguageTool
ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md

[grammar] ~8-~8: Ensure spelling is correct
Context: ...nce omits GeWuYou.GFramework.Cqrs and GeWuYou.GFramework.Cqrs.Abstractions even though the module ov...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~12-~12: Ensure spelling is correct
Context: ...ge, or compatibility notes. - Confirmed `GFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~37-~37: Ensure spelling is correct
Context: ...mework.Cqrs.) and handler base types (GFramework.Cqrs.Cqrs.). - Updated docs/zh-CN/source-...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~47-~47: Ensure spelling is correct
Context: ...nal/CqrsHandlerRegistrar.cs- ExpandedGFramework.Cqrs.Tests/Cqrs/CqrsHandlerRegistrarTests.cs...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~49-~49: Ensure spelling is correct
Context: ...rs after the cache is reused. - Updated GFramework.Cqrs.Tests/Cqrs/CqrsDispatcherCacheTests.cs...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~51-~51: Ensure spelling is correct
Context: ...ion to change handler doc examples from using GFramework.Cqrs.Cqrs.Command; to `using GFramework.C...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~51-~51: Ensure spelling is correct
Context: ...using GFramework.Cqrs.Cqrs.Command;to using GFramework.Cqrs.Command;`. The repository's actual hand...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~52-~52: Ensure spelling is correct
Context: ...ual handler base types still live under GFramework.Cqrs.Cqrs.*, so the implementation kept the...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

.codex/skills/gframework-boot/SKILL.md

[style] ~17-~17: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...nfirm the preferred local toolchain. 3. Read ai-plan/public/README.md before askin...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~35-~35: Specify a number, remove phrase, use “a few”, or use “some”
Context: ...allel discovery required - medium: a small number of modules, some read-only exploration hel...

(SMALL_NUMBER_OF)


[style] ~66-~66: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ..., prefer resuming those topics first. - If the repository state suggests in-flight...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~77-~77: Consider using the synonym “brief” (= concise, using a few words, not lasting long) to strengthen your wording.
Context: ...s/startup-artifacts.md` when you need a quick reminder of the repository entrypoints,...

(QUICK_BRIEF)

ai-plan/README.md

[style] ~37-~37: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...facts into public/<topic>/archive/. - When a topic is complete, move the whole top...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md

[uncategorized] ~16-~16: 您的意思是“"不"齐”?
Context: ...md作为目录语义与内容规范的单点说明 - 在AGENTS.md` 中补齐 public/private 职责边界,以及敏感信息与绝对路径禁写规则 ...

(BU)

ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md

[grammar] ~45-~45: Ensure spelling is correct
Context: ...ly did not rename handler examples from GFramework.Cqrs.Cqrs.* to GFramework.Cqrs.*, becau...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md

[uncategorized] ~20-~20: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...沉到 GFramework.Cqrs - 已将 generator 从“整程序集回退”推进到“可见 handlers 走 typeof(...) 直注册,...

(wa5)


[uncategorized] ~22-~22: 您的意思是“"不"齐”?
Context: ...runtime fallback marker” - 已为手写/第三方程序集补齐正式的精确 fallback 入口:`CqrsReflectionFallba...

(BU)


[uncategorized] ~26-~26: 您的意思是“"不"齐”?
Context: ...只做常量时间绑定”的模式 - 已在 CqrsDispatcher 热路径补齐 service-type 缓存,减少 PublishAsync / `S...

(BU)


[uncategorized] ~27-~27: 您的意思是“"不"齐”?
Context: ... invoker method-definition 查找收敛为静态一次解析,并补齐 request/no-pipeline、request/with-pipel...

(BU)


[uncategorized] ~41-~41: 您的意思是“"不"反射”?
Context: ...Attribute` 对具体 handler implementation 定向补反射”; 若 runtime 合同不提供该 marker,则生成器保守地...

(BU)


[uncategorized] ~43-~43: 您的意思是“"不"齐”?
Context: ...y,避免静默漏注册 - 已完成一轮 review follow-up 小修:补齐 dispatcher string pipeline cache 清理,...

(BU)


[uncategorized] ~44-~44: 您的意思是“"不"齐”?
Context: ...用缓存与编译错误诊断输出 - 已完成三轮 review follow-up:补齐 ICqrsRuntime 异常/上下文约束文档,明确 `DefaultC...

(BU)


[uncategorized] ~47-~47: 您的意思是“"不"洞”?
Context: ...mainingReflectedHandlerInterfaces(...) 补洞推进到“按程序集名 + metadata name 定向 lookup”;I...

(BU)


[uncategorized] ~55-~55: 您的意思是“"不"齐”?
Context: ...-libs/**观察写入 active plan/trace 的触发条件,并补齐模板/接口注释中的旧Rule` 命名空间残留 ## 本轮计划 ### ...

(BU)


[uncategorized] ~93-~93: 您的意思是“"不"齐”?
Context: ...口 - [x] 提升 CqrsTestRuntime 反射绑定的签名鲁棒性并补齐 XML 文档 - [x] 将剩余 Mediator 兼容入口推进到正式弃...

(BU)


[uncategorized] ~141-~141: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...构 - [x] 将 partial reflection fallback 从“整程序集 GetTypes() 扫描”推进到“generator 输出精确 han...

(wa5)


[uncategorized] ~142-~142: 您的意思是“"不"齐”?
Context: ...embly.GetType(...)` 补扫” - [x] 为手写/第三方程序集补齐精确 fallback metadata 入口,避免这类场景只能依赖旧版空 m...

(BU)


[uncategorized] ~143-~143: 您的意思是“"不"齐”?
Context: ...rker 或脆弱的字符串约定 - [x] 为 CqrsDispatcher 补齐 notification/request/stream service-ty...

(BU)


[uncategorized] ~144-~144: 您的意思是“"不"齐”?
Context: ...ericType重复开销 - [x] 为CqrsDispatcher` 补齐 invoker method-definition 静态缓存,并把 requ...

(BU)


[uncategorized] ~159-~159: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...载精确 fallback handler 类型名清单;当清单为空时,仍保持旧版“整程序集补扫”的兼容语义。 - `GFramework.Cqrs/CqrsReflec...

(wa5)


[uncategorized] ~171-~171: 您的意思是“"不"位”?
Context: ...出现新的未覆盖类型形态,则改由程序集级 targeted fallback 合同补位 - `GFramework.SourceGenerators/Cqrs/Cq...

(BU)


[uncategorized] ~182-~182: 能愿动词不能成为‘把’字句、‘被’字句的谓语动词。应该是:"能把……“"。
Context: ...Cqrs/CqrsHandlerRegistryGenerator.cs现已把“生成注册器顶层上下文是否能合法书写某个类型”改为通过Compilation.IsSymbolAcces...

(wa3)


[uncategorized] ~186-~186: 您的意思是“"不"洞”?
Context: ... 内部的 implementation 级 GetInterfaces() 补洞辅助逻辑: - 不再生成 `RegisterRemainingReflec...

(BU)


[uncategorized] ~189-~189: 您的意思是“"不"反射”?
Context: ...Attribute对具体 handler implementation 定向补反射 -GFramework.SourceGenerators.Tests/...

(BU)


[uncategorized] ~196-~196: 您的意思是“"不"齐”?
Context: ...sMetadataReferenceTestBuilder.cs` 已补齐多程序集测试基础设施,允许 CQRS generator 回归显式追加内存元数...

(BU)


[uncategorized] ~197-~197: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...Assembly.GetType(...)补扫;只有缺少精确元数据时才继续走整程序集GetTypes()扫描。 -GFramework.Cqrs.Te...

(wa5)


[uncategorized] ~218-~218: 您的意思是“"不"入”?
Context: ...d已完成最小同步: - 根 README 的模块表、仓库结构与安装指引已补入GFramework.Cqrs` 以及拆分后的 SourceGenerat...

(BU)


[uncategorized] ~229-~229: 您的意思是“"不"齐”?
Context: ...ork.Cqrs.Abstractions/GlobalUsings.cs已补齐基础 system 命名空间,避免新项目在关闭ImplicitUsings...

(BU)


[uncategorized] ~236-~236: 您的意思是“"不"齐”?
Context: ...alUsings.csLogging/TestLogger.cs已补齐,确保新测试项目不再隐式依赖GFramework.Core.Tests` ...

(BU)


[uncategorized] ~242-~242: 您的意思是“"不"反射”?
Context: ...写/第三方程序集或 generator 仍未直接覆盖的场景需要 runtime 补反射”的程序集级兼容入口。 - `GFramework.SourceGenera...

(BU)


[uncategorized] ~297-~297: 您的意思是“"不"回”?
Context: ...handler”回归已适配 seam 方案:在裸容器 Clear() 后显式补回测试基础设施,再验证程序集去重状态重置。 - `ai-plan/migrati...

(BU)


[uncategorized] ~325-~325: 您的意思是“"不"齐”?
Context: ...r以及MessageHandlerDelegate` 的 XML 文档已补齐迁移后的契约边界,明确旧 Command/Query 总线与新 CQRS ...

(BU)


[uncategorized] ~333-~333: 您的意思是“"不"齐”?
Context: ...behavior 链式执行 - CqrsHandlerRegistrar 已补齐三项运行时硬化: - 按程序集名、处理器类型名与处理器接口名稳定排序,...

(BU)


[uncategorized] ~343-~343: 您的意思是“"不"齐”?
Context: ...注册 + warning 已记录”。 - CqrsTestRuntime 已补齐 XML 文档,并改为按 `IIocContainer + IEnumerab...

(BU)


[uncategorized] ~362-~362: 数词与名词之间一般应存在量词,可能缺少量词。
Context: ...处理器(例如私有嵌套 handler),生成注册器会改走定向反射注册,而不是退回整程序集补扫 - CqrsHandlerRegistrar 已改为优先查找 `Cq...

(wa5)


[uncategorized] ~366-~366: 您的意思是“"不"齐”?
Context: ...sts/Cqrs/CqrsHandlerRegistrarTests.cs` 已补齐: - 生成器输出快照测试 - 私有嵌套 handler 走 gene...

(BU)


[uncategorized] ~379-~379: 您的意思是“"不"齐”?
Context: ...ions.DependencyInjectionusing, 已补齐以恢复 IServiceCollection` 编译通过。 - 当前验证状态...

(BU)


[uncategorized] ~495-~495: 您的意思是“"不"齐”?
Context: ...径恢复验证链路: - scripts/GlobalUsings.cs 已补齐新的 GFramework.Cqrs.Abstractions.Cqrs*...

(BU)


[uncategorized] ~517-~517: 您的意思是“"不"齐”?
Context: ...首次访问时只执行一次容器解析 - ArchitectureContext 已补齐公开构造函数 XML 文档,以及 CqrsRuntime 惰性初始化的并发...

(BU)


[uncategorized] ~522-~522: 您的意思是“"不"齐”?
Context: ... GFramework.Cqrs.Tests 已通过链接编译同一份共享源码并补齐 global using, 避免两个测试项目继续维护分叉的反射绑定逻...

(BU)


[uncategorized] ~597-~597: 您的意思是“"不"齐”?
Context: ...qrs.Abstractions/Cqrs/ICqrsRuntime.cs已补齐三个公开方法的 XML 契约: -null参数对应Argume...

(BU)


[uncategorized] ~620-~620: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:细"地"回归
Context: ...lias + duplicate registration 组合场景再补一条更细的回归测试 ## 2026-04-16 补充记录(RP-033) ### 阶段...

(wb4)


[uncategorized] ~627-~627: 您的意思是“"不"齐”?
Context: ...eTests.csClearDispatcherCaches()已补齐 RequestPipelineInvokerCache...

(BU)

🪛 markdownlint-cli2 (0.22.0)
ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md

[warning] 46-46: Multiple headings with the same content

(MD024, no-duplicate-heading)


[warning] 55-55: Multiple headings with the same content

(MD024, no-duplicate-heading)

ai-plan/public/cqrs-rewrite/todos/cqrs-rewrite-migration-tracking.md

[warning] 385-385: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)

🔇 Additional comments (4)
ai-plan/public/archive/cqrs-cache-docs-hardening/todos/cqrs-cache-docs-hardening-tracking.md (1)

1-67: 文档结构完整,治理约束符合预期

该跟踪文档已包含恢复点、阶段、风险、验证与恢复建议,且内容可公开、无本地敏感信息泄露风险。

ai-plan/README.md (1)

1-56: 目录语义与安全规则定义清晰

ai-plan 的 public/private 边界、归档策略和内容约束表述完整,和当前治理目标一致。

ai-plan/public/archive/cqrs-cache-docs-hardening/traces/cqrs-cache-docs-hardening-trace.md (1)

1-90: 追踪记录完整且可恢复性良好

阶段决策、验证过程与后续动作记录齐全,符合复杂任务 trace 的可恢复要求。

.codex/skills/gframework-boot/SKILL.md (1)

1-77: 启动工作流规则一致且可执行

启动顺序、恢复启发式、任务复杂度分级和委派策略定义完整,能直接支撑 boot/resume 场景。

Comment thread ai-plan/public/ai-plan-governance/traces/ai-plan-governance-trace.md Outdated
GeWuYou added 2 commits April 19, 2026 11:35
- 修复 ai-plan 治理 trace 中重复的 Markdown 标题并追加恢复点后缀,消除 MD024 锚点冲突
- 更新 ai-plan 治理 tracking,记录本次 PR review 修正和文本校验结果
- 修复 cqrs-rewrite 跟踪文档的下次恢复建议,使当前主线阶段与 Phase 8 保持一致
- 补充 cqrs-rewrite trace,记录本次 PR review 复核结论与恢复点更新
- 优化 gframework-pr-review 输出,明确 open thread 中的 Addressed in commit 文案仍需本地验证
@github-actions
Copy link
Copy Markdown

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 35.6s    ↓296ms

Test Results

passed 2103 passed

Details

tests 2103 tests
clock 35.6s ↓296ms
tool nunit
build CI - Build & Test arrow-right build-and-test link #883
pull-request feat: CQRS cache hardening、ai-plan governance link #253

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2103 0 0 4.7s

build-and-test: Run #883

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
2103 2103 0 0 0 0 0 35.6s

🎉 All tests passed!

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
SendRequestAsync_Should_ResolveCqrsRuntime_OnlyOnce_When_AccessedConcurrently 6 3.9s 4.7s
Does_Not_Report_When_FieldInjectedModel_Is_Registered 6 2.1s 2.2s
Generates_Scene_Behavior_Boilerplate 6 1.9s 1.9s
CleanupDuringAcquire_Should_NotCauseRaceCondition 6 1.1s 1.1s
Append_ShouldNotBlock 6 1.0s 1.0s
Context_Caching_Should_Improve_Performance 6 781ms 789ms
PendingCount_ShouldReflectQueuedEntries 6 501ms 501ms
Cleanup_Should_NotRemoveActiveLocks 6 404ms 405ms
Cleanup_Should_RemoveUnusedLocks 6 401ms 402ms
Generates_Precise_Assembly_Type_Lookups_For_Inaccessible_External_Protected_Types 6 329ms 349ms

± Comparison with run #882 at 35b89f8 | 🎉 No failed tests detected across all runs. | 🍂 No flaky tests detected across all runs. | ⏱️ Measured over 6 runs.

Github Test Reporter by CTRF 💚

@GeWuYou GeWuYou merged commit f5b3cfd into main Apr 19, 2026
7 checks passed
@GeWuYou GeWuYou deleted the feat/cqrs-optimization branch April 19, 2026 04:12
GeWuYou added a commit that referenced this pull request Apr 20, 2026
- 更新 CQRS 重写跟踪中的恢复点与活跃事实,记录 PR #253 已关闭且剩余 thread 为 stale review\n- 调整 CQRS 重写 trace 的下一步,恢复 Phase 8 主线优先级
GeWuYou added a commit that referenced this pull request Apr 20, 2026
- 更新 CQRS 重写跟踪中的恢复点与活跃事实,记录 PR #253 已关闭且剩余 thread 为 stale review\n- 调整 CQRS 重写 trace 的下一步,恢复 Phase 8 主线优先级
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant