mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
The merge assertion was a job nobody depended on. ci-orchestrator needed the scope, the branch prefix and the affected roles -- not it -- so a PR whose base was not merged in went on to spend five distros on a deploy sweep and reported a single red job beside a chain that had already finished. Validation is now a reusable workflow every entry calls, and what it checks follows the event and the inputs rather than the caller: a pull request gets its branch prefix and merge base asserted, a run carrying a selection gets that selection checked, a fork PR waits here for the privileged run's images. The wait and its gate move in with it, so the orchestrator no longer keeps a second copy of that logic. Every downstream job depends on the gate. The selection check is what the last two nights needed. cli.meta.ci.validate resolves every token against the branch that would deploy it -- role, variant, mode, onion state -- and reports all offenders at once. Until now the matrix builder raised on the first bad token from inside a chunk job, so a stale priority line cost one full CI round per entry and only ever showed the next problem after the previous one was fixed. Measured on a real list: three unusable tokens, one pass. A bare role name that matches nothing is a warning, not an error: the diff-derived whitelist legitimately names roles the lifecycle envelope filters out. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>