GFramework/ai-plan/public/documentation-governance-and-refresh/traces/documentation-governance-and-refresh-trace.md
GeWuYou 48e45787f3 docs(source-generators): 收口上下文与优先级生成器文档
- 重写 ContextAware 与 Priority 专题页,按当前生成成员、priority-aware API 和兼容边界说明使用方式\n- 更新 documentation-governance-and-refresh 的 tracking 与 trace,记录 RP-007 与后续 Godot 生成器核对重点\n- 验证 docs 站点构建通过
2026-04-21 16:26:13 +08:00

13 KiB
Raw Blame History

Documentation Governance And Refresh 追踪

2026-04-19

阶段local-plan 迁移收口RP-001

  • 复核当前工作树后确认worktree 根目录仅剩一个 legacy local-plan/,其内容属于文档治理与重写主题的 durable recovery state不应继续作为独立根目录入口存在
  • ai-plan 治理规则建立 ai-plan/public/documentation-governance-and-refresh/ 主题目录,并补齐:
    • todos/
    • traces/
    • archive/todos/
    • archive/traces/
  • 将原 local-plan 中的详细 tracking / trace 迁入主题内历史归档,并为 active 入口只保留当前恢复点、 活跃事实、风险与下一步
  • ai-plan/public/README.md 中建立 docs/sdk-update-documentation -> documentation-governance-and-refresh 的 worktree 映射
  • 同步更新 ai-plan-governance 的 tracking / trace记录本次迁移已验证当前工作树不再依赖 worktree-root local-plan/

Archive Context

  • 历史跟踪归档:
    • ai-plan/public/documentation-governance-and-refresh/archive/todos/documentation-governance-and-refresh-history-through-2026-04-18.md
  • 历史 trace 归档:
    • ai-plan/public/documentation-governance-and-refresh/archive/traces/documentation-governance-and-refresh-history-through-2026-04-18.md

下一步RP-001

  1. 后续继续该主题时,只从 ai-plan/public/documentation-governance-and-refresh/ 进入,不再恢复 local-plan/
  2. 若 active 入口再次积累多轮已完成且已验证阶段,继续按同一模式迁入该主题自己的 archive/

2026-04-21

阶段:栏目 landing page 收口RP-002

  • 依据 ai-plan/public/README.md 的 worktree 映射恢复 documentation-governance-and-refresh 主题,并确认该分支下一步应优先处理 docs/zh-CN/core/*game/*source-generators/*
  • 复核 docs/zh-CN/core/index.mddocs/zh-CN/game/index.mddocs/zh-CN/source-generators/index.md 后确认:这三页仍保留旧版“大而全教程”结构,与当前模块 README、包拆分关系和推荐接入路径明显漂移
  • 对照 GFramework.Core/README.mdGFramework.Game/README.mdGFramework.Core.SourceGenerators/README.mdGFramework.Game.SourceGenerators/README.mdGFramework.Cqrs.SourceGenerators/README.mdGFramework.Godot.SourceGenerators/README.md,重写三个栏目 landing page使其回到“模块定位、包关系、最小接入路径、继续阅读”的可信入口形态
  • 首次执行 cd docs && bun run build 时发现 VitePress 会把跳到 docs/ 目录外的相对链接判定为 dead link因此将 landing page 末尾的模块 README 入口改为纯文本路径提示而非站内链接
  • 第二次执行 cd docs && bun run build 通过,说明当前 landing page 重写没有破坏站点构建

当前结论

  • 当前默认导航入口已显著收敛,但专题页仍需逐页按源码与测试继续核对
  • 后续优先级应从 core 专题页开始,再向 gamesource-generators 扩展

下一步RP-002

  1. 审核 docs/zh-CN/core/architecture.mdcontext.mdlifecycle.mdcommand.mdquery.mdcqrs.md
  2. 记录每页的失真点、真实 API 名称与应保留的最小示例
  3. 完成一轮专题页重写后再次执行 cd docs && bun run build

补充2026-04-21 内容引用迁移

  • 按当前文档治理主题,继续清理活跃规范与面向读者的内容入口中的旧参考仓库命名
  • AGENTS.md 已把“secondary evidence source”从特定项目名收口为 ai-libs/ 下的已验证只读参考实现
  • GFramework.Game/README.mdGFramework.Game.Abstractions/README.mddocs/zh-CN/game/index.md 已同步改为 ai-libs/ 参考表述,并去掉特定参考项目名称与项目内类型名线索
  • documentation-governance-and-refresh active tracking 已同步把风险缓解中的参考来源更新为 ai-libs/ 下已验证参考实现
  • 下一次专题页重写时,继续沿用同一表述,不再把特定参考项目名写入新的活跃文档入口

补充2026-04-21 Core 专题页收口RP-003

  • 复核 docs/zh-CN/core/architecture.mdcontext.mdlifecycle.mdcommand.mdquery.mdcqrs.md 后确认:这些页面仍大量保留旧 API 叙述,例如 Init()、属性式 CommandBus / QueryBus、旧 Input 赋值式命令/查询示例,以及已移除的 RegisterMediatorBehavior
  • 对照 ArchitectureArchitectureContextIArchitectureContextContextAwareBase、旧 AbstractCommand / AbstractQuery 基类和 GFramework.Cqrs/README.md 后,重写上述六个页面
  • 新版专题页将结构统一为“当前角色、真实公开入口、最小示例、兼容边界、迁移方向”,避免继续复刻旧版大而全教程
  • core/context.md 已明确把 GameContext 收束为兼容回退路径,而不是新代码的推荐接法
  • core/command.mdcore/query.md 已明确旧体系仍可用,但新功能应优先走 GFramework.Cqrs
  • core/cqrs.md 已与当前 runtime / generator / handler 注册语义对齐,并明确 RegisterCqrsPipelineBehavior<TBehavior>() 是公开入口
  • 执行 cd docs && bun run build 通过,说明本轮 core 专题页重写没有破坏文档站构建

下一步RP-003

补充2026-04-21 PR review 跟进收口RP-004

  • 通过 gframework-pr-review 复查当前分支 PR 时发现:脚本把同一 head commit 上空 body 的 APPROVED review 误当成“最新 review body”导致 Nitpick comments 未被结构化提取
  • 对照 GitHub API 的 review 列表后,确认真正包含 Nitpick comments (2) 的是更早 3 秒提交的 COMMENTED review因此调整脚本为“保持最新 review 元数据输出不变,但解析时优先选择同一提交上的最新非空 CodeRabbit review body”
  • 根据重新提取的 Nitpick 内容,补齐 docs/zh-CN/core/index.mdGodotSource Generators 栏目的可点击链接
  • 顺手修正 active trace 中重复的 ### 下一步 标题,消除 MD024/no-duplicate-heading 告警,避免后续 PR review 再次把文档治理入口本身标成噪音

验证RP-004

  • python3 .codex/skills/gframework-pr-review/scripts/fetch_current_pr_review.py --format json
  • cd docs && bun run build

下一步RP-004

  1. 继续处理 docs/zh-CN/core/events.mdproperty.mdstate-management.mdcoroutine.mdlogging.md
  2. 若 active trace 继续累计多个已完成恢复点,按 archive/traces/ 粒度归档旧阶段细节
  3. 保持 PR review 跟进时优先验证最新未解决线程、非空 CodeRabbit review body 与 MegaLinter 明确告警

阶段Core 剩余高风险专题页核对RP-005

  • 依据 documentation-governance-and-refresh active tracking 的恢复点,继续核对 docs/zh-CN/core/events.mdproperty.mdstate-management.mdcoroutine.mdlogging.md
  • 对照 GFramework.Core/Events/*Property/*Logging/*StateManagement/*Coroutine/* 以及对应测试后确认:
    • events.mdproperty.mdlogging.md 仍带有旧版“大而全 API 列表”写法,与当前公开入口和推荐边界不匹配
    • state-management.mdcoroutine.md 已和当前 runtime / 测试语义基本对齐,本轮无需为了统一文风做额外重写
  • 重写 events.md,使其回到“上下文入口、EventBus / EnhancedEventBus、优先级传播、局部事件对象、与 Store / CQRS 的边界”的当前结构
  • 重写 property.md,使其回到“字段级响应式值、何时继续使用 BindableProperty<T>、何时切到 Store<TState>”的当前结构, 并补充 BindableProperty<T>.Comparer 按闭合泛型共享的兼容注意点
  • 重写 logging.md,使其回到“LoggerFactoryResolver 默认行为、ArchitectureConfiguration 日志 provider 配置、 IStructuredLogger / LogContext、provider 替换边界”的当前结构
  • 执行 cd docs && bun run build 通过,说明本轮 core 专题页收口没有破坏文档站构建

当前结论RP-005

  • 本轮计划中的 core 剩余高风险页面已完成核对;state-managementcoroutine 经复核后可继续保留
  • core 栏目下一步不再需要围绕这五页反复停留,后续重心应转到 docs/zh-CN/game/*docs/zh-CN/source-generators/*

下一步RP-005

  1. 继续核对 docs/zh-CN/game/*,优先处理仍引用旧安装方式、旧状态系统或旧 UI / Scene 接法的页面
  2. 再推进 docs/zh-CN/source-generators/*,重点核对生成器 wiring、包关系与最小接入示例
  3. 若 active trace 继续累计多个已完成恢复点,按 archive/traces/ 粒度归档旧阶段细节

阶段Game Scene / UI 专题页收口RP-006

  • 依据 documentation-governance-and-refresh active tracking 的下一步,优先复核 docs/zh-CN/game/scene.mddocs/zh-CN/game/ui.md
  • 对照 GFramework.Game.Abstractions/Scene/*GFramework.Game.Abstractions/UI/*GFramework.Game/Scene/SceneRouterBase.csGFramework.Game/UI/UiRouterBase.csGFramework.Game/README.mdai-libs/CoreGrid 参考接法后确认:
    • scene.md 仍把场景系统写成框架自带完整注册/装配的一体化方案,没有突出 ISceneFactoryISceneRoot 和项目侧 router 派生类的责任边界
    • ui.md 仍按旧教程式结构展开,没有清楚区分 Page 栈与 Overlay/Modal/Toast/Topmost 层级 UI也缺少当前 UiInteractionProfileTryDispatchUiAction(...) 与 World 输入阻断语义
  • 重写 scene.md,使其回到“当前公开入口、场景栈语义、最小接入路径、守卫/过渡处理器扩展点、与旧写法的边界”的结构
  • 重写 ui.md,使其回到“页面栈与层级 UI 分流、输入仲裁、暂停/阻断语义、最小接入路径、扩展点”的结构
  • 新版两页都明确了factory、root、引擎节点与注册表仍由项目或适配层提供框架当前提供的是 router 基类与通用编排

验证RP-006

  • cd docs && bun run build

下一步RP-006

  1. 继续核对 docs/zh-CN/source-generators/*,优先处理仍引用旧初始化方式、旧聚合包名或过时 generator wiring 的页面
  2. 重点复核 priority-generator.mdcontext-aware-generator.md 与 Godot 相关生成器页面,确认示例仍与当前 runtime / generator 入口一致
  3. source-generators 出现多页连续收口结果,再按恢复点粒度整理 active trace避免默认入口继续膨胀

阶段Core Source Generator 关键专题页收口RP-007

  • 依据 documentation-governance-and-refresh active tracking 的下一步,优先复核 docs/zh-CN/source-generators/context-aware-generator.mdpriority-generator.md
  • 对照 GFramework.Core.SourceGenerators/Rule/ContextAwareGenerator.csGFramework.Core/Rule/ContextAwareBase.csGFramework.Core/Extensions/ContextAwareServiceExtensions.csGFramework.Core.SourceGenerators/Bases/PriorityGenerator.csGFramework.Core.Abstractions/Architectures/IArchitectureContext.cs 与相关诊断定义后确认:
    • context-aware-generator.md 仍在展示旧版简化生成代码,没有说明当前实例缓存、类型级共享 provider、同步锁以及 ContextAwareBase 的不同默认回退路径
    • priority-generator.md 仍把 [Priority] 写成“标了就自动改变顺序”的教程式功能说明,并大量使用 GetAllByPriority<T>()system.Init() 这类不适合作为当前 IContextAware 路径默认示例的旧写法
  • 重写 context-aware-generator.md使其回到“最小用法、当前生成成员、provider 与实例缓存语义、与 ContextAwareBase 和 Context Get 注入的关系、测试边界”的结构
  • 重写 priority-generator.md,使其回到“只生成 IPrioritized、priority-aware API 在不同层上的入口、动态优先级边界、 诊断与约束”的结构
  • 新版两页都明确了:排序效果取决于调用方是否走 priority-aware API[ContextAware] 生成路径与 ContextAwareBase 不是同一套默认行为

验证RP-007

  • cd docs && bun run build

下一步RP-007

  1. 继续核对 Godot 相关生成器页面,优先处理 godot-project-generator.mdget-node-generator.mdbind-node-signal-generator.md
  2. 重点确认 project.godotAutoLoad / InputActionsGetNode / BindNodeSignal 示例仍与当前包关系和生成器入口一致
  3. 若 Godot 页面也出现连续收口结果,再按恢复点粒度整理 active trace避免默认入口继续膨胀