google-deepmind / google-deepmind/deepmind-research
Case-Insensitive Filesystem Collision on macOS: Clause.rkt vs clause.rkt in satore/
- Dominant language
- Jupyter Notebook
- Stars
- 15.2k
- Forks
- 2.9k
- PR merge metrics
- No merged PRs in 30d
Description
Hi maintainers,
I encountered a reproducible filesystem-level issue when cloning the repository on macOS (default APFS, case-insensitive).
During `git clone`, Git reports filename collisions in the `satore/` project:
'satore/Clause.rkt'
'satore/clause.rkt'
'satore/tests/Clause.rkt'
'satore/tests/clause.rkt'
Because macOS cannot distinguish between files that differ only by case, only one file from each pair is checked out. This results in:
• Git marking the files as “modified” immediately after clone
• Loss of one of the file variants (actual data loss locally)
• Prevents clean worktrees and contributes to confusion for contributors using macOS
• Makes the `satore` project effectively unusable on macOS without workarounds
This issue will happen for all macOS users using the default filesystem.
### Proposed Fixes (I can implement one if preferred):
1. **Rename files in `satore/` to avoid case collisions**
Example: rename `Clause.rkt` → `Clause_upper.rkt` or similar.
Update require statements in the Racket code accordingly.
2. **Move the satore project into a submodule or separate repository**
This isolates the conflicting filesystem and avoids breaking macOS clones of the main repo.
3. **Document macOS-specific workaround**
Add a section in README noting:
- macOS users must clone inside a case-sensitive disk image, OR
- Use `git update-index --assume-unchanged …` to ignore the colliding files
4. **Provide platform-agnostic file structure**
Standardize filenames to lowercase across the project.
---
Please let me know which fix direction the maintainers prefer.
I am happy to submit a PR with the full solution.
Thanks!
Contributor guide
Assessment
This issue has not been assessed yet.