mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
A run-wide draw proved one distribution and said nothing about the other four, while reporting green. Both are matrix-row axes now, assigned by the same deterministic rotation mode and tor already use, so one sweep exercises every distribution and every filesystem. The two read the row's position like an odometer, the distro as the low digit. Turning both on the position directly covers only n of the n x m pairs whenever the pools are the same length, and no sweep unlocks it. Both are part of a row's identity: glyphs in the job label, columns in the plan table, shards in the artifact name. Both are selectable through %distro and /filesystem, and a retrigger replays the distro off a failed title. It leaves the filesystem out, because a title states the kind the matrix assigned and a deploy may have fallen back from it. A row's filesystem is a preference unless a human names it, on the run or in a token. Reading the matrix's own narrowing as a demand would fail rows for every transient condition the applying step is built to tolerate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
32 lines
1.2 KiB
Bash
Executable File
32 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Validate a run's selection inputs against the branch it would deploy from,
|
|
# before any runner is spent on it.
|
|
#
|
|
# Inputs via env:
|
|
# INPUT_WHITELIST whitelist value of the run ('' = nothing to check)
|
|
# INPUT_PRIORITY priority line of the run ('' = nothing to check)
|
|
# INPUT_MODE deploy modes the run draws from
|
|
# INPUT_TOR tor axis of the run
|
|
# INPUT_DISTROS distro pool of the run ('' = every declared distro)
|
|
# INPUT_FILESYSTEM filesystem pool of the run ('' = every declared kind)
|
|
# INPUT_LIFECYCLES lifecycle envelope of the run
|
|
#
|
|
# Exits non-zero when a token names a row this branch does not have or pins an
|
|
# axis the row cannot take; cli.meta.ci.validate reports every offender at once,
|
|
# so a stale list is fixed in one pass rather than one CI round per entry.
|
|
|
|
set -euo pipefail
|
|
|
|
# shellcheck source=scripts/meta/env/load.sh
|
|
source scripts/meta/env/load.sh
|
|
|
|
"${PYTHON}" -m cli.meta.ci.validate \
|
|
--whitelist "${INPUT_WHITELIST:-}" \
|
|
--priority "${INPUT_PRIORITY:-}" \
|
|
--modes "${INPUT_MODE:-auto}" \
|
|
--tor "${INPUT_TOR:-auto}" \
|
|
--distros "${INPUT_DISTROS:-}" \
|
|
--filesystem "${INPUT_FILESYSTEM:-}" \
|
|
--lifecycles "${INPUT_LIFECYCLES:-}"
|