mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 07:26:51 +00:00
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>