# Line-ending policy. # # Shell scripts MUST be checked out with LF endings on every platform. # Git for Windows installs with `core.autocrlf=true` by default, which # rewrites LF -> CRLF on checkout. A strict bash (WSL, Linux CI, macOS) # then chokes on the trailing CR: # # scripts/run-unit-parallel.sh: line 23: $'\r': command not found # scripts/run-unit-parallel.sh: line 24: set: pipefail : invalid option name # scripts/run-unit-parallel.sh: line 32: syntax error near unexpected token `$'{\r'' # # That silently disabled `bun run test`, `bun run verify`, `bun run ci:local` # and `bun run test:e2e` for Windows contributors, since all four dispatch # through bash. `eol=lf` pins the checkout regardless of the user's # core.autocrlf setting. *.sh text eol=lf # Markdown gets the same pin, for a different failure mode: the frontmatter # parsers anchor on LF. Under a CRLF checkout the opening fence becomes # "---\r\n", which an LF-only /^---\n/ (or a startsWith("---\n")) does not # match, so a well-formed document silently parses as having no frontmatter. # There is no error -- the field just comes back empty. That has surfaced as # blank skill descriptions, a fixer inserting its banner above the # frontmatter instead of below it, resolver trigger extraction dropping # entries, and a generated-doc freshness check reporting every line as # drifted. The parsers stay CR-tolerant on their own merits (gbrain reads # Markdown it does not own), but pinning this repo's own .md checkout to LF # removes the whole class for anyone working here. *.md text eol=lf