From 035c7db18e71aaaf7c290aa4e0515da3a9e100e1 Mon Sep 17 00:00:00 2001 From: GeWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:40:32 +0800 Subject: [PATCH] =?UTF-8?q?docs(ai-plan):=20=E6=9B=B4=E6=96=B0=20warning?= =?UTF-8?q?=20=E6=89=B9=E5=A4=84=E7=90=86=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 analyzer warning reduction 的恢复策略,明确按类型优先批处理 - 补充单次 boot 的文件改动上限与非冲突 subagent 并行规则 - 修正文档措辞,明确低数量时可顺手吸收其他低冲突类型而非特指 MA0015 和 MA0077 --- .../analyzer-warning-reduction-tracking.md | 31 ++++++++++++------- .../analyzer-warning-reduction-trace.md | 27 ++++++++++++++++ 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/ai-plan/public/analyzer-warning-reduction/todos/analyzer-warning-reduction-tracking.md b/ai-plan/public/analyzer-warning-reduction/todos/analyzer-warning-reduction-tracking.md index 38f82d08..68d9ab65 100644 --- a/ai-plan/public/analyzer-warning-reduction/todos/analyzer-warning-reduction-tracking.md +++ b/ai-plan/public/analyzer-warning-reduction/todos/analyzer-warning-reduction-tracking.md @@ -7,20 +7,22 @@ ## 当前恢复点 -- 恢复点编号:`ANALYZER-WARNING-REDUCTION-RP-007` -- 当前阶段:`Phase 7` +- 恢复点编号:`ANALYZER-WARNING-REDUCTION-RP-008` +- 当前阶段:`Phase 8` - 当前焦点: - - 已完成 `GFramework.Core/Coroutine/CoroutineScheduler.cs` 的 `MA0051` 收口:将 `Run` 拆分为槽位分配、运行槽创建和启动注册阶段, - 将 `FinalizeCoroutine` 拆分为可完成目标读取、完成元数据更新、资源释放和生命周期收尾阶段 - - 本轮保持取消回调入队、统计记录、标签/分组清理、等待者唤醒和完成任务语义不变,未改公共 API - - 当前 `MA0051` 主线已完成;下一轮若继续推进,应先判断剩余 `MA0048`、`MA0046`、`MA0002`、`MA0016` 是否值得继续低风险收敛 + - 当前 `MA0051` 主线已完成;后续改为按 warning 类型和数量批处理,而不是继续按单文件切片推进 + - 优先批量收敛当前数量最高且风险较低的类型;当某一轮主类型数量不足时,允许顺手合并其他低冲突 warning 类型, + `MA0015` 与 `MA0077` 只是当前最明显的低数量示例,不构成限定 + - 单次 `boot` 的工作树改动上限控制在约 `100` 个文件以内,避免 recovery context 与 review 面同时失控 + - 若任务边界互不冲突,允许使用不同模型的 subagent 并行处理不同 warning 类型或不同目录,但必须遵守显式 ownership ## 当前状态摘要 - 已完成 `GFramework.Core`、`GFramework.Cqrs`、`GFramework.Godot` 与部分 source generator 的低风险 warning 清理 - 已完成多轮 CodeRabbit follow-up 修复,并用定向测试与项目/解决方案构建验证了关键回归风险 - 当前 `PauseStackManager`、`Store` 与 `CoroutineScheduler` 的长方法 warning 已从 active 入口移除;主题内剩余 warning - 主要集中在文件/类型命名冲突、delegate 形状、字符串 comparer 重载和少量公共集合抽象接口问题 + 主要集中在 `MA0048` 文件/类型命名冲突、`MA0046` delegate 形状、`MA0016` 集合抽象接口、`MA0002` comparer 重载, + 以及 `MA0015` / `MA0077` 两个低数量尾项 ## 当前活跃事实 @@ -34,16 +36,20 @@ 多态 reducer 匹配与历史语义未回归 - `RP-007` 已在不改公共 API 的前提下完成 `CoroutineScheduler` 两个 `MA0051` 的结构拆分,并通过定向 build/test 验证 调度、取消与完成状态语义未回归 +- `RP-008` 将后续策略从“单文件 warning 切片”切换为“按类型批处理 + 文件数上限控制”,并允许在非冲突前提下使用 + 不同模型的 subagent 并行处理 - 当前工作树分支 `fix/analyzer-warning-reduction-batch` 已在 `ai-plan/public/README.md` 建立 topic 映射 ## 当前风险 - 结构性重构风险:剩余 `GFramework.Core` 侧 `MA0051` 与 `MA0048` 可能要求较大的文件拆分或类型重命名 - - 缓解措施:只在下一轮明确接受结构调整成本时再继续推进,不在恢复点模糊的情况下顺手扩面 + - 缓解措施:按 warning 类型分批推进,并把单次 `boot` 的文件改动规模控制在约 `100` 个文件以内 - 测试宿主稳定性风险:部分 Godot 失败路径在当前 .NET 测试宿主下仍不稳定 - 缓解措施:继续优先使用稳定的 targeted test、项目构建和相邻 smoke test 组合验证 - 多目标框架 warning 解释风险:同一源位置会在多个 target framework 下重复计数 - 缓解措施:继续以唯一源位置和 warning 家族为主要决策依据,而不是只看原始 warning 总数 +- 并行实现风险:批量收敛时若 subagent 写入边界不清晰,容易引入命名冲突或重复重构 + - 缓解措施:只在 warning 类型或目录边界清晰时并行;每个 subagent 必须有独占文件 ownership,主代理负责合并验证 ## 活跃文档 @@ -77,11 +83,14 @@ - 结果:`23 Warning(s)`,`0 Error(s)`;`CoroutineScheduler.cs` 已不再出现在 `MA0051` 列表中 - `dotnet test GFramework.Core.Tests/GFramework.Core.Tests.csproj -c Release --filter FullyQualifiedName~CoroutineScheduler -p:RestoreFallbackFolders="" -p:RestorePackagesPath= -nologo` - 结果:`34 Passed`,`0 Failed` +- `RP-008` 的策略基线: + - 当前 `GFramework.Core` 剩余 warning 分布:`MA0048=8`、`MA0046=6`、`MA0016=5`、`MA0002=2`、`MA0015=1`、`MA0077=1` + - 后续批处理规则:优先按类型推进;若当轮主类型数量不足,可顺手吸收其他低冲突类型,不限定于 `MA0015` 与 `MA0077` - active 跟踪文件只保留当前恢复点、活跃事实、风险与下一步,不再重复保存已完成阶段的长篇历史 ## 下一步 1. 若要继续该主题,先读 active tracking,再按需展开历史归档中的 warning 热点与验证记录 -2. 先基于当前 `23 Warning(s)` 的唯一源位置清单,判断 `MA0048` 文件命名冲突与 `MA0046` delegate 形状是否存在低风险切入点, - 再决定是否开启下一轮 warning family 收敛 -3. 若本主题确认暂缓,可保持当前归档状态,不需要再恢复 `local-plan/` +2. 下一轮优先以 `MA0048` 为主批次启动;若改动规模和风险允许,可顺手并入其他低冲突类型,而不限定于单独的尾项 warning +3. 若 `MA0048` 的文件 ownership 可以清晰切分,允许使用不同模型的 subagent 并行处理互不冲突的目录或类型簇 +4. 若本主题确认暂缓,可保持当前归档状态,不需要再恢复 `local-plan/` diff --git a/ai-plan/public/analyzer-warning-reduction/traces/analyzer-warning-reduction-trace.md b/ai-plan/public/analyzer-warning-reduction/traces/analyzer-warning-reduction-trace.md index 85a99ca8..188e0c0c 100644 --- a/ai-plan/public/analyzer-warning-reduction/traces/analyzer-warning-reduction-trace.md +++ b/ai-plan/public/analyzer-warning-reduction/traces/analyzer-warning-reduction-trace.md @@ -1,5 +1,32 @@ # Analyzer Warning Reduction 追踪 +## 2026-04-21 — RP-008 + +### 阶段:批处理策略切换(RP-008) + +- 根据当前 `GFramework.Core` warnings-only build 的剩余分布,后续不再默认沿用“单文件、单 warning family”的切片节奏, + 改为按 warning 类型和数量优先级批量推进 +- 当前数量基线: + - `MA0048 = 8` + - `MA0046 = 6` + - `MA0016 = 5` + - `MA0002 = 2` + - `MA0015 = 1` + - `MA0077 = 1` +- 新的批处理规则: + - 先按类型选择主批次,而不是按单文件选切入点 + - 若主批次数量不够,则允许顺手并入其他低冲突类型;`MA0015` 与 `MA0077` 只是当前明显的低数量尾项示例,不是限定范围 + - 单次 `boot` 的工作树改动规模控制在约 `100` 个文件以内,避免 recovery context 和 review 面同时膨胀 + - 当 warning 类型或目录边界清晰且写集不冲突时,允许使用不同模型的 subagent 并行处理,但必须先定义独占 ownership +- 当前建议的下一批次顺序: + - 第一优先级:`MA0048` + - 第二优先级:`MA0046` + - 顺手吸收:其他低冲突类型,当前可见示例包括 `MA0015`、`MA0077` + - 单独评估:`MA0016`、`MA0002` +- 本轮仅更新 recovery strategy,不改生产代码;验证继续沿用当前基线构建: + - `dotnet build GFramework.Core/GFramework.Core.csproj -c Release -t:Rebuild --no-restore -p:UseSharedCompilation=false -p:TargetFramework=net8.0 -p:RestoreFallbackFolders="" -p:RestorePackagesPath= -nologo -clp:"Summary;WarningsOnly"` + - 结果:`23 Warning(s)`,`0 Error(s)` + ## 2026-04-21 — RP-007 ### 阶段:CoroutineScheduler `MA0051` 收口(RP-007)