forensic-vfs
The KNOWLEDGE-leaf contract crate of the universal forensic VFS. It defines one
read-only, positioned-read byte edge — ImageSource — that every disk, container,
and filesystem reader in the fleet implements, so a whole evidence stack composes
as a single Arc<dyn ImageSource> that many workers read in parallel and no code
path can write.
What it defines
ImageSource—read_at(&self, offset, buf), no cursor, no write method. Parallel-safe by construction; read-only in the type system.- Adapters —
FileSource(positioned OS reads),SubRange(a byte window that is itself anImageSource),SourceCursor(aRead + Seekbridge). - The five layer-open traits —
ContainerOpen,ArchiveOpen,VolumeSystemOpen,EncryptionOpen,FileSystemOpen, each with the sameprobe()(recognize) +open()(peel) shape. A mountedFileSystemexposes&selfnavigation with ownedSendstreams;FileId(filesystem-specific identity),FsMeta(per-timestamp source/resolution provenance and the name/metadata allocation split), andFsKind(open newtype). Locator— the recursive locator, with a lossless canonical URI and a lossy human form; credentials stay out of the serialized address.Openers— the compiled-in probe dispatch table the engine fills; the siblingforensic-vfs-resolverwalks it viaSourceOpento peel a whole stack.
Design properties
- Read-only by construction. The byte-source trait has no write method; immutability is a type property, not a documented promise.
&selfpositioned-read parallel core. One shared stack, lock-free hot path.- True leaf. Base dependencies are
thiserror(+ optionalserde); the forensicnomicon findings bridge is a non-default feature, so a bare reader inherits neither. - Panic-free.
unsafe_code = forbid; bounded readers; fuzzed; 100% covered.
Where it fits
forensic-vfs is the contract leaf of the universal forensic VFS. See
Architecture for the layered model and the crate topology, and
Validation for the evidence behind the correctness claims.