目标
实现 GitHub Actions required checks 验证与 Branch Protection 检测,提升仓库当前 head 的质量约束。
实现要点
CI 验证 (
src/flowrun/ci.ts新增)typescriptcheckRequiredChecks(policy: RepositoryQualityPolicy, prChecks: PRCheckResult[]): CICheckResult- 验证每个
requiredChecks中的 context 是否由配置的appId发布 - 来源验证:检查
gh pr view --json statusCheckRollup中的app.id - 来源不是预期 GitHub App → 拒绝自动合并
qualityContractDigest计算:JCS+SHA-256 绑定 testCommands + verifyCommands + coveragePolicy
- 验证每个
Branch Protection 检测
checkBranchProtection(owner, repo, branch): BranchProtectionResult- 使用
gh api repos/{owner}/{repo}/branches/{branch}/protection检查 - 缺失保护规则 → 拒绝自动合并(不静默降级)
Required workflow 验证
validateRequiredWorkflow(policy: RepositoryQualityPolicy): ValidationResult- required workflow 必须来自受保护默认分支或组织级 required workflow
- PR 不能修改实际执行契约
- requiredChecks 为空 → 拒绝启用
requiredmode
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