30746a94f4
contributors/emails/ uses the email as the FILENAME, so two mappings differing only in case are the same file on Windows and on default macOS. The tree has such a pair today: contributors/emails/agent@Agents-Mac-mini.local -> skip-agent contributors/emails/agent@agents-Mac-mini.local -> momomojo git writes one and then reports the other as modified in a FRESH clone, forever. The repo cannot be checked out clean on those platforms, which breaks any tool that gates on a clean tree -- our own Windows Desktop rebuild refuses with "fresh clone is NOT clean" and never gets to build. add_contributor() now refuses a mapping that case-collides with an existing one, for the same reason it already refuses a conflicting login: the tool exists so a typo cannot silently reassign commits, and a collision does exactly that on half the platforms it lands on. Two tests: the guard, and a directory-wide check that no NEW collision appears. The existing pair is pinned in KNOWN_CASE_CONFLICTS rather than resolved here -- the two files name DIFFERENT logins, so picking one reassigns a contributor commit history, and that is a maintainer call. Please resolve it; the pin keeps the breakage visible and stops it spreading meanwhile. Verified: pytest tests/scripts/test_contributor_map.py -- 9 passed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>