Skip to content
LimniFS

.spec · reference · §9–§14

Registries.

Every variation point in LimniFS is a registry, never a match arm in core code. This is the OCP backbone: adding a new algorithm, locator, classifier, or feature is a row in a data file, not a code change.

REGISTRIES/*.TOML[[aead]]id = 0x05name = “ascon-128”one row peralgorithmcodegenBINDINGS (RUST)pub enum Aead { XChaCha20Poly1305, // … Ascon128, // ← NEW}no consumercode changeuseCORE RUNTIMEunchangedreaderwriterconformancezero code edit

Add a row → regenerate → done. OCP enforced mechanically.

§9 — Registry format

Every registry is a single TOML data file under registries/<name>.toml. Each row has: id (numeric, stable, never reused), mnemonic (kebab-case string), reference (RFC/paper), status (standard / experimental / deprecated), params (algorithm-specific), and a human description.

§10 — AEAD registry

Authenticated encryption algorithms. 0x01 XChaCha20-Poly1305 is mandatory baseline.

IDAlgorithmStatus
0x00(none)plaintext — no AEAD
0x01XChaCha20-Poly1305standard (mandatory)
0x02AES-128-OCBstandard
0x03AES-256-GCMstandard
0x04Ascon-128astandard (embedded)

§11 — Codec registry

Compression / transformation codecs. 0x00 store and 0x01 lz4 are mandatory for v0.1 conformance.

IDCodecStatus
0x00storestandard (mandatory) — identity, no transform
0x01lz4standard (mandatory)
0x02zstdstandard
0x03lzmaexperimental
0x04brotliexperimental

§12 — Locator scheme registry

Where slabs live. file: is mandatory for v0.1 conformance; others are optional.

SchemeStatusNotes
file:standard (mandatory)local filesystem; no range streaming
http: / https:standardrange requests
s3:standardmultipart + conditional PUT
ipfs:standardCAR interop; multihash-compatible
limni-p2p:experimentalpeer-to-peer

§13 — Classifier class registry (Seine)

Drops are classified for codec selection. 0x00 binary is the fallback.

IDClassDetection rule
0x00binary (fallback)entropy8 < 7.99 AND not sparse
0x01already-compressedmagic ∈ {gzip, xz, zstd, …} OR entropy8 ≥ 7.99
0x02sparsenul_ratio ≥ 0.99 over full drop
0x03text/codeprintable_ratio ≥ 0.95 AND nul_ratio ≈ 0
0x04mediamagic ∈ {wav, flac, raw image, …}

§14 — Feature-flag registry

Negotiates post-version capabilities. Required-flag-unknown ⇒ UnsupportedFeature(flag); optional-flag-unknown ⇒ ignore. ID ranges: 0x0000 reserved; 0x0001–0x00FF standard; 0x0100–0x01FF experimental; 0x0200–0xFFFF reserved.

FlagIDStatusReference
EC0x0001standard / optional§16
DMS0x0002standard / optional§15
file: locator0x0010standard / optional§12
http: / https: locator0x0011 / 0x0012standard / optional§12
s3: / ipfs: locator0x0013 / 0x0014standard / optional§12
zstd / lzma / brotli codec0x0020 / 0x0021 / 0x0022standard / experimental / experimental§11
solid-blocks-v20x0100experimental / optional§20.1 (deferred)
rename-ops0x0101experimental / optional§20.2 (deferred)
dms-time-lock0x0102experimental / optional§21.2 (deferred)

.worked-example

Adding a new AEAD “Ascon-128” with id 0x05 requires only: one new row in registries/aead.toml; one regenerated Rust binding in limnifs-format. The 05-crypto crate’s registry module picks up the new algorithm at link time. Zero consumer code changes.