Skip to content

目标

实现 GitHub Actions required checks 验证与 Branch Protection 检测,提升仓库当前 head 的质量约束。

实现要点

  1. CI 验证 (src/flowrun/ci.ts 新增)

    typescript
    checkRequiredChecks(policy: RepositoryQualityPolicy, prChecks: PRCheckResult[]): CICheckResult
    • 验证每个 requiredChecks 中的 context 是否由配置的 appId 发布
    • 来源验证:检查 gh pr view --json statusCheckRollup 中的 app.id
    • 来源不是预期 GitHub App → 拒绝自动合并
    • qualityContractDigest 计算:JCS+SHA-256 绑定 testCommands + verifyCommands + coveragePolicy
  2. Branch Protection 检测

    • checkBranchProtection(owner, repo, branch): BranchProtectionResult
    • 使用 gh api repos/{owner}/{repo}/branches/{branch}/protection 检查
    • 缺失保护规则 → 拒绝自动合并(不静默降级)
  3. Required workflow 验证

    • validateRequiredWorkflow(policy: RepositoryQualityPolicy): ValidationResult
    • required workflow 必须来自受保护默认分支或组织级 required workflow
    • PR 不能修改实际执行契约
    • requiredChecks 为空 → 拒绝启用 required mode
  4. repositoryQualityPolicy.mode 语义

    • off:不增加额外约束,保持现有 CI/Review/Branch Protection 行为
    • required:额外要求 requiredChecks 中每个 context 均通过
    • 迁移默认 off,不放宽也不加强既有规则

验收标准

  • [ ] trusted source 测试:正确 App 通过,错误 App 拒绝
  • [ ] pending/fail/pass 状态测试
  • [ ] required workflow 被 PR 修改的检测测试
  • [ ] Branch Protection 缺失检测测试
  • [ ] mode off/required 切换测试

Worktree

  • 路径: .worktree/tdd-e2-ci-branch-prot/
  • 分支: feat/tdd-e2-ci-branch-prot