用途
validate-release-green 是一个本地 Release-Green 观察器技能,用于针对确切的 base 或组合 PR 候选,运行或检查发布就绪状态,将硬性失败(HARD)、建议性漂移(DRIFT)和不完整证据分开呈现。它帮助判断候选是否满足特定 profile 的检查,但不承诺与所有 CI 工作流通道对等。
主要能力
- 解析当前 base 与候选 SHA,并使用隔离 worktree 进行验证,观察的是实际工作树而非抽象分支名。
- 支持选择并执行观察器的不同 profile,例如在候选提供相应脚本时:
npm run check:release-green -- --quick:部分快速诊断。npm run check:release-green -- --full-ci --with-build --hermetic --json:观察器更广泛的静态/测试/打包 profile,仍不保证与每个工作流通道对等。
- 区分 HARD(观察器的阻塞分类)与 DRIFT(诊断分类),并强调单独一类不能证明因果关系。
- 要求在确切的 base 上比较同一要求,再判断缺陷是否由贡献者引入。
- 保留 stdout/stderr、进程回执与验证器自身的退出码;即使外层任务显示绿色,也要求阅读报告。
- 对于机器报告,可在候选上使用
scripts/ci/release-green-result.mjs检查观察到的退出码、确切 SHA 与事件/profile,需提供运行中的实际值而非编造退出码。
使用方式
- 在解读远程状态或归因失败前,先阅读
../_shared/base-green.md。 - 解析当前 base 与候选 SHA,使用隔离 worktree。
- 在选择标志前,检查
scripts/quality/validate-release-green.mjs、其 npm 入口点以及候选的工作流。 - 在具有物理依赖的 worktree 中构建,不要使用外部 node_modules 符号链接。
- 执行所选 profile 命令,保留原始日志与产物位置。
- 阅读报告,记录 SHA、profile、命令、版本、原始日志/产物位置、硬性失败、漂移、不完整通道与因果置信度。
- 在将结果用于后续决策前,重新查询实时引用。
适用场景
- 在本地快速诊断某个 PR 候选的发布就绪状态。
- 区分阻塞性失败与建议性诊断信息。
- 在归因缺陷前,与确切 base 进行对比。
- 生成机器可读的发布绿色结果报告(在候选提供相应脚本时)。
限制
- 绿色本地 profile 仅表示该 profile 通过,不覆盖其余通道(如相关 Node/Vitest 套件、覆盖率、安全、构建、包/启动及外部检查)。
- 不得基于聚焦运行、草稿跳过、已关闭事件或旧 head SHA 标记 merge-ready 或 pre-greened。
- 报告验证器不能确立被省略的工作流要求已运行。
- 完整当前观察器 PASS 只能通过授权工作流解决其自身事件,不能关闭无关要求或授权合并、基线变更、发布或部署。
- 该技能为诊断性质;仅当用户要求更改时才实现修复。需保持阈值、断言、贡献者信用与行动边界不变。
- 缺失、矛盾、过期、取消或超时的证据不能确立 PASS。
- 版本化静态门禁清单(若存在)描述静态扫描成员,而非所有观察器或准入任务;需明确报告未建模的覆盖范围。