docs(#83): map the archive VFS backend slice onto the FileSystem seam - #453
Merged
Conversation
Records what the next slice implements, now that both pieces it needs exist (archive_reader_cc for members, member_path_cc for the spelling), so it starts from a mapping rather than re-deriving one: - ReadDir must accept both the container's own path and a member path, and MUST synthesize implicit parent directories - tar streams frequently omit explicit directory entries, so a walk would otherwise find nothing. - Stat resolves members only; the container keeps its real-filesystem identity. - read_only = true plus Source::kArchiveMember on every member is what makes -delete and the exec family REFUSE members rather than silently skip them. - Remove refuses, Access is read/execute from stored mode bits, ReadLink returns link_target, FsType is "archive", IsCaseSensitive is true. - ReadContent is the one gap: the reader lists but does not extract, so that slice returns Unimplemented (test-pinned) and the next adds ReadMemberOfFile. Content predicates light up then; the ordering is deliberate. - Notes that the walk supplies SplitMemberPath's container oracle for free, since descending it already knows which path is an openable archive.
helly25
enabled auto-merge (squash)
August 10, 2026 23:37
helly25
disabled auto-merge
August 11, 2026 00:14
helly25
enabled auto-merge (squash)
August 11, 2026 00:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Records what the next slice has to implement, now that both pieces it needs exist (
archive_reader_ccfor members,member_path_ccfor the spelling), so it starts from a mapping rather than re-deriving one. The seam has nine methods, so the slice is bounded.Points that are decisions rather than details:
ReadDirmust synthesize implicit parent directories. Tar streams frequently omit explicit directory entries, so without this a walk finds nothing.Statresolves members only - the container keeps its real-filesystem identity (the dual-identity rule already recorded), so only member paths resolve through the backend.read_only = true+Source::kArchiveMemberon every member is what makes-deleteand the exec family REFUSE members instead of silently skipping them.Removerefuses (never silent success),Accessis read/execute from the stored mode bits,ReadLinkreturnslink_target,FsTypeis"archive",IsCaseSensitiveis true.ReadContentis the one gap: the reader lists members but does not extract data, so that slice returnsUnimplemented(test-pinned) and the following one addsReadMemberOfFile. Content predicates (-grep,-content,{hash}) light up then - deliberate ordering, not an oversight.SplitMemberPath's container oracle for free: descending, it already knows which path is an openable archive.Docs only.