4b06093d6c
_validate carried the whole matrix in one function (cc C/13, over the branch quality gate). Splitting it by what is actually being checked — shared, sqlite-only, postgres-only — puts every piece at A/B. Ordering is the part that had to survive: the chain's order is the error messages' priority, so a run with several bad flags still reports the same one it did before. The --vacuum/--apply pairing therefore stays in the shared step ahead of the backend branch, where it was; it is a "do not rewrite the whole file when you only meant to look" rule, which holds before the question of which backend a flag belongs to. No behavior change: all nine parser.error strings are byte-identical and in the same order, and the eight usage-error cases pass unmodified.