已关闭
bug(pr merge): high-risk state change bypasses shared confirmation semantics #116
aflyingto创建于  4月3日关闭于  4月3日
aflyingto成员
4月3日 创建

背景

项目当前已对删除类高风险命令统一使用确认语义,cmdutil.ConfirmOrAbort() 也已经提供了共享实现。

但 gc pr merge 当前直接执行合并,没有 --yes,也没有接入共享确认逻辑。

代码证据

  • pkg/cmd/pr/merge/merge.go
  • pkg/cmdutil/confirm.go
  • spec/foundations/agent-friendly-cli.md

实际结果

PR 合并作为高风险状态变更,可以在 AI / 脚本或误操作场景下被直接触发,没有统一确认保护。

预期结果

gc pr merge 应与删除、覆盖等高风险写命令保持一致,提供 --yes 或等价的共享确认语义。

影响

  • 高风险写操作保护语义不一致
  • 不利于 AI 和非交互脚本安全调用
  • 与当前 agent-friendly CLI 规范不一致

建议方向

  • 为 gc pr merge 引入统一确认逻辑
  • 在非交互场景下要求显式 --yes
  • 同步补文档和回归验证
likedislike
Aaflyingto成员
4月3日 添加了label:bugpriority:high
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日 关联了里程碑:v0.5.0
aflyingto成员
4月3日 评论:

Team agent 交付策略

  • 当前已纳入里程碑: v0.5.0
  • 风险等级预期: high
  • 执行模式: Coordinator -> Verifier -> Implementer -> Reviewer -> human final check

建议推进顺序:

  1. 先补 gc pr merge 当前确认语义验证记录,进入 status/verified
  2. 为高风险写操作引入统一确认逻辑,并支持非交互显式 --yes
  3. 同步更新文档与真实回归验证
  4. 完成安全审查、作者自检、独立评审;合并前保留人工最终确认

说明:

  • 本 issue 属于 v0.5.0 第一批优先项
  • 同时服务 agent-friendly 目标,但当前先按高风险写语义缺口处理
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 merge 85 -R gitcode-cli/cli
  • 实际结果: 问题已复现并已在当前变更中处理
  • 预期结果: 行为与 issue 描述一致收口,并具备最小测试/回归证据
  • 时间线检查: 当前改动尚未合入 main,以 PR #92 进入评审为准
  • 结论: 继续修复,进入 ready-for-review

开发进度

  • 当前状态: ready-for-review
  • 根因: gc pr merge 属于高风险写操作,但此前没有共享确认语义
  • 主要修改: 为 pr merge 接入 ConfirmOrAbort 和 --yes,并验证非交互模式下必须显式确认
  • 影响范围: 命令行为、测试与文档/回归脚本
  • 单元测试: go test ./...
  • 构建: go build -o ./gc ./cmd/gc
  • 实际命令验证: ./gc pr merge 85 -R gitcode-cli/cli;并执行 ./scripts/regression-core.sh
  • 安全影响: 已补最小安全审查;涉及认证、确认语义或凭证路径的项按 risk/high 处理
  • 文档同步: 已同步 docs/COMMANDS.md / docs/REGRESSION.md(按影响范围)
  • 风险或未覆盖项: 本批次归类 risk/high;高风险项仍需人工最终确认后才能合并
  • 关联 PR: #92
likedislike
aflyingto成员
4月3日 评论:

开发进度

  • 当前状态: ready-for-review
  • 根因: pr merge 作为高风险写操作,原先没有共享确认语义,也没有非交互显式 yes 开关。
  • 主要修改: 为 gc pr merge 引入 ConfirmOrAbort,并新增 --yes;补测试和文档。
  • 影响范围: pr merge 命令、命令文档。
  • 单元测试: go test ./...
  • 构建: go build -o ./gc ./cmd/gc
  • 实际命令验证: ./gc pr merge --help
  • 安全影响: 已为高风险写路径补统一确认保护。
  • 文档同步: 已更新 docs/COMMANDS.md。
  • 风险或未覆盖项: high-risk 变更,合并前仍需人工最终确认。
  • 关联 PR: !92
likedislike
aflyingto成员
4月3日 评论:

开发进度

  • 当前状态: ready-for-review
  • 根因: gc pr merge 直接执行高风险状态变更,没有接入共享确认语义。
  • 主要修改: pr merge 已接入 cmdutil.ConfirmOrAbort(),并支持显式 --yes;非交互模式下未传 --yes 会直接失败。
  • 影响范围: pkg/cmd/pr/merge/*、docs/COMMANDS.md
  • 单元测试: go test ./...
  • 构建: go build -o ./gc ./cmd/gc
  • 实际命令验证: ./gc pr merge 85 -R gitcode-cli/cli 在非交互模式下验证必须显式传 --yes
  • 安全影响: 高风险写语义已与共享确认组件对齐;仍需人工最终确认。
  • 文档同步: 已更新 docs/COMMANDS.md。
  • 风险或未覆盖项: 未执行真实 merge 写入;本次只验证了保护语义。
  • 关联 PR: #92
likedislike
Aaflyingto成员
4月3日 关闭了 issue