gitlink-cli/skills/gitlink-cli-contract-guard/examples/executive-contract-gate.md

2.2 KiB
Raw Blame History

轻量 CLI 契约审查示例

go test ./cmd/... ./shortcuts/...
go run . pr +view --owner Gitlink --repo gitlink-cli --id 123 --format json
go run . --help
go run . pr +view --owner Gitlink --repo gitlink-cli --id 123 --format json 2>error.txt
# CLI 契约审查摘要

## PR #123
**参数与帮助:** <span style="color:#067647"><strong>旧调用保持兼容</strong></span> **[passed]**:新增参数为可选且默认值不变;依据:默认分支与当前 head 的帮助、旧命令和解析结果对照;影响:现有脚本无需迁移。
**JSON/文本输出:** <span style="color:#B42318"><strong>机器输出契约已破坏</strong></span> **[failed]**:调试文本混入 JSON 并导致解析失败;依据:相同命令的原始字节和结构化解析测试;下一步:分离人读日志与 JSON。
**错误与退出码:** <span style="color:#067647"><strong>错误语义仍可区分</strong></span> **[passed]**参数错误和远端错误保留不同退出码依据失败矩阵、stderr 和退出码;影响:自动化判断不受影响。
**编码与颜色:** <span style="color:#B54708"><strong>注入与无颜色边界未验证</strong></span> **[partial]**:中文 UTF-8 正常,但 `--header` 恶意输入和 `NO_COLOR` 缺少证据;依据:编码扫描与测试清单;下一步:补边界回归。
**兼容与文档:** <span style="color:#B54708"><strong>文档说明不完整</strong></span> **[partial]**帮助未说明新增字段的可选性依据README、帮助和真实输出对照下一步同步契约说明。
**契约结论:** <span style="color:#B42318"><strong>修复 JSON 后再审</strong></span> **[blocked]**存在一个会阻断脚本消费的契约问题依据CG-001 和稳定复现命令;下一步:修复并重跑完整矩阵。

## 先做这 2 件事
1. **[CG-001][blocking] 修复** JSON 输出中的调试文本,并补结构化断言。
2. **[CG-002][high] 验证** `--header` 的换行、引号和敏感值脱敏边界。

关键回归至少覆盖旧 flag、默认值、帮助、成功 JSON、错误 JSON、退出码、中文 UTF-8、NO_COLOR 和恶意输入;不要只以进程返回 0 作为通过依据。