diff --git a/ai-plan/public/documentation-full-coverage-governance/todos/documentation-full-coverage-governance-tracking.md b/ai-plan/public/documentation-full-coverage-governance/todos/documentation-full-coverage-governance-tracking.md index 578662a2..5dda9d86 100644 --- a/ai-plan/public/documentation-full-coverage-governance/todos/documentation-full-coverage-governance-tracking.md +++ b/ai-plan/public/documentation-full-coverage-governance/todos/documentation-full-coverage-governance-tracking.md @@ -12,9 +12,10 @@ ## 当前恢复点 -- 恢复点编号:`DOCUMENTATION-FULL-COVERAGE-GOV-RP-019` +- 恢复点编号:`DOCUMENTATION-FULL-COVERAGE-GOV-RP-020` - 当前阶段:`Phase 5 - Governance Maintenance` - 当前焦点: + - 保持 `Core` functional docs surface 的 inline code / 泛型示例在 VitePress 下按真实 C# 语法渲染 - 保持 `Game` persistence docs surface 与当前 `README`、源码、`PersistenceTests` 使用同一套 owner / adoption path 叙述 - 保持 `GFramework.Godot.SourceGenerators/README.md` 与 `docs/zh-CN/tutorials/godot-integration.md` 在生命周期接法上的一致性 - 保持 active tracking / trace 只承载当前恢复入口,把阶段细节留在 `archive/` @@ -36,6 +37,11 @@ `SettingsModel<ISettingsDataRepository>`。 - 结合当前 PR 已改动的 `docs/zh-CN/godot/storage.md` 做同类巡检后,确认 `SaveRepository<TSaveData>` 也会在 VitePress code span 中按字面量渲染;两处现已在本地统一改为真实泛型写法。 +- `2026-04-23` 以 `origin/main`(`aa879d2`,`2026-04-23T17:51:41+08:00`)为批处理基线,对 + `README.md`、`GFramework.*` 与 `docs/zh-CN/**` 执行同类模式巡检,确认剩余热点仅位于 + `docs/zh-CN/core/functional.md` 与 `docs/zh-CN/tutorials/functional-programming.md` 共 8 处。 +- 上述 8 处 inline code 中的 `Option<T>`、`Result<T>`、`Nullable<T>` 已统一改为真实 + 泛型写法,避免在 VitePress 中显示字面量 HTML entity。 - 当前剩余的托管侧信号是 GitHub `Title check` 对 PR 标题过泛的 inconclusive 提示;这属于 PR 元数据,不是本地 文件缺陷。 @@ -62,15 +68,16 @@ `docs/zh-CN/godot/setting.md:75` 的 inline code HTML entity 渲染问题。 - `2026-04-23` `rg -n '`[^`]*<[^`]*`|`[^`]*>[^`]*`' GFramework.Godot.SourceGenerators/README.md GFramework.Godot/README.md README.md docs/zh-CN/api-reference/index.md docs/zh-CN/game/data.md docs/zh-CN/game/serialization.md docs/zh-CN/game/setting.md docs/zh-CN/game/storage.md docs/zh-CN/godot/setting.md docs/zh-CN/godot/storage.md docs/zh-CN/source-generators/index.md` - 结果:命中 `docs/zh-CN/godot/setting.md:75` 与 `docs/zh-CN/godot/storage.md:102` 两处同类写法,均已修正。 +- `2026-04-23` `rg -n '`[^`]*<[^`]*`|`[^`]*>[^`]*`' README.md GFramework.* docs/zh-CN -g '*.md'` + - 结果:命中 `docs/zh-CN/core/functional.md` 与 `docs/zh-CN/tutorials/functional-programming.md` 共 8 处,已全部修正。 - `2026-04-23` `bun run build`(工作目录:`docs/`) - 结果:通过;仅保留既有 VitePress 大 chunk warning,无构建失败。 ## 下一步 -1. 提交并推送本地对 `docs/zh-CN/godot/setting.md` 与 `docs/zh-CN/godot/storage.md` 的 Markdown 泛型写法修正, - 然后重新抓取 PR `#272` 确认 Greptile open thread 是否已在新 head commit 上消失。 -2. 如果 PR `#272` 的 `Title check` 仍需要消除,到 GitHub 上把标题改成更具体的文档治理描述。 -3. 若后续分支继续调整 `Game` persistence runtime、README 或公共 API,优先复核 `docs/zh-CN/game/data.md`、 +1. 对 `README.md`、`GFramework.*` 与 `docs/zh-CN/**` 继续做下一类低风险 Markdown 渲染巡检,优先排查 code span 内 + 的 HTML entity、站点内链接和标题锚点是否仍与当前页面结构一致。 +2. 若后续分支继续调整 `Game` persistence runtime、README 或公共 API,优先复核 `docs/zh-CN/game/data.md`、 `storage.md`、`serialization.md`、`setting.md` 与 landing page 是否仍保持同一套职责边界。 -4. 若后续分支继续调整 `Godot` generator 接法,优先复核 `GFramework.Godot.SourceGenerators/README.md`、 +3. 若后续分支继续调整 `Godot` generator 接法,优先复核 `GFramework.Godot.SourceGenerators/README.md`、 `docs/zh-CN/tutorials/godot-integration.md` 与相关专题页是否仍保持一致。 diff --git a/ai-plan/public/documentation-full-coverage-governance/traces/documentation-full-coverage-governance-trace.md b/ai-plan/public/documentation-full-coverage-governance/traces/documentation-full-coverage-governance-trace.md index fb3c5093..5e73a5fd 100644 --- a/ai-plan/public/documentation-full-coverage-governance/traces/documentation-full-coverage-governance-trace.md +++ b/ai-plan/public/documentation-full-coverage-governance/traces/documentation-full-coverage-governance-trace.md @@ -2,49 +2,40 @@ ## 2026-04-23 -### 当前恢复点:RP-019 +### 当前恢复点:RP-020 -- 使用 `$gframework-pr-review` 重新复核当前分支 PR `#272`。 -- GitHub latest-head review 当前暴露 1 条新的 Greptile open thread: - `docs/zh-CN/godot/setting.md:75` 在 inline code 中写成 - `SettingsModel<ISettingsDataRepository>`。 -- 本地核对当前文档渲染语义后,确认 CommonMark / VitePress 不会在 code span 内解码 HTML entity, - 该评论成立。 -- 对当前 PR 已变更的 Godot 文档做同类扫描后,又在 `docs/zh-CN/godot/storage.md:102` 发现 - `SaveRepository<TSaveData>` 的同型问题。 +- 按 `$gframework-batch-boot` 继续执行 `documentation-full-coverage-governance`。 +- 将这轮批处理目标定义为“清理 README / `docs/zh-CN` / 模块 README 中仍会在 inline code 里被字面渲染的 HTML 泛型实体”。 +- 基线选择为 `origin/main` `aa879d2`(`2026-04-23T17:51:41+08:00`);当前分支 `docs/sdk-update-documentation` + 与该基线零差异,适合继续做小批次文档治理。 +- 以 `rg -n '`[^`]*<[^`]*`|`[^`]*>[^`]*`' README.md GFramework.* docs/zh-CN -g '*.md'` 扫描后,确认剩余热点只在 + `docs/zh-CN/core/functional.md` 与 `docs/zh-CN/tutorials/functional-programming.md`,共 8 处。 - 本轮执行的修复: - - 将 `docs/zh-CN/godot/setting.md` 的 `SettingsModel<ISettingsDataRepository>` 改为 - `SettingsModel` - - 将 `docs/zh-CN/godot/storage.md` 的 `SaveRepository<TSaveData>` 改为 - `SaveRepository` - - 同步更新 active tracking / trace,记录该 PR review follow-up 与新的恢复点 + - 将 `docs/zh-CN/core/functional.md` 中的 `Option<T>`、`Result<T>`、`Nullable<T>` 改为真实泛型写法 + - 将 `docs/zh-CN/tutorials/functional-programming.md` 中的 `Option<T>`、`Result<T>` 改为真实泛型写法 + - 同步更新 active tracking / trace,记录 batch objective、基线和新的恢复点 -### 当前决策(RP-019) +### 当前决策(RP-020) -- PR review 结果以 GitHub latest-head open threads 为准;即便 active tracking 曾记录“无 open thread”,也必须按新抓取结果回写。 - 对 Markdown inline code 中的 C# 泛型示例,必须直接写真实的 `` 语法,不能在反引号内部再写 `<` / `>`,否则 VitePress 会把 entity 当作字面量展示。 -- 当 latest-head review 命中某个文档表述问题时,应顺手扫描同一批 PR 已改动文档中的同类模式,避免只消掉单条 thread 却把相同渲染缺陷留在相邻页面。 -- 当前本地修复完成后,下一次 GitHub 侧复核需要基于新提交/新 head commit,而不是旧的 PR review 快照。 +- 当一个渲染热点模式可以用本地正则直接衡量时,优先把该模式收敛为一个小批次并一次性清空命中列表,而不是只修单页。 +- 对文档治理批处理,主 stop condition 采用“热点列表耗尽”,次级 stop condition 采用“相对基线的分支 diff 不接近大批次阈值”。 -### 当前验证(RP-019) +### 当前验证(RP-020) -- PR review 抓取: - - `python3 .agents/skills/gframework-pr-review/scripts/fetch_current_pr_review.py --format json --json-output /tmp/current-pr-review.json` - - 结果:通过;PR `#272` 处于 `OPEN`,latest head commit 存在 1 条 Greptile open thread,定位到 - `docs/zh-CN/godot/setting.md:75` 的 inline code HTML entity 渲染问题。 - 同类模式巡检: - - `rg -n '`[^`]*<[^`]*`|`[^`]*>[^`]*`' GFramework.Godot.SourceGenerators/README.md GFramework.Godot/README.md README.md docs/zh-CN/api-reference/index.md docs/zh-CN/game/data.md docs/zh-CN/game/serialization.md docs/zh-CN/game/setting.md docs/zh-CN/game/storage.md docs/zh-CN/godot/setting.md docs/zh-CN/godot/storage.md docs/zh-CN/source-generators/index.md` - - 结果:命中 `docs/zh-CN/godot/setting.md:75` 与 `docs/zh-CN/godot/storage.md:102` 两处同类写法,均已修正。 + - `rg -n '`[^`]*<[^`]*`|`[^`]*>[^`]*`' README.md GFramework.* docs/zh-CN -g '*.md'` + - 结果:命中 `docs/zh-CN/core/functional.md` 与 `docs/zh-CN/tutorials/functional-programming.md` 共 8 处,已全部修正。 - 构建校验: - `bun run build`(工作目录:`docs/`) - 结果:通过;仅保留既有 VitePress 大 chunk warning,无构建失败。 -### 归档摘要(RP-018) +### 归档摘要(RP-019) -- 使用 `$gframework-pr-review` 重新复核当前分支 PR `#272`。 -- latest-head review 命中 `GFramework.Godot.SourceGenerators/README.md:135` 的错误命名空间引用,并已在本地修正。 -- README 校验与 `docs/` 站点构建通过,待新提交推送后回 GitHub 侧确认 open thread 消失。 +- 使用 `$gframework-pr-review` 重新抓取 PR `#272` 后,定位到 `docs/zh-CN/godot/setting.md` 的 inline code HTML entity 渲染问题。 +- 顺手扫描当前 PR 已改动的相邻 Godot 文档,又在 `docs/zh-CN/godot/storage.md` 发现同型问题,并已一起修正。 +- `docs/` 站点构建通过。 ### 归档指针 @@ -55,4 +46,4 @@ ### 下一步 1. 提交并推送本地修正后,再次抓取 PR `#272`,确认 Greptile open thread 是否已在新 head commit 上消失。 -2. 如果 PR `#272` 的 `Title check` 仍需要处理,到 GitHub 上把标题改成更具体的文档治理描述。 +2. 若继续执行文档治理批处理,优先排查下一类低风险渲染 / 链接热点,而不是扩成跨模块大波次。 diff --git a/docs/zh-CN/core/functional.md b/docs/zh-CN/core/functional.md index f483965e..8de4d837 100644 --- a/docs/zh-CN/core/functional.md +++ b/docs/zh-CN/core/functional.md @@ -17,7 +17,7 @@ GFramework.Core 提供了一套完整的函数式编程工具,帮助开发者 ### Option 类型 -`Option<T>` 表示可能存在或不存在的值,用于替代 null 引用。它有两种状态: +`Option` 表示可能存在或不存在的值,用于替代 null 引用。它有两种状态: - **Some**:包含一个值 - **None**:不包含值 @@ -26,7 +26,7 @@ GFramework.Core 提供了一套完整的函数式编程工具,帮助开发者 ### Result 类型 -`Result<T>` 表示操作的结果,可能是成功值或失败异常。它有三种状态: +`Result` 表示操作的结果,可能是成功值或失败异常。它有三种状态: - **Success**:操作成功,包含返回值 - **Faulted**:操作失败,包含异常信息 @@ -586,14 +586,14 @@ public async Task> ProcessRequestAsync(Request request) ### Option vs Nullable -**Q: Option 和 Nullable<T> 有什么区别?** +**Q: Option 和 `Nullable` 有什么区别?** A: -- `Nullable<T>` 只能用于值类型,`Option<T>` 可用于任何类型 -- `Option<T>` 提供丰富的函数式操作(Map、Bind、Filter 等) -- `Option<T>` 强制显式处理"无值"情况,更安全 -- `Option<T>` 可以与 Result 等其他函数式类型组合 +- `Nullable` 只能用于值类型,`Option` 可用于任何类型 +- `Option` 提供丰富的函数式操作(Map、Bind、Filter 等) +- `Option` 强制显式处理"无值"情况,更安全 +- `Option` 可以与 Result 等其他函数式类型组合 ### Result vs Exception diff --git a/docs/zh-CN/tutorials/functional-programming.md b/docs/zh-CN/tutorials/functional-programming.md index 33a973e9..bd7a2bf1 100644 --- a/docs/zh-CN/tutorials/functional-programming.md +++ b/docs/zh-CN/tutorials/functional-programming.md @@ -121,7 +121,7 @@ namespace MyGame.Services **代码说明**: -- `Option<T>` 明确表示值可能不存在,避免 NullReferenceException +- `Option` 明确表示值可能不存在,避免 NullReferenceException - `Match` 强制处理两种情况,不会遗漏 null 检查 - `Map` 和 `Bind` 实现链式转换,代码更简洁 - `Filter` 可以安全地过滤值 @@ -250,7 +250,7 @@ namespace MyGame.Services **代码说明**: -- `Result<T>` 将错误作为值返回,而不是抛出异常 +- `Result` 将错误作为值返回,而不是抛出异常 - `Result.Try` 自动捕获异常并转换为 Result - `Bind` 可以链接多个可能失败的操作 - `Match` 强制处理成功和失败两种情况