mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
A selection token may pin the mesh state as &vpn or &direct, but check_pins had no arm for it. pinned_vpn_states intersects the pin with the states the mode allows and only swarm meshes, so a token like @compose+clearnet&vpn left an empty state list: the row produced no job at all and the run reported green for a combination that never deployed. That is the outcome _reject exists to prevent, and every sibling axis already refuses an impossible pin. The new arm asks whether any candidate mode keeps a state rather than whether the pin is reachable, so a held vpn axis still overrides the pin instead of being refused. That behaviour has its own test and is unchanged. An earlier check was removed with the compose-mesh revert of 2026-10-16 because it rested on meshable() and smallest_variant(), which that revert deleted. This one reuses pinned_vpn_states, applies to the swarm-only axis the revert restored, and covers both mesh states instead of only &vpn. pin_vpn and vpn_mode now reach check_pins from all three callers. The run's vpn axis reaches the validation job through call-orchestrator and call-validation, which passed every other axis but this one. The priority procedure and its skill state all eight axes a token carries, not six: architecture and mesh were pinnable and, for architecture, already validated, yet neither was documented. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
36 lines
1.4 KiB
Bash
Executable File
36 lines
1.4 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_VPN WireGuard mesh 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_ARCHITECTURES architecture pool of the run ('' = amd64 and arm64)
|
|
# 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}" \
|
|
--vpn "${INPUT_VPN:-auto}" \
|
|
--distros "${INPUT_DISTROS:-}" \
|
|
--filesystem "${INPUT_FILESYSTEM:-}" \
|
|
--architectures "${INPUT_ARCHITECTURES:-}" \
|
|
--lifecycles "${INPUT_LIFECYCLES:-}"
|