Windows clones default to core.autocrlf=true, which checks out CRLF into
*.sh working copies even though the committed blobs are byte-clean. The
shebang then dies with "env: 'bash\r': No such file or directory"
(exit 127), which read like a broken script rather than a line-ending
artifact. Assert LF for all shell scripts at the repo root so every
Windows clone gets clean scripts/gate.sh, data/icon/generate.sh and
data/shader/output.sh.
Closes#19