google-deepmind / google-deepmind/deepmind-research

Case-Insensitive Filesystem Collision on macOS: Clause.rkt vs clause.rkt in satore/

Open
#663 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.