# Limitations

Current, intentional constraints in `timefs`:

- It is strictly read-only. Every mutating filesystem operation returns `EROFS`.
- Linux is the only supported platform today. macOS support depends on macFUSE and is not shipped yet.
- Empty directories never appear because Git cannot store them.
- Git LFS serves pointer files by default. `--lfs` only uses objects already present under `.git/lfs/objects/`; it never fetches over the network.
- Submodules default to placeholder directories containing `.gitlink`. `--submodules recurse` is best-effort and only works when a local checkout is available.
- Shallow clones cannot resolve history they do not contain. Missing ancestors return `ENOENT` and log the shallow-clone cause.
- `history/<path>/` follows renames where Git can detect them, but rename detection is heuristic and depends on repository history shape.
- `--ref-snapshot` freezes moving refs at mount time. Explicit commit-hash paths under `commits/` still resolve live because they are content-addressed.
- Corrupt objects are isolated to `EIO` on the affected node. `timefs` keeps the mount alive instead of attempting repair.
