Skip to content

闭合 source/engine seam 与 composition root 组装边界 #59

Description

@ghbvf

现状

全量 review 发现扩展 seam 与 composition root 约束没有完全闭合:

  • src-tauri/src/review/commands.rs:70 和 src-tauri/src/review/commands.rs:91 在 review command 内直接组装 CodexEngine。
  • 自动 dispatch 又在 src-tauri/src/lib.rs:134 组装一次 CodexEngine。
  • src-tauri/src/pr/commands.rs:76 在 PR discovery 中直接构造 GithubCli 并调用 discover_rows(),生产路径没有真正依赖 PrSource trait seam。
  • src-tauri/src/pr/commands.rs:5、src-tauri/src/review/commands.rs:3 等切片直接 import config::service;当前代码注释把这称为“函数级跨切片读”,但 reviewer 规范要求切片自包含、跨切片契约只走 shared model/组装注入。

这不是当前功能 bug,但会让新增 source/engine/config contract 时改动散落在切片内部。

三维根因

影响

  • 新增 Claude engine 或非 GitHub source 时,需要修改调用方而不只是实现 trait + root wiring。
  • 切片边界 enforcement 仍偏 Soft,review 只能靠人工发现 import 绕行。

修复方向

  • 最小方案:为当前边界加 Medium import-boundary scan,防止继续扩散。
  • 彻底方案:抽 root-level engine/source factory,manual review 与 auto dispatch 统一走注入的 trait object/service。
  • 重构方案:定义 PR listing trait 返回 UI 所需 source-agnostic row/result,移除 discover_rows() 对 GitHub concrete 的生产依赖。

Files

  • src-tauri/src/review/commands.rs:70
  • src-tauri/src/review/commands.rs:91
  • src-tauri/src/lib.rs:134
  • src-tauri/src/pr/commands.rs:5
  • src-tauri/src/pr/commands.rs:76
  • src-tauri/src/review/commands.rs:3

Source

Discovered via full-project review with 6 subagents on 2026-06-17.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions