Closed
docs: auth status --json 的 token_valid 描述与 omitempty 实际行为不一致 #624
aflyingtoAdd on 18 days agoClosed at 14 days ago
aflyingto
17 days ago Comments:
17 days ago Comments:
误关恢复:本 issue 是 PR !593 评审产生的跟进项,尚未交付。!593 merge 时其 body「后续跟踪 Issues」清单中的裸 issue 编号触发了 GitCode 自动关闭(pr-workflow §5 已记载该行为),与 issue 实际状态无关,现重新打开继续跟踪。后续 PR body 将改用文字描述引用,不再裸写编号。


aflyingto
17 days ago Comments:
17 days ago Comments:
验证记录
- 当前版本或分支: main @ 2b2ce1d
- 验证时间: 2026-10-20
- 复现命令:
GC_TOKEN=stub-invalid ./gc auth status --json;env -u GC_TOKEN -u GITCODE_TOKEN GC_CONFIG_DIR=$(mktemp -d) ./gc auth status --json;grep -n "token_valid" pkg/cmd/auth/status/status.go docs/COMMANDS.md - 实际结果: 失败路径输出
{"hostname","logged_in":true,"token_source":"GC_TOKEN"}——无token_valid字段(TokenValid带omitempty,false 时整体省略);未登录路径仅{"hostname","logged_in":false};而docs/COMMANDS.md:301声称--json下会出现token_valid:false——文档失实确认(logged_in:false半句属实,LoggedIn无 omitempty) - 预期结果: 文档描述与
--json实际输出逐字段一致 - 时间线检查: 本 issue 为 PR !593 处理中发现的既有问题(git blame 证实文档该句由 2026-07-08 的 03f05c8 引入),status_test.go 中
TestStatusRunInvalidTokenJSONReturnsAuthError的注释已显式标注该缺陷指向"separate follow-up issue"即本 issue;无重复 issue、无先行 PR - 结论: 继续修复,裁定走代码侧(去
omitempty使文档契约成立),理由:①文档描述的是面向 AI 代理的本意契约(状态布尔字段的 false 是有效信息而非缺失,omitempty 属经典 JSON 契约缺陷,缺席与假值不可区分损害机器可消费性);②加字段为纯增量、向后兼容(agent-friendly-cli §2.3 新增 JSON 输出视为增强能力);③改文档侧将把有损契约固化(消费方需自行处理"缺席=假"的歧义)。文档零改动——docs/COMMANDS.md:301声称的契约即修复后的目标契约,改码后逐字成立


aflyingto
17 days ago Comments:
17 days ago Comments:
开发进度
- 当前状态: ready-for-review(PR !597 已完成自检、四角色独立评审两轮全部 approved、双端 CI 全绿,等待人工最终确认与合并)
- 根因:
TokenValid的omitempty使 false 时字段整体省略,docs/COMMANDS.md:301长期承诺的token_valid:false失实——文档为契约、代码偏离(CLAUDE.md 权威边界),裁定代码侧修复(详见验证记录) - 主要修改: status.go 一行 tag(状态布尔恒序列化,注释承载裁定三要素)+ 三处测试期望更新 + 成功态三覆盖闭环用例 + COMMANDS.md "恒输出"契约表述收紧
- 影响范围: 仅
auth status --json失败/未登录场景新增一个字段;文本路径、退出码、stderr、其他字段不变;纯增量向后兼容 - 单元测试:
go test ./...163 包全部通过;红绿证明经测试评审-overlay独立复现;三态覆盖闭环(not-logged-in/invalid/success),status 覆盖率 90.1%→91.4% - 构建:
go build通过 - 实际命令验证: 失败/未登录两路径
token_valid:false+ 退出码 4 实测;docs/COMMANDS.md声明逐字成立;regression exit 0;系统测试通过 - 安全影响: 凭证路径与值字段零触碰(安全评审源码级核实);无敏感信息披露
- 文档同步: COMMANDS.md 评审轮收紧为"恒输出"表述(三态实测背书);AUTH.md 无字段级表述无需跟随(文档评审判定)
- 风险或未覆盖项: risk/high(auth 域),合并前需人工最终确认;外部整串精确匹配消费方知会已入 PR 正文(仓内零此类消费方)
- 关联 PR: !597


背景
docs/COMMANDS.mdauth status 节称--json模式下 JSON 含token_valid:false,但AuthStatus.TokenValid带omitempty(pkg/cmd/auth/status/status.go:36),false 时字段整体省略——实际输出永远不会出现token_valid:false(已实测确认)logged_in:false半句属实(LoggedIn无 omitempty)token_valid字段会落空任务
token_valid去掉 omitempty,显式输出 false,使文档成立)docs/AUTH.md如有相关描述验收标准
--json实际输出逐字段一致,有测试或实测证据--json契约测试同步更新,评估对既有消费方的兼容影响影响范围
pkg/cmd/auth/status/(如走代码侧)、docs/COMMANDS.md、docs/AUTH.md来源: PR !593 处理过程中发现的既有问题