LimniFS core reader: manifest header + section parsers, plus the
drop-store primitives (slab header, drop record, slab index).
Source of truth: limnifs/spec §3 (drop store), §5 (manifest
sections), and the bit-level files under bit-level/.
Architecture: every parser takes a [cursor::ManifestCursor] and
returns the parsed value plus the cursor advanced past the section.
Bounds checks live in one place (the cursor); each parser focuses
on the structural invariants of its own section. Adding a new
section is a new module + a new parser function — no edits to
existing parsers (OCP).
Module map
| Module | Owns |
|---|---|
[cursor] |
[ManifestCursor] — bounded reader over &[u8] |
[error] |
[CoreError] |
[header] |
[ManifestHeader] + [parse_manifest_header] |
[feature_flags] |
[FeatureFlag], [FeatureFlags] + [parse_feature_flags_section] |
[metadata_reference] |
[MetadataReference] + [parse_metadata_reference] |
[metadata] |
[MetadataBlob] + [parse_metadata_blob] |
[inode] |
[Inode], [ContentHandle] + [parse_inode] |
[directory_node] |
[DirectoryNode], [DirEntry] + [parse_directory_node] |
[slab_index] |
[SlabIndex], [SlabIndexEntry] + [parse_slab_index] |
[history] |
[HistoryEntry], [History] + [parse_history] |
[merkle] |
[SectionHashes], [compute_merkle_root] |
[slab] |
[SlabHeader] + [parse_slab_header] |
[slab_reader] |
[SlabView] + [parse_slab] — locate and read drop plaintexts |
[drop_record] |
[DropRecord] + [parse_drop_record] |
[locator] |
[LocatorEntry] + [parse_locator_entry] |