Batch #1868 merged MD5State (fn_20414..fn_20417; fn_20416 byte-identical) as
Source/Utility/Md5.cpp and registered it in data/compile.json, but the server
repo had core.ignorecase=true: `git add Source/Utility/Md5.cpp` resolved to the
tracked Source/Utility/MD5.cpp and the new file never reached the commit. It
stayed in the server working tree, untracked, and main referenced a unit that
did not exist.
Md5.cpp and MD5.cpp cannot both live on a case-insensitive filesystem, so the
unit is committed under the distinct name of its header, Md5State.cpp, and
data/compile.json follows. The server now forces core.ignorecase=false, checks
that every written file reaches the index under its own path before
committing, and rejects submissions whose paths differ from main (or from each
other) only by letter case.