已关闭
test(contracts): GitCode security job 的 unshallow 全历史步骤入契约(镜像侧 fetch-depth 对等收尾) #628
aflyingto创建于  4 天前关闭于  4 天前
aflyingto成员
4 天前 创建

背景

  • PR !600 完成 GitCode 侧 -race 与 gitleaks --redact=100 的契约对等后,文档审查备忘指出最后一项对等缺口:镜像侧 secret-scan 钉了 fetch-depth: 0(全历史扫描),GitCode 侧的等价机制是 security job 的 unshallow 步骤(浅克隆检出后 git fetch --unshallow 补全历史再扫描,见 spec/delivery/ci-workflows.md §2.1 与 spec/foundations/security.md 的 fail-closed 描述),目前未入契约

任务

  • 为 GitCode security job 的 unshallow 行为补契约钉扎(沿 issue 627 模式:validator + mutation 负例 + §5.4 GitCode 清单 bullet),注意 fail-closed 语义(unshallow 失败时 job 必须失败而非跳过)是否可钉

验收标准

  • unshallow 步骤的存在与 fail-closed 行为有契约执行与负例
  • §5.4 GitCode 清单同步

影响范围

tests/contracts/ci_workflow_test.go、spec/delivery/ci-workflows.md

来源: PR !600 文档审查备忘(镜像侧 fetch-depth: 0 的 GitCode 等价物未入契约)

likedislike
Aaflyingto成员
4 天前 添加了label:scope/ci, status/triage,type/test
Aaflyingto成员
4 天前 关联了pull request:docs: sediment the issue-create template and platform web-UI templates
aflyingto成员
4 天前 评论:

验证记录

  • 当前版本或分支: main @ 2e54bb1(!601 合并后)
  • 验证时间: 2026-10-26
  • 复现命令: grep -n -B3 -A8 "unshallow" .gitcode/workflows/ci.yml;grep -n "unshallow\|full history" tests/contracts/ci_workflow_test.go
  • 实际结果: security job 含 "Verify full history" 步骤(浅克隆检出后 git fetch --unshallow,fail-closed:|| { echo "::error::..."; exit 1; } 失败即 job 失败);该步骤存在与 fail-closed 行为均无契约执行(grep 证实契约文件零相关断言)——镜像侧 fetch-depth: 0 已钉,GitCode 侧等价机制裸奔,为最后一项对等残差
  • 预期结果: unshallow 步骤的存在与 fail-closed 语义有契约执行与负例
  • 时间线检查: 本 issue 为 PR !600 文档审查备忘的登记项(2026-10-26 创建),无重复、无先行 PR;!599/!600 已完成其余维度对等
  • 结论: 继续修复——validateWorkflow 补 unshallow 检查(security job 须含 git fetch --unshallow 步骤且其 run 脚本含 fail-closed 失败处理)+ mutation 负例(删步骤 / 去 fail-closed 各一)+ §5.4 GitCode 清单补一条
likedislike
Aaflyingto成员
4 天前 添加了label:status/verified;删除了label:status/triage
Aaflyingto成员
4 天前 添加了label:status/in-progress
Aaflyingto成员
4 天前 关联了pull request:test(contracts): pin the GitCode unshallow fail-closed guarantee
Aaflyingto成员
4 天前 添加了label:status/ready-for-review
aflyingto成员
4 天前 评论:

开发进度

  • 当前状态: ready-for-review(PR !602 已完成自检、四角色独立评审一次闭环全部 approved、双端 CI 全绿,等待人工最终确认与合并)
  • 根因: 镜像侧 fetch-depth: 0 已钉而 GitCode 侧等价机制(unshallow + fail-closed)零契约——最后一项对等残差(详见验证记录)
  • 主要修改: validateSecurityUnshallow(unshallow ∧ exit 1 合取)+ 双 mutation(删步骤/软化失败)+ §5.4 security bullet 并句
  • 影响范围: 纯测试基建 + 规范文档;零生产代码
  • 单元测试: go test ./... 163 包全部通过;GitCode 侧 21 负例全过(新增 2)
  • 构建: 无涉
  • 实际命令验证: 契约测试读真实 ci.yml(unshallow 步骤实际存在且 fail-closed);双负例实跑命中
  • 安全影响: 防安全扫描静默降级的契约加固;无凭证变化
  • 文档同步: §5.4 并句(保证层等价性表述,文档评审背书)
  • 风险或未覆盖项: risk/medium,合并前需人工最终确认;无遗留——双端 CI 契约对等台账全部归零
  • 关联 PR: !602
likedislike
Aaflyingto成员
4 天前 关闭了 issue
Aaflyingto成员
4 天前 添加了label:status/merged