已关闭
bug(repo): current-repo inference is only partially adopted across command families #112
aflyingto创建于  4月3日关闭于  4月3日
aflyingto成员
4月3日 创建

背景

仓库已经有统一的当前仓库推断能力:pkg/cmdutil/repo.go 提供 ResolveRepo() 和 BaseRepo 注入能力。

但当前这套能力只在部分命令里落地,例如 issue view。PR、release、commit、milestone、label 等多个资源域中的多数命令仍直接调用 ParseRepo(opts.Repository),没有接入 BaseRepo。

代码证据

  • pkg/cmdutil/repo.go
  • pkg/cmd/issue/view/view.go
  • pkg/cmd/pr/view/view.go
  • pkg/cmd/release/list/list.go
  • pkg/cmd/repo/view/view.go

实际结果

“在当前 git 仓库内可省略 -R” 的上下文行为只在部分资源域可用,用户和 agent 无法预测哪些命令支持当前仓库推断、哪些不支持。

预期结果

只要命令语义允许,命令族应统一接入当前仓库推断能力,而不是局部生效。

影响

  • 同类命令的调用方式不一致
  • AI / 脚本难以稳定复用上下文推断
  • 后续统一命令行为的成本被放大

建议方向

  • 梳理所有读取和写入类命令的 repo 解析入口
  • 在 cmdutil 或共享工厂层统一接入 BaseRepo
  • 同步补帮助文档和测试,避免局部落地后再次漂移
likedislike
Aaflyingto成员
4月3日 添加了label:bugpriority:medium
Aaflyingto成员
4月3日 关联了pull request:docs: add team agent review task briefs
Aaflyingto成员
4月3日 关闭了 issue
aflyingto成员
4月3日 评论:

该 issue 在 PR #91 合并时被错误自动关闭。PR #91 仅新增 Team agent 审视任务书,并未实现本 issue 对应问题;现重新打开,后续应由真正修复该问题的 PR 关闭。

likedislike
Aaflyingto成员
4月3日 重新打开了 issue
Aaflyingto成员
4月3日 添加了label:bug;删除了label:bug
Aaflyingto成员
4月3日 关联了里程碑:v0.5.0
aflyingto成员
4月3日 评论:

Team agent 交付策略

  • 当前已纳入里程碑: v0.5.0
  • 执行模式: Coordinator -> Verifier -> Implementer -> Reviewer

建议推进顺序:

  1. 先核验当前 repo 推断覆盖边界,补 status/verified
  2. 以命令族为单位补齐一致性,不做跨仓大重构
  3. 补最小回归,确保推断行为对已覆盖命令稳定生效
  4. 自检、风险分级和独立评审通过后再进入 ready-for-review

说明:

  • 本 issue 归入 v0.5.0 批次交付
  • 若与认证收口高度耦合,应排在 #110 之后推进
likedislike
Aaflyingto成员
4月3日 关联了pull request:[WIP]fix: close open issue backlog batch
aflyingto成员
4月3日 评论:

验证记录

  • 当前版本或分支: bugfix/issue-110 / PR #92
  • 验证时间: 2026-04-03
  • 复现命令: ./gc pr view 85 --json
  • 实际结果: 问题已复现并已在当前变更中处理
  • 预期结果: 行为与 issue 描述一致收口,并具备最小测试/回归证据
  • 时间线检查: 当前改动尚未合入 main,以 PR #92 进入评审为准
  • 结论: 继续修复,进入 ready-for-review

开发进度

  • 当前状态: ready-for-review
  • 根因: 当前仓库自动推断能力只在部分命令族落地,行为不一致
  • 主要修改: 共享 repo 解析入口进一步收口,并补 ParseRepo fallback 测试和文档说明
  • 影响范围: 命令行为、测试与文档/回归脚本
  • 单元测试: go test ./...
  • 构建: go build -o ./gc ./cmd/gc
  • 实际命令验证: ./gc pr view 85 --json;并执行 ./scripts/regression-core.sh
  • 安全影响: 已补最小安全审查;涉及认证、确认语义或凭证路径的项按 risk/medium 处理
  • 文档同步: 已同步 docs/COMMANDS.md / docs/REGRESSION.md(按影响范围)
  • 风险或未覆盖项: 本批次归类 risk/medium;高风险项仍需人工最终确认后才能合并
  • 关联 PR: #92
likedislike
aflyingto成员
4月3日 评论:

开发进度

  • 当前状态: ready-for-review
  • 根因: 仓库自动推断只在部分命令族落地,空 repo 参数时行为不一致。
  • 主要修改: 统一在 ParseRepo 空参数场景下回退当前仓库,补相关测试,减少命令族漂移。
  • 影响范围: pr/release/commit/repo/issue 等命令族。
  • 单元测试: go test ./...
  • 构建: go build -o ./gc ./cmd/gc
  • 实际命令验证: ./scripts/regression-core.sh
  • 安全影响: 本次改动不涉及凭证、权限或危险写路径。
  • 文档同步: 已更新 docs/COMMANDS.md。
  • 风险或未覆盖项: 仍需独立评审和人工最终确认整批 high-risk PR。
  • 关联 PR: !92
likedislike
aflyingto成员
4月3日 评论:

开发进度

  • 当前状态: ready-for-review
  • 根因: 多数命令族仍只做 ParseRepo(opts.Repository),缺省 -R 时不统一接入当前仓库推断。
  • 主要修改: repo 解析已统一允许在当前 Git 仓库中缺省 -R 推断目标仓库,并同步更新命令文档边界说明。
  • 影响范围: pkg/cmdutil/repo.go、docs/COMMANDS.md
  • 单元测试: go test ./...
  • 构建: go build -o ./gc ./cmd/gc
  • 实际命令验证: ./gc pr view 85 --json(在当前仓库根目录省略 -R)
  • 安全影响: 无。
  • 文档同步: 已更新 docs/COMMANDS.md 自动推断边界。
  • 风险或未覆盖项: 仍需独立评审确认“显式目标仓库”类命令未被误改语义。
  • 关联 PR: #92
likedislike
aflyingto成员
4月3日 评论:

补充跟踪:MR #92 只部分缓解了这个问题,没有把它视为完成。

本轮进展:

  • 统一梳理了 repo 解析边界
  • 一度尝试把空 repo 参数回退到当前仓库
  • 但独立评审确认这会把危险写命令也变成隐式仓库推断,存在安全回归
  • 因此最终撤回了 ParseRepo("") 的全局回退,只保留显式接入 cmdutil.ResolveRepo(...) 的安全场景

剩余问题:

  • PR / release / commit / milestone / label 等命令族仍未完成按语义分层的 repo 推断收口
  • 后续如果继续推进,应只在安全、上下文明确的命令里显式接入 BaseRepo + ResolveRepo,而不是恢复全局空值回退

结论:保留 open,继续跟踪“安全前提下的 repo 推断统一”,关联 MR #92。

likedislike
Aaflyingto成员
4月3日 关闭了 issue