crates/mimir-ingest/Cargo.toml
[package]
name = "mimir-ingest"
version = "0.1.0"
edition = "2024"
rust-version = "1.92"
description = "Mímir v2 consumer: a repo's first-parent git history as the change log (Debezium shape), written as append-only code-graph change events into skade with one atomic multi-table commit per (repo, sha)."
# Not published until the Mímir v2 branch lands (decision D7): the crates
# move together and `mimir-ingest` depends on the unpublished `mimir-binary`.
publish = false
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/nornir"
keywords = ["git", "iceberg", "cdc", "code-graph"]
categories = ["development-tools"]
[dependencies]
anyhow = "1"
# Payload hash per row: arrow-row gives a canonical byte encoding of any row of
# any Arrow schema (nested types included), blake3 hashes it. Same arrow-59
# family skade rides, so the RecordBatch types unify.
arrow-row = "59"
arrow-select = "59"
arrow-ord = "59"
blake3 = "1"
# The open set's tables: keys kept as interned part ids in a `HashTable`
# whose hasher reads them out of one arena per crate (`atoms`, `RepoOpen`).
hashbrown = "0.16"
# The fold's per-row identity hash (in-process map key only, never stored):
# xxh3-128 over one reused buffer — blake3 per row was most of a fold.
twox-hash = { version = "2", default-features = false, features = ["xxhash3_128", "std"] }
# The payload contract: code_nodes / code_edges Arrow schemas (lane 3).
mimir-schema = { version = "0.1.0", path = "../mimir-schema" }
# The binary layer (`--with-binary`): one linked artifact → the binary
# stream's rows on the source monikers (lane 9).
mimir-binary = { version = "0.1.0", path = "../mimir-binary" }
# Reads the driver's per-crate `.arrow` IPC files.
arrow-ipc = "59"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# First-parent rev-walk + tree diff vs first parent (the git_heat shape).
gix = "0.90"
# detach_head_and_checkout / clone_or_fetch: the one worktree writer.
nornir-git = { version = "0.2.0", path = "../../../edda/crates/nornir-git" }
# The log: embedded single-file ACID Iceberg catalog with atomic multi-table
# commits (`ingest_multi` -> `RedbCatalog::atomic_release_raw`).
skade = { version = "0.7.0", path = "../../../skade/skade", default-features = false }
# rt-multi-thread: the log owns the lake's runtime (see `EventLog`).
tokio = { version = "1", features = ["rt", "rt-multi-thread", "time"] }
[dev-dependencies]
tempfile = "3"
tokio = { version = "1", features = ["rt", "macros"] }