Wire types and durable-format codecs for LoonFS.
Everything that crosses a process or storage boundary is defined here:
validated identifier and path types at the crate root, the versioned HTTP
protocol shapes in [v0], and the durable storage formats in [wire]
(WAL segments, metadata SSTs, namespace manifests, and control objects).
Other LoonFS crates depend on this one for vocabulary; it depends on none
of them.
One module here is deliberately not a boundary format: [options] holds
the per-operation argument structs that the embedded runtime and the HTTP
client both expose. They parameterize the same semantic operations on both
surfaces, so this crate — the shared vocabulary — owns the single
definition rather than each surface keeping its own copy to drift.
The commit_identity module contains shared logic rather than wire types.
It computes durable mutation fingerprints and verifies retried PUT requests
against existing commit receipts. Keeping this logic here ensures that the
embedded runtime and HTTP client apply the same identity and content checks.
Module rule: v0 HTTP shapes live in [v0]; the crate root keeps the
ids/paths/errors/wire-format modules and re-exports the common v0
surface as a curated explicit list below.