Tracking issue for a one-line-per-repo fix. Referenced from the PRs rather than duplicated as twenty near-identical issues.
The problem
Most repos in the org have no .gitattributes. With core.autocrlf enabled, a Windows checkout gets CRLF in the working tree while every formatter in the toolchain (prettier, rustfmt, gofmt) writes LF. The result is a permanent, meaningless diff between what is on disk and what the tools produce.
Measured on FerrGames-Cloud: 19 files failed prettier --check and running prettier --write over them produced an empty git diff. Not one had a real formatting problem. The consequence is that nobody trusts the check, so nobody runs it, so real drift accumulates unnoticed and no formatting gate can be added to CI.
What is actually stored
Nothing needs rewriting. Across all 19 checkouts surveyed, zero text files are stored with CRLF in the index; git already normalises on commit. This is purely about what a checkout puts on disk, which is why each fix is a single new file and git add --renormalize . stages nothing.
The fix
* text=auto eol=lf, binaries declared explicitly so their bytes are never inspected, and .bat / .cmd kept at CRLF for cmd.exe.
FerrLabs/ia already carries exactly this rule, with the same reasoning in its comment, so this aligns the rest of the org with an existing precedent rather than inventing one.
Scope
New file (17): Benchmarks, Changelog, Docker-Runners, FerrFleet-Cloud, FerrFlow-Cloud, FerrGames-Discord, FerrGrowth-Cloud, FerrLabs-Cloud, .github, FerrLens-Cloud, FerrTrack-Cloud, FerrVault-Cloud, Infra, Kit, MCP, Status, UI.
Extend an existing partial file (3): FerrFlow, Fixtures and FerrVault (operator) each declare .githooks/* or *.sh only, and so carry the same problem for everything else.
Already correct (1): ia.
FerrGames-Cloud landed first, as FerrLabs/FerrGames-Cloud#1050.
Note for contributors
The first checkout after each merge rewrites line endings across that working tree once. It is local churn and changes no content.
Tracking issue for a one-line-per-repo fix. Referenced from the PRs rather than duplicated as twenty near-identical issues.
The problem
Most repos in the org have no
.gitattributes. Withcore.autocrlfenabled, a Windows checkout gets CRLF in the working tree while every formatter in the toolchain (prettier, rustfmt, gofmt) writes LF. The result is a permanent, meaningless diff between what is on disk and what the tools produce.Measured on FerrGames-Cloud: 19 files failed
prettier --checkand runningprettier --writeover them produced an emptygit diff. Not one had a real formatting problem. The consequence is that nobody trusts the check, so nobody runs it, so real drift accumulates unnoticed and no formatting gate can be added to CI.What is actually stored
Nothing needs rewriting. Across all 19 checkouts surveyed, zero text files are stored with CRLF in the index; git already normalises on commit. This is purely about what a checkout puts on disk, which is why each fix is a single new file and
git add --renormalize .stages nothing.The fix
* text=auto eol=lf, binaries declared explicitly so their bytes are never inspected, and.bat/.cmdkept at CRLF for cmd.exe.FerrLabs/iaalready carries exactly this rule, with the same reasoning in its comment, so this aligns the rest of the org with an existing precedent rather than inventing one.Scope
New file (17): Benchmarks, Changelog, Docker-Runners, FerrFleet-Cloud, FerrFlow-Cloud, FerrGames-Discord, FerrGrowth-Cloud, FerrLabs-Cloud, .github, FerrLens-Cloud, FerrTrack-Cloud, FerrVault-Cloud, Infra, Kit, MCP, Status, UI.
Extend an existing partial file (3): FerrFlow, Fixtures and FerrVault (operator) each declare
.githooks/*or*.shonly, and so carry the same problem for everything else.Already correct (1): ia.
FerrGames-Cloud landed first, as FerrLabs/FerrGames-Cloud#1050.
Note for contributors
The first checkout after each merge rewrites line endings across that working tree once. It is local churn and changes no content.