已开启
refactor: extract shared y/N confirmation #605
aflyingto创建于 8 天前
refactor: extract shared y/N confirmation #605
已开启
aflyingto创建于 8 天前
aflyingto成员
8 天前

作者自检

  • 作者主体标识: Codex
  • 根因或实现理由: auth 区域存在第三个命令私有的 stdin 确认读取器,且 logout 的环境变量提示通道与 agent-friendly 输出边界不一致
  • 主要修改: 抽取共享 ConfirmYesNo 组件;login 复用该组件并保留共享 reader;logout 复用 envtoken.SetEnvVars/ShortWarning,把默认主机环境变量提示迁移到 stderr,并按平台输出当前终端清理命令
  • 影响范围: pkg/cmdutil、pkg/cmd/auth/login、pkg/cmd/auth/logout、相关测试与认证文档
  • 单元测试: go test ./pkg/cmdutil ./pkg/cmd/auth/login ./pkg/cmd/auth/logout 通过;go test ./... 通过
  • 构建: go build -o ./gc.exe ./cmd/gc 通过
  • 实际命令验证: ./scripts/regression-core.sh 通过;go test -tags=system ./tests/system 通过;隔离 GC_CONFIG_DIR 后真实执行 auth logout --yes,覆盖无环境变量、仅 GC_TOKEN、双变量、自定义主机、大小写归一化和无效 hostname 退出码
  • 安全审查: 无硬编码凭证;未读取或输出 token 值;测试与文档不含真实凭证
  • 文档同步: 已更新 docs/AUTH.md 与 docs/COMMANDS.md
  • 风险: risk/high,涉及认证确认逻辑与输出通道
  • 远端 CI: 最终 run e05035113d264aceb9d0dcc9e59bb61d 对应 head 3182a37c2c9b1080a58b705c622f4392e54e0a8d,lint/security/test/build/package 全部完成
  • 独立评审: 两轮多角色独立 Codex 子 Agent 评审均完成,最终全部 approved
  • 未覆盖项: 未执行写路径回归;auth/config/git 错误分类由既有专项继续跟踪
  • 自检结论: 本地门禁、独立评审与远端 CI 均通过

变更内容

  • 在 pkg/cmdutil 新增共享 ConfirmYesNo 组件,统一 y/N 确认的读取、大小写归一和默认拒绝语义
  • auth login 的环境变量覆盖保存门迁移到共享组件,同时保留同一条 stdin 缓冲流,避免一次性粘贴 token + 确认答案时丢输入
  • auth logout 的默认主机环境变量提示写入 stderr,基于 envtoken.SetEnvVars 只列出实际设置且非空的变量,并通过 envtoken.ShortWarning 输出 Unix/Windows 可执行的当前终端清理命令
  • auth logout 现在会归一化并校验 hostname,无效值返回 ExitUsage,不会 no-op 后误报成功
  • 补充 cmdutil、auth logout、envtoken 的单元测试,覆盖 y/N 输入、共享 reader、错误传播、非交互拒绝、无换行 EOF、提示通道、变量列表、平台命令、hostname 校验与归一化
  • 同步 docs/AUTH.md、docs/COMMANDS.md、README.md、AGENTS.md 与 auth logout 帮助文本

关联

Refs #336

Closes #622

likedislike
合并受阻
Aaflyingto成员
8 天前 添加了label:type/refactorstatus/draftrisk/highscope/cmdutil
Aaflyingto成员
8 天前 创建了 pull request,commit fe4e9ea7
Aaflyingto成员
8 天前 关联了issue:refactor(cmdutil): 抽取共享 y/N 确认组件并统一 logout 环境变量提示通道
Aaflyingto成员
8 天前 预合并成功(commit_id: 310b60870bcf3960835024931041d91f359fd5e1)
Aaflyingto成员
8 天前 推送  1 个提交:af9cc341-fix: refine auth logout environment guidance
Aaflyingto成员
8 天前 预合并成功(commit_id: 38f3b12d13d284088e8ca15ed5649e48a0163626)
Aaflyingto成员
7 天前 预合并成功(commit_id: 60158dde3854f423ed6ef3d79750edebb5affd8d)
Aaflyingto成员
7 天前 推送  1 个提交:3182a37c-fix: harden auth logout guidance and host handling
Aaflyingto成员
7 天前 预合并成功(commit_id: 941ac30e26e87bac136a8430549d727a20b0d322)
Aaflyingto成员
7 天前 取消了草稿状态
Aaflyingto成员
7 天前 修改了pull request 的描述
Aaflyingto成员
7 天前 添加了label:status/ready-for-review;删除了label:status/draft
aflyingto成员
7 天前 评论:

评审结论

  • 评审主体类型: 多个独立 Codex 子 Agent
  • 评审主体标识: 8 个独立 Codex 子 Agent(第一轮 4 个基础角色 + 第二轮 4 个深度角色)
  • 评审范围: origin/main...refactor/issue-622@3182a37c2c9b1080a58b705c622f4392e54e0a8d
  • 发现: 第一轮测试评审和第二轮架构/契约/体验评审发现问题;全部已在 3182a37 修复并复审通过
  • blocker: 无
  • 安全检查: 通过;未读取或输出 token,测试与文档无真实凭证
  • 测试与证据检查: 通过;本地全量测试、构建、pre-commit、核心回归、系统测试和真实命令验证均完成
  • 远端 CI: run e05035113d264aceb9d0dcc9e59bb61d 对应 head 3182a37c2c9b1080a58b705c622f4392e54e0a8d,五个 job 全部完成
  • 文档同步检查: 通过;docs/AUTH.md、docs/COMMANDS.md、README.md、AGENTS.md 与帮助文本已同步
  • 结论: 可以批准

多角色独立执行主体评审汇总

  • 风险分级: risk/high

第一轮评审结论

评审角色 初审结论 主要发现与处置
代码审查 approved 未发现问题;建议补充无换行输入与 Reader 契约测试
安全审查 approved P2:自定义主机登出不应提示通用环境 token;已在 3182a37 收窄为默认主机
测试审查 needs-improvement P1:缺少 auth logout 真实命令验证;P2:缺少 --with-token 共享 reader 测试;均已补齐并复验
文档审查 approved P2:认证优先级表述过宽;已改为默认主机环境变量优先、非默认主机本地认证

第二轮评审结论

评审角色 初审结论 主要发现与处置
架构一致性 needs-improvement P1:Windows 输出不可执行的 unset;已下沉到 envtoken.ShortWarning/sessionClearCommand
API 契约 needs-improvement P1:hostname 未校验归一化;已在确认前校验并返回 ExitUsage;P2:入口文档已同步
边界条件 approved P2:补无换行 EOF、nil Reader、默认自定义主机测试;已全部补齐并复审通过
用户体验 needs-improvement P1:短提示误导“彻底登出”;已明确仅当前终端并提示持久定义;P2:帮助文本已同步

发现问题及修复情况

问题 修复提交 验证
Windows 登出环境变量提示不可执行 3182a37 单元测试 + Windows 真实命令验证
自定义主机登出误报环境 token 3182a37 单元测试 + 自定义主机真实命令验证
auth logout --hostname 未校验归一化 3182a37 单元测试 + 退出码真实命令验证
--with-token 连续输入可能丢失缓冲 3182a37 TestLoginWithTokenSharesConfirmationReader
无换行确认输入可能被误改语义 3182a37 TestConfirmYesNoNonEmptyEOFWithoutNewlineFailsClosed
文档与帮助未同步 host/平台语义 3182a37 文档审查 + auth logout --help 复核

后续跟踪

  • auth/config/git 错误分类的历史一致性继续由既有错误处理专项跟踪,PR body 使用 Refs #336 仅引用不关闭。

总体评审结论

  • approved
  • 评审执行主体: 8 个独立 Codex 子 Agent
  • 评审角色: 代码、安全、测试、文档、架构、契约、边界、用户体验
  • 第二轮复审后未发现 P0/P1/P2 遗留问题
likedislike