已关闭
test(contracts): GitHub 镜像工作流契约面扩展(触发面已钉,Job/矩阵/SHA 契约待评估) #625
aflyingto创建于 15 天前关闭于 10 天前
aflyingto
12 天前 评论:
12 天前 评论:
验证记录
- 当前版本或分支: main @ d5a76d5
- 验证时间: 2026-10-23
- 复现命令:
grep -n "needs:\|runs-on:\|matrix:\|ubuntu-latest\|macos-14\|windows-latest\|-race\|fetch-depth\|permissions:" .github/workflows/ci.yml;grep -rn "github/workflows" tests/contracts/*.go - 实际结果:
.github/workflows/ci.yml的结构不变量(lint/secret-scan/test/build/docker 五 Job、test 与 build 的三平台矩阵 [ubuntu-latest, macos-14, windows-latest]、build/dockerneeds: [test]、test 的-race标志、secret-scan 的fetch-depth: 0全历史扫描、workflow 级permissions: contents: read、全部 action SHA 固定)——除 !595 补的触发面外全部无契约执行(grep 证实 tests/contracts 仅 ci_workflow_test.go 读 .gitcode 侧 + 触发 parity 一处读镜像文件);任一维度被静默删改(如砍平台、去 race、松 SHA)无任何自动化信号 - 预期结果: 镜像工作流的关键不变量有契约执行,mutation 负例证明可抓回归;未覆盖维度显式声明
- 时间线检查: 本 issue 为 PR !595 测试审查 P3 的登记跟进(2026-10-20 创建),无重复 issue、无先行 PR;!595 已合入触发面钉(validateTriggers 双文件生效),本项补齐其余维度
- 结论: 继续修复——新建
tests/contracts/mirror_workflow_test.go,沿用 validator + mutation 负例模式钉七项结构不变量(Job 集合、双矩阵、needs、race、secret-scan 全历史、权限、SHA 固定);共享类型扩展(workflowJob 增 Strategy、workflowDocument 增 Permissions)放在既有 ci_workflow_test.go;文件头显式声明未覆盖维度(Job 内步骤序列、env 细节、codecov/npm 冒烟内部、docker 构建参数——属行为细节由 CI 运行本身覆盖,契约只钉静默 YAML 编辑可破坏的结构不变量)


aflyingto
12 天前 评论:
12 天前 评论:
开发进度
- 当前状态: ready-for-review(PR !599 已完成自检、四角色独立评审三轮全部 approved、双端 CI 全绿,等待人工最终确认与合并)
- 根因: 镜像仓是 macOS/Windows 兼容性的唯一 CI 证据源,但结构不变量(除触发面外)零契约执行——砍平台、去 race、松 SHA、弱化 secret 扫描均无信号(详见验证记录)
- 主要修改: tests/contracts/mirror_workflow_test.go 新文件(十项 validator × 13 mutation 负例 + 未覆盖维度声明)+ 共享类型扩展(Strategy/FailFast/Permissions)+ §5.4 bullet 化同步
- 影响范围: 纯测试基建 + 规范文档;零生产代码、零工作流文件改动
- 单元测试:
go test ./...163 包全部通过;13 mutation 负例每项实跑(含 zero-redact 旁路场景) - 构建: 无涉(无生产代码)
- 实际命令验证: 契约测试读真实 .github/workflows/ci.yml 解析校验即验证;mutation 负例即回归证明;初版 validator 控制流 bug 被负例当场抓住(自证)
- 安全影响: SHA 钉扎/job 权限上限/--redact 精确值钉扎均为安全正向加固;无凭证变化
- 文档同步: §5.4 bullet 化 + 十项不变量清单 + 同步规则扩围(同 PR 前置履行,文档评审确认)
- 风险或未覆盖项: risk/medium(tests/ 默认档),合并前需人工最终确认;GitCode 侧 -race 契约对等登记 issue 627;--redact 超长子串理论旁路经评审判定自纠正无实际风险(备忘记录)
- 关联 PR: !599


背景
validateTriggers对.gitcode/workflows/ci.yml与.github/workflows/ci.yml双文件生效),但 GitHub 镜像工作流的其余维度(Job 集合、依赖关系、secret 扫描 job、跨平台矩阵等)仍零契约覆盖——两文件 Job 集不同,无法直接复用 GitCode 侧契约任务
.github/workflows/ci.yml的专属契约面(可钉项如:lint/secret-scan/test/build/docker 五 Job 存在性、三平台矩阵、action SHA 固定、test job 的-race标志等),沿用 validator + mutation 负例模式验收标准
影响范围
tests/contracts/(新测试文件或扩展)来源: PR !595 测试审查 P3(.github/workflows/ci.yml 整体零契约覆盖为先前已存在缺口,触发维度已随 !595 补齐)