':?' exits 1 under bash but 2 under dash (the Ubuntu runner's sh), so the two missing-variable tests failed in CI while passing locally. Replace with explicit checks so every failure path exits 1.
':?' exits 1 under bash but 2 under dash (the Ubuntu runner's sh), so the two missing-variable tests failed in CI while passing locally. Replace with explicit checks so every failure path exits 1.