Files
rippled/.github/scripts
Bart 36d3429a79 ci: Check that every matrix config reaches the tier it declares
CI runs only the jobs generate.py emits, so a config that falls out of the
matrix size it belongs to takes its coverage with it and fails nothing. Add
validate_linux_matrices(), called on every invocation, which checks that no two
configs expand to the same name, that minimal is part of full and full part of
extended, that each config reaches the sizes its flags ask for and no others,
and that the extended tier is not empty. The checks name no config, only the
flags, so adding or removing one needs no edit there. Reject a config declaring
both "minimal" and "extended", which the filtering would drop from the minimal
matrix, the opposite of what it asked for. Extract expand_linux_config() so the
checks and the matrix builder cannot disagree about what a config expands to.

The script never sees the event that triggered the run, so it cannot tell
whether this run should have asked for the extended configs at all, and a
condition that stops matching the events would drop them and fail nothing.
So move the three GENERATE_ variables to job level, where the generate step and
a new check read the same values, and have that check re-run the generator with
--extended and compare. It runs only on the events that must produce the
extended matrix.

Proved by mutation: seven edits to linux.json and to the filtering each fail,
and the message names the config that moved. The generated matrix is
byte-identical to the previous one across all seven argument combinations, so
the extraction changed no job.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 20:24:25 +02:00
..