Relationships
#3939 v3 read model: guard against aliased key spellings on case-insensitive filesystems, without slowing replay
Opened by stack72 · 10/25/2026· Shipped 10/26/2026
Background
swamp-club#3915 added, then reverted, a read-model guard against aliased spellings. On a case- or normalisation-insensitive filesystem (APFS, NTFS), a put or tombstone of a key nothing owns can reach another key's file, for example VPC/1/raw reaching vpc/1/raw. The guard skipped such writes, but it changed solo behaviour, and it made a full replay list every ancestor directory for every key. That cost recovery time on large repos, including on Linux, where the problem can never happen.
After #3915, data and output keys bind to their own behavior's id, and definition writes need admin. So an aliased spelling can only reach the caller's own aggregate or an admin-only path.
What to build
- Probe once per read model whether the cache filesystem folds case or normalisation, and skip the guard entirely when it doesn't.
- Where it does, cache directory listings for each apply page, so the cost grows with the number of directories, not keys times directories.
- Decide how solo checkouts should treat data names that differ only in case, and whether to warn when a spelling is skipped.
- Benchmark a full replay of a large v3 cache, before and after.
Done when
- A full replay is no slower on Linux.
- On macOS it's within a measured bound.
- Tests cover the put and tombstone alias cases.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.