已关闭
bug(pr merge): high-risk state change bypasses shared confirmation semantics #116
aflyingto创建于 4月3日关闭于 4月3日
aflyingto
4月3日 评论:
4月3日 评论:
该 issue 在 PR #91 合并时被错误自动关闭。PR #91 仅新增 Team agent 审视任务书,并未实现本 issue 对应问题;现重新打开,后续应由真正修复该问题的 PR 关闭。


aflyingto
4月3日 评论:
4月3日 评论:
Team agent 交付策略
- 当前已纳入里程碑:
v0.5.0 - 风险等级预期:
high - 执行模式:
Coordinator -> Verifier -> Implementer -> Reviewer -> human final check
建议推进顺序:
- 先补
gc pr merge当前确认语义验证记录,进入status/verified - 为高风险写操作引入统一确认逻辑,并支持非交互显式
--yes - 同步更新文档与真实回归验证
- 完成安全审查、作者自检、独立评审;合并前保留人工最终确认
说明:
- 本 issue 属于
v0.5.0第一批优先项 - 同时服务
agent-friendly目标,但当前先按高风险写语义缺口处理


aflyingto
4月3日 评论:
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


aflyingto
4月3日 评论:
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


aflyingto
4月3日 评论:
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


背景
项目当前已对删除类高风险命令统一使用确认语义,
cmdutil.ConfirmOrAbort()也已经提供了共享实现。但
gc pr merge当前直接执行合并,没有--yes,也没有接入共享确认逻辑。代码证据
pkg/cmd/pr/merge/merge.gopkg/cmdutil/confirm.gospec/foundations/agent-friendly-cli.md实际结果
PR 合并作为高风险状态变更,可以在 AI / 脚本或误操作场景下被直接触发,没有统一确认保护。
预期结果
gc pr merge应与删除、覆盖等高风险写命令保持一致,提供--yes或等价的共享确认语义。影响
建议方向
gc pr merge引入统一确认逻辑--yes