<!-- nornir:class: unsorted -->
# skade-katalog — crate card
## Reverse-engineered (from source — verify, don't trust the name)
- **One-line pitch:** A pure-Rust, embedded, single-file ACID Apache Iceberg catalog backed by redb (implements `iceberg::Catalog`).
- **Does:** Implements the `iceberg::Catalog` trait against one `.redb` file that holds all catalog metadata (namespaces, properties, table-pointer rows); table data/metadata blobs live in whatever `FileIO`/storage factory is supplied (local fs, S3, …). Key public types: `RedbCatalog`, `RedbCatalogBuilder`, `RedbCatalogError`, plus `RedbCatalog::atomic_release` for committing N `TableCommit`s atomically in one redb write transaction. Caches metadata/pointers (moka, arc-swap, imbl, foldhash L1 mirror) and keeps a static search-tree (znippy-zoomies STree64) snapshot-id index.
- **Key deps:** `iceberg` (vendored arrow-58 fork `iceberg-arrow58`), `redb` (storage engine), `moka`/`arc-swap`/`imbl`/`foldhash` (caches), `znippy-zoomies` (STree64 snapshot index), `async-trait`, `tokio` (sync/rt), `serde`/`serde_json`, `thiserror`. Dev/test: `nornir-testmatrix` (functional-status emitter, `testmatrix` feature passthrough).
- **Shape:** lib only (~11 modules: catalog, store, static_index, atomic, builder, meta_cache/pointer_cache/table_cache, keys, error). catalog.rs and store.rs are the heavy modules (~38K/25K). Roots its own workspace pulling the vendored iceberg-arrow58 forks as members.
- **Observed role in the workspace:** The catalog layer under `skade` (the writer/reader/SQL crate depends on it via `path`+`version`) and driven by `skade-katalog-bench`. Published to crates.io as `skade-katalog`; the canonical publisher of the `iceberg-arrow58` fork names.
## Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: