代码审查循环
仅拥有显式要求的PR到部署生命周期。从由finalize或等效证据产生的可合并树开始;通用加固属于finalize,行为保持性清理属于simplify。
授权与结果
在当前对话显式授权完整生命周期时开始:发布分支、创建或更新PR、处理审查反馈、通过门控后合并,以及监控和恢复生成的部署。缺少授权在第一个未授权的转换之前产生BLOCKED_AUTHORIZATION。
最终结果为:
DEPLOYED:所有合并和部署门控通过。BLOCKED_PREFLIGHT:树、仓库状态、基础分支或所需访问未就绪。BLOCKED_REVIEW:最新的head SHA无法在其预算内到达审查门控。BLOCKED_MERGE:审查门控通过,但策略、权限或平台状态阻止了验证的合并。BLOCKED_DEPLOYMENT:部署无法在恢复预算内通过,或需要不安全/未授权的决策。
使用正常的增量化提交和推送。强制推送、直接基础分支提交、生产数据突变、密钥/权限更改、计费更改或基础设施策略更改需要单独显式授权和仓库支持。
解析不变性
在更改仓库状态之前:
- 读取适用的仓库说明并发现提交、PR、合并、必需检查以及部署策略。
- 从用户提供的显式目标解析
<base-branch>;现有PR基础必须匹配它。若没有显式目标,则使用现有PR基础,然后是来自提供商元数据或origin/HEAD的远程默认值。验证分支在远程存在,记录一次,并在整个过程中使用<base-branch>。 - 解析主题分支、远程、PR平台、必需审查者/检查、合并方法、部署提供商以及必需的部署目标。
- 记录有限的预算。使用仓库/用户提供的值;否则使用每个PR五个已审查的head SHA,每个head SHA至少60秒间隔的20分钟审查轮询,两个部署恢复尝试,以及每个必需部署30分钟。
当每个占位符都有确凿的值且每个预算都是有限时,不变性解析完成。冲突或缺失的重要值产生BLOCKED_PREFLIGHT。
预检与发布
需要当前树或其等效证据的TREE_MERGE_READY结果,涵盖范围、发现、简化和验证。否则返回BLOCKED_PREFLIGHT并将准备路由到finalize。
检查当前状态、分支、完整预期差异、未跟踪文件以及git diff --check。确认不相关的工作已从暂存区排除,且预期的生成工件、密钥策略和仓库检查仍然匹配就绪证据。
当当前分支是<base-branch>时,在暂存之前创建授权的主题分支。仅暂存预期文件,检查暂存差异并验证,根据仓库策略提交并正常推送。复用主题分支的现有PR或打开一个新PR,包含更改、原理、验证和重要说明。
当远程主题head等于本地HEAD、PR目标是<base-branch>且PR差异恰好包含预期更改时,预检完成。
有界Head-SHA审查
每个PR获得独立的head-SHA预算。一个周期绑定到一个不可变的<head-sha>:
- 每次推送后捕获远程PR head SHA并递增已审查head计数。超过配置计数的SHA产生
BLOCKED_REVIEW。 - 轮询直到每个SHA的截止时间,获取Greptile输出以及平台证据表明绑定到该确切SHA的必需检查。旧评论和分数作为历史记录,而非当前证据。
- 记录每个当前评论的Greptile评分、必需检查结果、阻塞线程以及处置:修复、已处理、不正确/过时、超出范围或行为风险决策。
- 通过
simplify并以PR解析的<base-branch>和当前<head-sha>作为其有效差异路由仅清理性修复。仅当仓库证据给出清晰的范围内答案时应用正确性修复;验证每个无效化的表面。对无需更改的处置回复证据。 - 提交并推送一个一致的修正集。新的远程SHA开始下一个周期;前一个周期无法满足其门控。
需要产品或合同意图的行为风险决策、因不相关原因失败的必需检查、截止时间前无法获得的审查证据或耗尽的head预算产生BLOCKED_REVIEW并附带确切证据。
合并门控
仅当所有声明在同一观察到的<head-sha>下为真时合并:
<head-sha>等于最新的远程PR head。- Greptile报告
<head-sha>得分为5/5。 - 每个必需检查报告
<head-sha>成功。 - 每个阻塞线程已解决,且每个审查评论都有记录的处置。
- PR可合并并满足仓库的更新和批准策略。
- 与
<base-branch>的新鲜比较恰好包含预期差异。
使用仓库已建立的合并方法。从平台捕获<merged-sha>,然后验证远程<base-branch>包含它,或者对于压缩/重写工作流,包含平台报告的生成提交。任何声明的失败产生BLOCKED_MERGE;审查失败仅在预算剩余时返回到有界审查循环。
部署门控
定位由生成的<merged-sha>或由后续证明包含它的<base-branch>提交触发的每个必需部署。监控每个部署直到成功或其截止时间,保留提供商状态以及相关的构建、迁移、运行时和健康证据。
仅当所有声明为真时报告DEPLOYED:
- PR已合并到解析的
<base-branch>,且远程历史包含平台报告的结果。 - 每个必需部署都绑定到该结果或在
<base-branch>上可证明的后代。 - 每个必需部署和部署后健康/发布检查在其截止时间前报告终端成功。
- 没有必需目标保持挂起、失败、取消或超时状态。
有界部署恢复
当必需部署失败时,根据提供商证据诊断最小的因果阻塞者。不相关的失败、不清楚的因果关系或需要单独授权操作的修复产生BLOCKED_DEPLOYMENT。
对于每个可用的恢复尝试:
- 递增恢复计数,更新远程
<base-branch>,并从该确切顶端创建恢复分支。默认恢复路径是分支加PR;基础分支仍然是集成目标而非编辑工作区。 - 仅应用因果修复并运行
finalize以建立恢复差异的TREE_MERGE_READY。 - 发布一个以
<base-branch>为目标的恢复PR。赋予它一个新的有界head-SHA审查循环并要求完整的合并门控。 - 捕获新的合并结果并对每个无效化的目标重新运行完整的部署门控。
仅当用户在当前对话中单独授权且仓库策略允许时使用直接的<base-branch>提交。耗尽恢复计数或任何恢复PR的审查预算产生BLOCKED_DEPLOYMENT。
报告
返回终端结果;<base-branch>;PR URL;最新的已审查head SHA及预算使用情况;Greptile评分、检查和评论处置;合并方法及生成的SHA;部署目标、URL和证据;恢复使用情况;以及每个阻塞者。仅在完整部署门控通过后将成功声明为DEPLOYED。