Skip to content

Directory Storage

A directory maps validated names to three kinds of entry:

Entry Stored information Retaining link?
File Blob ID, byte size, executable bit Yes, to the blob
Subdirectory Directory ID and recursive entry count Yes, to the child directory
Symlink Validated target stored inline No

The encoding fixes entry order and field representation. Equal directory contents therefore produce the same DirectoryId, which is the BLAKE3 digest of the canonical payload. Timestamps, ownership, ACLs, and extended attributes are not part of that identity.

A directory is an ordinary casita.directory.v1 object. Its format verifier checks the payload, key, and exact child links. Closure verification also checks child relationships, including the declared file sizes and recursive counts. A missing or inconsistent child prevents the directory graph from being rooted as complete.

Directories and their children form a Merkle graph. A directory’s closure is the directory plus every reachable subdirectory and file blob. Roots retain that closure, sync copies it, and collection keeps it while the root or another hold is live.

See Filesystem Imports for capture behavior, Blob Storage for file bytes, and Sync for transfers.