feat(blueprint/buff): files 重叠推断降为兜底,同批已有显式推进则不推断 #27

Merged
lanrtop merged 3 commits from feat/blueprint-buff into master 2026-10-02 18:40:52 +08:00
Owner

背景

合并 PR #24/#25/#26 后,P6/P7/P8(agent-client-parity)与 A4(architecture-evolution)未开工却被 buff 自动标 🔵,仅因 files 与 P1/P3/P9 共用 onboarding.rs / mcp_inject.rs / mcp_tools.rs 等文件;主仓库工作区反复出现需人工恢复的未提交改动。enterprise-system 2026-07-22 回传过同类问题,本次为第二例。

根因:两阶段锁下真正在做的卡提交落地时已是 🔵/✅,files 重叠只能碰到仍为 📋 的卡——选择偏差使精度结构性偏低,不是调匹配规则能解决的。

改动(方案 B,用户已确认)

  • infer_task_marks 三道闸:last_commit 非 HEAD 祖先(checkout/reset/rebase)→ 跳过,git 出错记日志;本批 .blueprint/modules patch 新增 ### 🔵/✅/🔴 标题行(非原样搬移)→ 归属已显式,不推断;余下才走 files 匹配兜底
  • 同一批次全程使用轮询读到的 HEAD sha(不再多次读字面量 HEAD)
  • 匹配修正:去掉反向后缀(A4 误命中来源)、后缀须落在 / 边界、尾逗号空项丢弃、「、」「,」作分隔
  • 蓝图同步提示词:核实仅共用文件的 🔵 可降回 📋 并写明原因(原文要求「无充分理由不要降回」会固化误标)
  • 不涉及 DB / Tauri command / MCP 契约 / 接入包模板

Agent 自验

  • cargo test:256 passed / 0 failed;buff.rs 首批 9 条测试(纯函数 + 临时 git 仓库端到端:同批显式推进不推断、无推进兜底标 🔵、checkout 非祖先跳过、首次接入兜底)
  • 回放 master 240 个 first-parent 提交(逐行移植匹配逻辑):命中 50 → 5;53af8c3 / 239d9fd / 79853b7 对 P6/P7/P8/A4 零命中
  • rustfmt 无差异,buff.rs 无编译警告

没验什么

  • 回放按 first-parent 粒度,真实 buff 按 5 秒轮询批次处理,一次 pull 多个合并时批次更大
  • 旧算法 50 次命中的「正确 / 误判 / 存疑」分类是对照提交标题与卡标题人工判定,17 条存疑未逐条读代码
  • 未在子项目(enterprise-system)上回放;未在运行中的炼境实例上实测(需重装)
  • 已知残余:不更新蓝图的 PR 碰共享文件仍可能误标;主仓库里只提交代码、🔵 锁留在工作区时仍会推断;带反引号 / 括号注释的 files 项永不命中(原有行为)

人终验

重装炼境后合并下一个 PR,主仓库工作区不再出现无关卡被标 🔵。

🤖 Generated with Claude Code

## 背景 合并 PR #24/#25/#26 后,P6/P7/P8(agent-client-parity)与 A4(architecture-evolution)未开工却被 buff 自动标 🔵,仅因 `files` 与 P1/P3/P9 共用 `onboarding.rs` / `mcp_inject.rs` / `mcp_tools.rs` 等文件;主仓库工作区反复出现需人工恢复的未提交改动。enterprise-system 2026-07-22 回传过同类问题,本次为第二例。 **根因**:两阶段锁下真正在做的卡提交落地时已是 🔵/✅,`files` 重叠只能碰到仍为 📋 的卡——选择偏差使精度结构性偏低,不是调匹配规则能解决的。 ## 改动(方案 B,用户已确认) - `infer_task_marks` 三道闸:`last_commit` 非 HEAD 祖先(checkout/reset/rebase)→ 跳过,git 出错记日志;本批 `.blueprint/modules` patch 新增 `### 🔵/✅/🔴` 标题行(非原样搬移)→ 归属已显式,不推断;余下才走 files 匹配兜底 - 同一批次全程使用轮询读到的 HEAD sha(不再多次读字面量 `HEAD`) - 匹配修正:去掉反向后缀(A4 误命中来源)、后缀须落在 `/` 边界、尾逗号空项丢弃、「、」「,」作分隔 - 蓝图同步提示词:核实仅共用文件的 🔵 可降回 📋 并写明原因(原文要求「无充分理由不要降回」会固化误标) - 不涉及 DB / Tauri command / MCP 契约 / 接入包模板 ## Agent 自验 - `cargo test`:256 passed / 0 failed;`buff.rs` 首批 9 条测试(纯函数 + 临时 git 仓库端到端:同批显式推进不推断、无推进兜底标 🔵、checkout 非祖先跳过、首次接入兜底) - 回放 master 240 个 first-parent 提交(逐行移植匹配逻辑):命中 **50 → 5**;53af8c3 / 239d9fd / 79853b7 对 P6/P7/P8/A4 零命中 - `rustfmt` 无差异,`buff.rs` 无编译警告 ## 没验什么 - 回放按 first-parent 粒度,真实 buff 按 5 秒轮询批次处理,一次 pull 多个合并时批次更大 - 旧算法 50 次命中的「正确 / 误判 / 存疑」分类是对照提交标题与卡标题人工判定,17 条存疑未逐条读代码 - 未在子项目(enterprise-system)上回放;未在运行中的炼境实例上实测(需重装) - 已知残余:不更新蓝图的 PR 碰共享文件仍可能误标;主仓库里只提交代码、🔵 锁留在工作区时仍会推断;带反引号 / 括号注释的 files 项永不命中(原有行为) ## 人终验 重装炼境后合并下一个 PR,主仓库工作区不再出现无关卡被标 🔵。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
lanrtop added 3 commits 2026-10-02 17:53:52 +08:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
两阶段锁下真正在做的卡提交落地时已是 🔵/✅,files 重叠只能碰到仍为 📋 的卡,
命中共享热点文件(mcp_tools.rs / onboarding.rs 等)的多是未开工卡。
回放 master 240 个 first-parent 提交:旧算法命中 50 次,明确正确仅 3 次;
新规则 50 → 5,PR #24/#25/#26 对 P6/P7/P8/A4 的误标全部消除。

- 本批蓝图 diff 新增 🔵/✅/🔴 标题行(非原样搬移)→ 归属已显式,不做 files 推断
- last_commit 非 HEAD 祖先(checkout/reset/rebase)→ 跳过;git 出错记日志
- 同一批次全程使用轮询读到的 HEAD sha,判定口径一致
- 匹配修正:去掉反向后缀、后缀须落在 / 边界、尾逗号空项丢弃、「、」「,」作分隔
- 蓝图同步提示词:核实仅共用文件的 🔵 可降回 📋 并写明原因
- 补 buff.rs 首批测试(纯函数 + 临时 git 仓库端到端)

Rules-Applied: R09
Feature-Confirmed: true

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs(blueprint/blueprint-buff): B1 记录实现与自验证据,挂触发条目结案,待人终验
All checks were successful
Push & PR Check / check (push) Successful in 1m2s
Push & PR Check / check (pull_request) Successful in 1m3s
1778ca21d9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lanrtop merged commit 9da19cecaa into master 2026-10-02 18:40:52 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: lanrtop/dev-manager-tauri#27
No description provided.