You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Possible host commit with a file and a directory at the same path when a protected file is missing from disk (unreproduced; flagged reviewing #276) #278
Flagged by the independent reviewer of #276; predates it and was NOT reproduced. When a protected file is missing from disk during commit (e.g. a workspace or checkout made without a key, or a protected path skipped as absent) a host commit can end up with a file secret and a directory secret/ at the same path. Needs: a reproduction (protected path present as a file in one side/tree and a directory in the other with the protected path carried as absent), then a guard in snapshot assembly (snapshot_files, the carry of absent protected paths) that refuses or resolves the file/directory collision before writing the tree; tests for ws harvest, merge completion and plain commit.
Reproduced, not just defensive: commit, merge completion and ws harvest all produced a snapshot with a file and a directory at one path (absent protected file, or out-of-sparse file, plus a directory created at that path). ws refresh and sc work share the path. Fixed in #280 by refusing in the single tree builder (FileDirCollision naming both paths, nothing written, no ref moved). Tests in crates/repo/src/file_dir_collision.rs.
Activity
tonibergholm-codento commentedon Oct 21, 2026
Reproduced, not just defensive: commit, merge completion and ws harvest all produced a snapshot with a file and a directory at one path (absent protected file, or out-of-sparse file, plus a directory created at that path). ws refresh and sc work share the path. Fixed in #280 by refusing in the single tree builder (FileDirCollision naming both paths, nothing written, no ref moved). Tests in crates/repo/src/file_dir_collision.rs.
fix(repo): run the file/directory collision check in the private-bran…
fix(vfs): catch a built file and a carried entry at the same path; as…
docs: name both tree builders and the publish limit (#278)
fix(repo,vfs): refuse a snapshot that holds a file and a directory at…
docs: final sync with the implementation (pass 3) (#284)