fix(mcp-single-server): 删除登记只清本项目托管条目,沉默项目统计去并集,注入状态带项目名(U1、U2) #34

Merged
lanrtop merged 1 commits from feat/mcp-single-server-u1 into master 2026-10-03 08:52:42 +08:00
Owner

背景

get_diagnostics「使者回传覆盖率」里 dev-manager-tauri 出现两行(147 / 86 条 commit)。只读排查确认这是 mcp-single-server done_note 记下的遗留:同一路径登记了 dev-manager-tauri(规范 ID)和 2c5b54ef-… 两条 workspace,各自绑一条 gitea_repos。轮询遍历两行,同一仓库被采集两次:commit 按 sha 先到先得被分成两半,56 对 PR 事件被双写。「MCP 注入状态」里的 d248554e-… 是 enterprise-system,不是重复。

改动(U1、U2)

  • U1 mcp_inject.rs:remove_project_files_mcp 原先无条件删除 Codex 管理块和 .claude/settings.json 里的 lian-jing 条目。同路径重复登记时,删掉 UUID 那条会连带切断规范 ID 的接入。现在只删 URL 属于本 project_id 的条目,以及不是炼境项目路由的旧格式条目。
  • U2 onboarding.rs:silent_projects 让每条 commit 只归属一个 workspace(先按直接 ID,再按 buff 路径),不再出现一行等于两边并集的情况。
  • U2 mcp_tools.rs:注入状态显示「名称 (id)」,已删除的登记标注未登记。

自验

  • cargo test 全量 303 通过,0 失败(5 ignored)。
  • 新增 3 条回归测试:remove_keeps_entries_owned_by_another_project_at_same_root、silent_projects_counts_each_commit_once_under_duplicate_registration、diagnostics_inject_label_shows_name_and_flags_unregistered。
  • 在同一组测试数据上,旧 SQL 计数为 [3, 5],新 SQL 为 [2, 3],回归测试能抓住旧行为。

没验什么

  • 没有在运行中的炼境里实测:运行中的是旧二进制,要合并并重建后才生效。
  • U3(存量数据合并)不在本 PR 里,是运维操作,等用户授权后执行,任务卡仍是 🔵。
  • 「登记时拒绝同路径」没有做,归 agent-client-parity P8f。
  • beast-mode 的同类重复(beast-mode / 940dfbb4)没有处理。

🤖 Generated with Claude Code

## 背景 `get_diagnostics`「使者回传覆盖率」里 dev-manager-tauri 出现两行(147 / 86 条 commit)。只读排查确认这是 mcp-single-server done_note 记下的遗留:同一路径登记了 `dev-manager-tauri`(规范 ID)和 `2c5b54ef-…` 两条 workspace,各自绑一条 `gitea_repos`。轮询遍历两行,同一仓库被采集两次:commit 按 sha 先到先得被分成两半,56 对 PR 事件被双写。「MCP 注入状态」里的 `d248554e-…` 是 enterprise-system,不是重复。 ## 改动(U1、U2) - **U1** `mcp_inject.rs`:`remove_project_files_mcp` 原先无条件删除 Codex 管理块和 `.claude/settings.json` 里的 lian-jing 条目。同路径重复登记时,删掉 UUID 那条会连带切断规范 ID 的接入。现在只删 URL 属于本 project_id 的条目,以及不是炼境项目路由的旧格式条目。 - **U2** `onboarding.rs`:`silent_projects` 让每条 commit 只归属一个 workspace(先按直接 ID,再按 buff 路径),不再出现一行等于两边并集的情况。 - **U2** `mcp_tools.rs`:注入状态显示「名称 (`id`)」,已删除的登记标注未登记。 ## 自验 - `cargo test` 全量 303 通过,0 失败(5 ignored)。 - 新增 3 条回归测试:`remove_keeps_entries_owned_by_another_project_at_same_root`、`silent_projects_counts_each_commit_once_under_duplicate_registration`、`diagnostics_inject_label_shows_name_and_flags_unregistered`。 - 在同一组测试数据上,旧 SQL 计数为 [3, 5],新 SQL 为 [2, 3],回归测试能抓住旧行为。 ## 没验什么 - 没有在运行中的炼境里实测:运行中的是旧二进制,要合并并重建后才生效。 - U3(存量数据合并)不在本 PR 里,是运维操作,等用户授权后执行,任务卡仍是 🔵。 - 「登记时拒绝同路径」没有做,归 agent-client-parity P8f。 - beast-mode 的同类重复(`beast-mode` / `940dfbb4`)没有处理。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
lanrtop added 1 commit 2026-10-03 08:27:15 +08:00
fix(mcp-single-server): 删除登记只清本项目托管条目,沉默项目统计每条 commit 只归属一个 workspace,注入状态带项目名(U1、U2)
All checks were successful
Push & PR Check / check (push) Successful in 1m34s
Push & PR Check / check (pull_request) Successful in 1m1s
e57da3aebb
同路径重复登记(dev-manager-tauri 与 2c5b54ef 并存)暴露的三处问题:
- remove_project_files_mcp 按路径解析目录后无条件删 Codex 管理块与 settings 条目,
  删 UUID 那条会连带切断规范 ID 的 Codex 接入;改为只删 URL 属于本 project_id
  或不是炼境项目路由(旧格式)的条目
- silent_projects 的「ID 或路径」任一匹配让一行吃到多条登记的并集(真机 147 / 86),
  改为每条 commit 先按直接 ID、再按 buff 路径归属唯一 workspace
- get_diagnostics 注入状态只打 ID,enterprise-system 的 UUID 被误读成炼境重复登记;
  改为「名称 (`id`)」,已删除的登记标注未登记

Rules-Applied: R06,R07

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lanrtop merged commit fc280db426 into master 2026-10-03 08:52:42 +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#34
No description provided.