用途:dev-ci 面向 CI 分类(triage)与“红灯门”(red-gate)纪律,适用于 Actions 运行变红、pr-gate 阻塞 PR、判断是否重跑,或编辑工作流文件的场景。
主要规则:红色必需门会停止整条产线,这是机制而非情绪。不得绕过红灯合并;不得盲目重跑,每次重跑前必须写明诊断:哪个 job、哪个 step、根因或明确标注“疑似偶发”。同一诊断只允许一次重跑;若“偶发”失败两次,即视为真实缺陷并向前修复。同一 job 连续两次以上失败属于 P0,修复门的优先级高于所有功能开发。
PR 门结构:ci.yaml 由 pull_request 与 main 推送触发,唯一必需状态是 pr-gate,它汇总 test-linux、test、test-install、docs-build、site-build、release-site-build 等 job,全部必须 success。PR 运行按 PR 编号并发取消,main 运行永不取消,以保留合并后信号与 Codecov 基线。
分类流程:用 gh run list 判断是新失败还是连续失败;用 gh run view 查看失败 job 与 step;用 gh run view --log-failed 过滤错误;失败运行会上传 test-artifacts(如 service.log、session.db),用 gh run download 获取。分类后分别处理:真实回归在被修改分支上向前修复;环境漂移单独提交并写明诊断,不得在无关 PR 中掩盖或添加无理由跳过;基础设施偶发允许在写明诊断后重跑一次,第二次失败则不是偶发。
缓存与发布:缓存由 config/cache.toml 统一定义,CI 只能恢复不可变且经验证的输入,不得自造工作流级缓存限制;用 just cache stats --json 诊断,用 just cache contract <id> 查看限制。发布 CI 与日常 CI 正交,规则见 RELEASE.md;just test 是完整本地证明;二进制与 profile 通道使用 capsem-release-${channel} 锁,未通过完整功能证明不得公开;每日调度器先冻结源提交,再串行调用 release-profile,最后调用 release-binaries,即使某个 profile 失败也继续。
编辑工作流:每个调用 just 的步骤都是声明式执行边,由 test_exit_status_integrity.py 校验,禁止 continue-on-error、|| true、禁用步骤或删除命令;新 job 必须接入 pr-gate 的 needs,否则不会被分支保护要求。外部 action 必须固定到完整 commit SHA。
限制:以上规则对所有代理具有强制性,未写诊断的重跑或合并属于协议违规。就介绍而言,该技能的适用前提、完整分类字段与文件内容以原文为准。