`make -C ci spec-immutability || [ $? -eq 3 ]` fails on the honest skip: GNU make exits 2 when the recipe exits 3, so the guard never matches. Invoke the script directly so the exit-3 skip (spec repo not checked out in CI) is tolerated while a real spec drift (exit 1) still blocks. Co-Authored-By: Claude Opus 4.8 <[email protected]>