Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/nornir

.nornir/mimir-datastructure-manual.md

Mímir — the nornir warehouse data-structure manual

72 Apache-Iceberg tables · 722 columns · 10 domains. Every table and every column below is enumerated directly from the spec::Schema source of truth (nornir/src/warehouse/iceberg_schema.rs, plus the three release tables re-exported from the nornir-release-ledger edda leaf). Nothing here is hand-transcribed or guessed.

Mímir is the well of memory: nornir writes every fact it learns about the nordisk codebase — the dependency graph, the resolved call graph, benchmarks, coverage, releases, binaries, embeddings, the fleet — into one columnar warehouse so that any question is a read, never a re-computation. dwarves (and korp, and the MCP agents) query it through the stable function surface documented in Part 2.

Contents

  1. The data structure — 10 domains, every table, every column
  2. The functions — what dwarves asks Mímir
  3. The ER diagram

The ER diagram

The full detailed entity-relationship map (skade dark-board style, all 72 tables clustered by the 10 domains, columns typed, join-key arrows bundled) lives beside this manual:

If your viewer does not inline SVG, open assets/mimir-schema.svg directly (2354×4841, self-contained).

Reading the tables

Domain overview

# Domain Tables Columns What it remembers
D1 Knowledge & Code Graph 9 88 the code graph — public items, call edges, resolved SCIP occurrences, cfg gates, the Cargo.toml feature-activation graph, tests, git heat
D2 Vector / Semantic Search 3 26 semantic search — deduped embeddings, index identity, per-occurrence manifest
D3 Dependency Graph 4 31 the cargo/multi-ecosystem dependency graph and its audits
D4 Release & Publish Pipeline 14 156 the whole release + crates.io publish pipeline, reversibly
D5 Build & Binary Provenance 6 88 build provenance and compiled-binary analysis (hardening, sizes, diffs)
D6 Test · Bench · Coverage 10 86 tests, benchmarks, coverage and the completeness gate
D7 UX Journeys & Snapshots 3 34 user-journey capture/replay, render-oracle frames, the viz action trail
D8 Security & SBOM 2 12 cached vulnerability findings and the SBOM
D9 Time-Machine Artifacts 12 91 the Urðr time-machine: immutable artifact snapshots + rendered docs + arch wiring
D10 Fleet Ops & Infra 9 110 the fleet — idea funnel, populate outcomes, airgap, MCP/agent telemetry, Yggdrasil infra
Total 72 722

Part 1 — the data structure

D1 · Knowledge & Code Graph

8 tables · 78 columns. The code graph — public items, call edges, resolved scip occurrences, cfg gates, tests, git heat.

symbol_facts (13 cols · partitioned by repo)

One row per public item found by the syn walker (fn/struct/enum/trait/impl/…).

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 crate_name string ●
5 module_path string ●
6 item_kind string ●
7 item_name string ●
8 visibility string ●
9 file string ●
10 line int (i32) ●
11 doc_lines int (i32) ●
12 signature string ○
13 language string ○
call_edges (10 cols · partitioned by repo)

Caller→callee identifier edges from syn ItemFn bodies (syntactic).

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 crate_name string ●
5 caller_path string ●
6 callee_ident string ●
7 call_kind string ●
8 file string ●
9 line int (i32) ●
10 language string ○
scip_occurrences (15 cols · partitioned by repo)

IDE-grade RESOLVED defs+refs from rust-analyzer SCIP, SHA-historized.

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 git_sha string ● ◆
5 symbol string ●
6 role string ●
7 is_definition boolean ●
8 display_name string ●
9 kind string ●
10 file string ●
11 start_line int (i32) ●
12 start_col int (i32) ●
13 enc_start_line int (i32) ●
14 enc_end_line int (i32) ●
15 language string ○
feature_gate_facts (9 cols · partitioned by repo)

One row per #[cfg(...)] attribute on a discovered item.

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 crate_name string ●
5 module_path string ●
6 item_name string ●
7 cfg_expr string ●
8 file string ●
9 line int (i32) ●
feature_dep_edges (10 cols · partitioned by repo)

The FEATURE ACTIVATION graph parsed out of Cargo.toml — one row per "feature X enables Y" edge. The manifest side of the feature story (feature_gate_facts is the source side). cargo metadata cannot supply this: its features map is already flattened and resolved, so the conditional structure — which feature would have to be switched off to drop a dep, and above all the weak pkg?/feat form — is destroyed before cargo hands the data over.

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ● part
4 crate_name string ● ◆
5 feature string ● ◆
6 enables string ● ◆
7 kind string ●
8 optional boolean ●
9 target_cfg string ○
10 dep_kind string ●
test_inventory (10 cols · partitioned by repo)

Every #[test]/#[tokio::test]/… fn found by the build-free scan.

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 crate_name string ●
5 module_path string ●
6 test_name string ●
7 file string ●
8 line int (i32) ●
9 is_heavy boolean ●
10 is_async boolean ●
git_heat_facts (9 cols · partitioned by repo)

Per-file git activity heat (commit/author counts, recency).

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 file string ●
5 commits_total long (i64) ●
6 commits_30d long (i64) ●
7 commits_90d long (i64) ●
8 authors_total long (i64) ●
9 last_commit_ts_micros timestamptz ●
warehouse_access_edges (8 cols · unpartitioned)

Static fn→warehouse-table read/write edges (feeds the arch graph).

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 caller_fn string ●
4 crate_name string ●
5 table string ●
6 access string ●
7 file string ●
8 line int (i32) ●
knowledge_scans (4 cols · partitioned by repo)

Ledger of (repo,git_sha) already knowledge-scanned — re-scan idempotency.

# col type req key
1 repo string ● ◆
2 git_sha string ● ◆
3 snapshot_id string ● ◆
4 scanned_at_micros timestamptz ●

D2 · Vector / Semantic Search

3 tables · 26 columns. Semantic search — deduped embeddings, index identity, per-occurrence manifest.

embedding_snapshots (11 cols · unpartitioned)

Identity of one semantic-index build (repo,sha,model,chunker,fileset).

# col type req key
1 snapshot_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ●
5 branch string ●
6 model_profile string ●
7 chunker_hash string ●
8 fileset_hash string ●
9 complete boolean ●
10 row_count int (i32) ●
11 ts_micros timestamptz ●
embedding_manifest (7 cols · unpartitioned)

Per-occurrence rows: which content_hash sits at which file/span.

# col type req key
1 snapshot_id string ● ◆
2 ordinal int (i32) ●
3 content_hash string ● ◆
4 model_profile string ●
5 file string ●
6 start_line int (i32) ●
7 end_line int (i32) ●
embeddings (8 cols · unpartitioned)

Content-addressed, deduped vector store (native Arrow list).

# col type req key
1 content_hash string ● ◆
2 model_profile string ● ◆
3 dim int (i32) ●
4 vector list<float> ●
5 normalized boolean ●
6 vector_sha256 string ●
7 language string ○
8 model_id string ○

D3 · Dependency Graph

4 tables · 31 columns. The cargo/multi-ecosystem dependency graph and its audits.

dep_graph_edges (8 cols · unpartitioned)

Snapshot of cross-repo dependency edges (from_repo→to_repo via crate).

# col type req key
1 snapshot_id string ● ◆
2 workspace_name string ●
3 ts_micros timestamptz ●
4 from_repo string ●
5 to_repo string ●
6 via_crate string ●
7 kind string ○
8 ecosystem string ○
resolved_features (8 cols · unpartitioned)

Resolved feature set per workspace member, long/narrow.

# col type req key
1 dep_graph_snapshot_id string ● ◆
2 workspace_name string ●
3 member_repo string ●
4 member_crate string ●
5 dep_crate string ●
6 dep_version string ●
7 feature string ●
8 source string ●
links_declarations (6 cols · unpartitioned)

links = manifest declarations in a dep-graph snapshot.

# col type req key
1 dep_graph_snapshot_id string ● ◆
2 repo string ●
3 crate_name string ●
4 version string ●
5 links_value string ●
6 manifest_path string ●
path_dep_audits (9 cols · unpartitioned)

Per path-dep audit of version= presence at release time.

# col type req key
1 release_id string ● ◆
2 repo string ●
3 manifest_path string ●
4 dep_name string ●
5 dep_path string ●
6 has_version boolean ●
7 version_req string ○
8 ok boolean ●
9 ts_micros timestamptz ●

D4 · Release & Publish Pipeline

14 tables · 156 columns. The whole release + crates.io publish pipeline, reversibly.

release_lineage (21 cols · unpartitioned)

Per-(release,repo) outcome ledger — the release's headline record.

# col type req key
1 release_id string ● ◆
2 workspace_name string ●
3 ts_micros timestamptz ●
4 dep_graph_snapshot_id string ●
5 build_order_idx int (i32) ●
6 repo string ●
7 git_sha string ●
8 git_branch string ●
9 git_dirty boolean ●
10 gate_status string ●
11 tests_passed int (i32) ●
12 tests_failed int (i32) ●
13 dry_run boolean ●
14 published_versions_csv string ●
15 tantivy_snapshot_id string ○
16 dwarf_snapshot_id string ○
17 gimli_snapshot_id string ○
18 git_tag string ○
19 git_tag_matches_published boolean ○
20 rustdoc_json_snapshot_id string ○
21 patch_lines_stripped int (i32) ○
release_events (11 cols · unpartitioned)

Row-level DAG of a release run (one row per component×op×phase).

# col type req key
1 run_id string ● ◆
2 seq long (i64) ●
3 ts_micros timestamptz ●
4 component string ●
5 repo string ●
6 op string ●
7 phase string ●
8 status string ●
9 detail string ●
10 depends_on list<string> ○
11 elapsed_ms long (i64) ○
release_changes (16 cols · unpartitioned)

Reversible release-change ledger (enough before-state to undo).

# col type req key
1 release_id string ● ◆
2 seq long (i64) ●
3 ts_micros timestamptz ●
4 kind string ●
5 repo string ●
6 change_sha string ●
7 crate_name string ○
8 old_version string ○
9 new_version string ○
10 file string ○
11 old_req_lines string ○
12 removed_block string ○
13 branch string ○
14 prev_head string ○
15 registry string ○
16 immutable boolean ○
release_commits (11 cols · unpartitioned)

Commits between prev and current release, parsed as conventional commits.

# col type req key
1 release_id string ● ◆
2 repo string ●
3 git_sha string ●
4 parent_sha string ○
5 author string ●
6 ts_micros timestamptz ●
7 conventional_type string ○
8 scope string ○
9 breaking boolean ●
10 subject string ●
11 body string ○
patch_strip_events (7 cols · unpartitioned)

Per-line [patch] strip events during a release.

# col type req key
1 release_id string ● ◆
2 repo string ●
3 file string ●
4 line int (i32) ●
5 raw_line string ●
6 action string ●
7 ts_micros timestamptz ●
publish_attempts (11 cols · unpartitioned)

Per-attempt publish poll (replaces the planned sleep-20 wait).

# col type req key
1 release_id string ● ◆
2 repo string ●
3 crate_name string ●
4 version string ●
5 attempt_idx int (i32) ●
6 started_ts_micros timestamptz ●
7 index_seen_ts_micros timestamptz ○
8 wait_ms int (i32) ○
9 http_status int (i32) ○
10 outcome string ●
11 stderr_excerpt string ○
crate_metadata_checks (13 cols · unpartitioned)

Gate readme/license/repository/description presence per crate@version.

# col type req key
1 release_id string ● ◆
2 repo string ●
3 crate_name string ●
4 version string ●
5 has_readme boolean ●
6 has_license boolean ●
7 license_expr string ○
8 has_repository boolean ●
9 repository_url string ○
10 has_description boolean ●
11 description_len int (i32) ○
12 ok boolean ●
13 ts_micros timestamptz ●
crate_tarball_stats (12 cols · unpartitioned)

.crate tarball size + largest-file warning per crate@version.

# col type req key
1 release_id string ● ◆
2 repo string ●
3 crate_name string ●
4 version string ●
5 tarball_bytes long (i64) ●
6 file_count int (i32) ●
7 largest_file string ○
8 largest_file_bytes long (i64) ○
9 p50_bytes_baseline long (i64) ○
10 exceeds_threshold boolean ●
11 threshold_bytes long (i64) ●
12 ts_micros timestamptz ●
registry_mirrors (13 cols · unpartitioned)

Mirror of a crates.io publish to additional registries.

# col type req key
1 mirror_id string ●
2 release_id string ● ◆
3 repo string ●
4 crate_name string ●
5 version string ●
6 source_registry string ●
7 target_registry string ●
8 started_ts timestamptz ●
9 completed_ts timestamptz ○
10 bytes_copied long (i64) ○
11 sha256 string ○
12 outcome string ●
13 error string ○
version_bump_plans (5 cols · unpartitioned)

Coordinated cross-workspace version-bump plan header.

# col type req key
1 plan_id string ● ◆
2 ts_micros timestamptz ●
3 dep_graph_snapshot_id string ●
4 scope string ●
5 requested_by string ○
version_bump_targets (8 cols · unpartitioned)

Per-crate rows of a version-bump plan (from→to).

# col type req key
1 plan_id string ● ◆
2 repo string ●
3 crate_name string ●
4 from_version string ●
5 to_version string ●
6 reason string ●
7 applied boolean ●
8 applied_release_id string ○
yank_events (11 cols · unpartitioned)

Cascade yank/un-yank in dep order (self-referential cascade root).

# col type req key
1 event_id string ● ◆
2 ts_micros timestamptz ●
3 dep_graph_snapshot_id string ● ◆
4 repo string ●
5 crate_name string ●
6 version string ●
7 action string ●
8 reason string ○
9 requested_by string ○
10 cascade_root_event_id string ○
11 http_status int (i32) ○
semver_diffs (9 cols · unpartitioned)

rustdoc-json semver diff (added/removed/changed → suggested bump).

# col type req key
1 from_snapshot_id string ● ◆
2 to_snapshot_id string ● ◆
3 repo string ●
4 crate_name string ●
5 added_items int (i32) ●
6 removed_items int (i32) ●
7 changed_items int (i32) ●
8 suggested_bump string ●
9 ts_micros timestamptz ●
msrv_probes (8 cols · unpartitioned)

Actual MSRV via cargo +toolchain check probes.

# col type req key
1 probe_id string ● ◆
2 repo string ●
3 crate_name string ●
4 declared_rust_version string ○
5 probed_rust_version string ●
6 probe_status string ●
7 ts_micros timestamptz ●
8 ci_run_id string ○

D5 · Build & Binary Provenance

6 tables · 88 columns. Build provenance and compiled-binary analysis (hardening, sizes, diffs).

build_provenance (16 cols · partitioned by repo)

One flat row per nornir build --attest (variant, digest, host, outcome).

# col type req key
1 id string ● ◆
2 repo string ●
3 variant string ●
4 outcome string ●
5 profile string ●
6 target string ●
7 vcs_rev string ●
8 vcs_branch string ●
9 rustc string ●
10 host_cores int (i32) ●
11 host_memory_bytes long (i64) ●
12 artifact_count long (i64) ●
13 digest string ● ◆
14 built_at string ●
15 ts_micros timestamptz ●
16 record_json string ●
build_info (9 cols · unpartitioned)

Exploded per-fact build record (provenance/dep/artifact/log/metric/step).

# col type req key
1 build_id string ● ◆
2 step_id string ●
3 ts_micros long (i64) ●
4 kind string ●
5 level string ●
6 name string ●
7 value string ●
8 content_id string ● ◆
9 blob binary (blob) ○
binary_facts (25 cols · partitioned by content_sha256)

Per-artifact hardening + format/size header (checksec-class), by content_sha256.

# col type req key
1 snapshot_id string ●
2 ts_micros timestamptz ●
3 repo string ●
4 git_sha string ●
5 build_id string ●
6 content_sha256 string ● ◆
7 artifact_path string ●
8 format string ●
9 arch string ●
10 class string ●
11 total_bytes long (i64) ●
12 stripped boolean ●
13 has_debug_info boolean ●
14 pie boolean ●
15 relro string ●
16 nx boolean ●
17 stack_canary boolean ●
18 fortify boolean ●
19 rpath boolean ●
20 runpath boolean ●
21 build_id_note string ●
22 n_sections long (i64) ●
23 n_sym_defined long (i64) ●
24 n_sym_undefined long (i64) ●
25 n_dyn_deps long (i64) ●
section_sizes (11 cols · partitioned by content_sha256)

Per-(artifact,section) size row — the Bloaty section view.

# col type req key
1 snapshot_id string ●
2 ts_micros timestamptz ●
3 content_sha256 string ● ◆
4 section_name string ●
5 size_bytes long (i64) ●
6 vaddr long (i64) ●
7 alloc boolean ●
8 exec boolean ●
9 write boolean ●
10 file_offset long (i64) ●
11 kind string ●
symbol_sizes (14 cols · partitioned by content_sha256)

Per-(artifact,symbol) size — cargo-bloat/twiggy per-symbol/crate/mono view.

# col type req key
1 snapshot_id string ●
2 ts_micros timestamptz ●
3 content_sha256 string ● ◆
4 symbol_mangled string ●
5 symbol_demangled string ●
6 symbol_demangled_no_generics string ●
7 crate_name string ●
8 section string ●
9 size_bytes long (i64) ●
10 kind string ●
11 binding string ●
12 is_monomorphization boolean ●
13 source_file string ○
14 source_line int (i32) ○
artifact_diff (13 cols · partitioned by to_content_sha256)

One narrow row per change between two analysed artifacts (size waterfall).

# col type req key
1 snapshot_id string ●
2 ts_micros timestamptz ●
3 release_id string ●
4 from_content_sha256 string ● ◆
5 to_content_sha256 string ● ◆
6 repo string ●
7 kind string ●
8 name string ●
9 crate_name string ●
10 before long (i64) ●
11 after long (i64) ●
12 delta_bytes long (i64) ●
13 severity string ●

D6 · Test · Bench · Coverage

10 tables · 86 columns. Tests, benchmarks, coverage and the completeness gate.

bench_runs (7 cols · partitioned by repo)

One row per bench run (repo,version,machine,cores,ts).

# col type req key
1 run_id string ● ◆
2 repo string ●
3 ts_micros timestamptz ●
4 date string ●
5 version string ●
6 machine string ●
7 cores int (i32) ●
bench_results (4 cols · partitioned by repo)

One row per scalar bench metric of a run.

# col type req key
1 run_id string ● ◆
2 result_name string ●
3 metric_name string ●
4 metric_value double (f64) ●
bench_telemetry (11 cols · partitioned by repo)

Per-(run,bench) CPU/mem/elapsed footprint the sampler captured.

# col type req key
1 run_id string ● ◆
2 repo string ●
3 bench string ●
4 n_cores int (i32) ●
5 cpu_pct_avg double (f64) ●
6 cpu_pct_max double (f64) ●
7 cores_busy_avg double (f64) ●
8 cores_busy_max int (i32) ●
9 mem_peak_mb double (f64) ●
10 mem_pct_max double (f64) ●
11 elapsed_ms double (f64) ●
test_outcomes (10 cols · partitioned by repo)

Bench-coupled test verdicts (pass/fail/duration) + flake bookkeeping.

# col type req key
1 run_id string ● ◆
2 test_name string ●
3 passed boolean ●
4 duration_ms double (f64) ○
5 message string ○
6 source_repo string ○
7 source_crate string ○
8 attempt_idx int (i32) ○
9 retry_of_run_id string ○
10 quarantined boolean ○
test_results (10 cols · partitioned by repo)

First-class test-matrix board (one row per run×suite×test) + aspect/metric.

# col type req key
1 run_id string ● ◆
2 repo string ●
3 suite string ●
4 test_name string ●
5 status string ●
6 duration_ms double (f64) ●
7 ts_micros timestamptz ●
8 message string ●
9 aspect string ○
10 metric double (f64) ○
test_impacted_selections (6 cols · unpartitioned)

Auditable record of which tests an impact-set selection chose to run.

# col type req key
1 run_id string ● ◆
2 dep_graph_snapshot_id string ●
3 changed_repo string ●
4 selected_test_name string ●
5 reason string ●
6 ts_micros timestamptz ●
test_quarantines (8 cols · unpartitioned)

Flake decision state (quarantine window + pass-rate + reason).

# col type req key
1 test_name string ● ◆
2 repo string ●
3 quarantined_at_ts timestamptz ●
4 unquarantined_at_ts timestamptz ○
5 pass_rate_window double (f64) ●
6 sample_size int (i32) ●
7 decision_reason string ●
8 decided_by string ○
coverage (10 cols · partitioned by repo)

Source line/region coverage rollup (overall/crate/file), historized.

# col type req key
1 run_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 scope string ●
5 krate string ●
6 file string ●
7 lines long (i64) ●
8 lines_covered long (i64) ●
9 regions long (i64) ●
10 regions_covered long (i64) ●
coverage_fn (10 cols · partitioned by repo)

Per-function coverage tagged with its ui/grpc/emitter/core boundary.

# col type req key
1 run_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 name string ●
5 file string ●
6 boundary string ●
7 lines long (i64) ●
8 lines_covered long (i64) ●
9 regions long (i64) ●
10 regions_covered long (i64) ●
surface_coverage (10 cols · unpartitioned)

autonom completeness-gate verdict per surface node × mode × workspace.

# col type req key
1 run_id string ● ◆
2 ts_micros timestamptz ●
3 workspace string ●
4 surface_key string ●
5 kind string ●
6 id string ●
7 mode string ●
8 verdict string ●
9 reason string ○
10 utfallsrum_covered double (f64) ○

D7 · UX Journeys & Snapshots

3 tables · 34 columns. User-journey capture/replay, render-oracle frames, the viz action trail.

saga_events (17 cols · partitioned by session_id)

Captured user-journey nav/click/log events for record→replay robot tests.

# col type req key
1 session_id string ● ◆
2 seq long (i64) ●
3 ts_micros timestamptz ●
4 kind string ●
5 route string ●
6 component string ●
7 action string ●
8 detail string ●
9 state_json string ●
10 level string ●
11 span_id string ●
12 parent string ●
13 app_user string ●
14 app string ●
15 app_version string ●
16 git_sha string ●
17 sha string ●
ui_snapshots (10 cols · partitioned by repo)

Render-oracle reference frames (lossless WebP), SHA-deduped, git-keyed.

# col type req key
1 repo string ●
2 crate string ●
3 test_name string ●
4 theme string ●
5 webp binary (blob) ●
6 width int (i32) ●
7 height int (i32) ●
8 content_sha string ● ◆
9 git_sha string ●
10 created_at timestamptz ●
viz_actions (7 cols · partitioned by session_id)

Durable sink for the viz user-action trail (tab/click/query/rpc/error).

# col type req key
1 session_id string ● ◆
2 seq long (i64) ●
3 ts_micros timestamptz ●
4 kind string ●
5 workspace string ●
6 tab string ●
7 detail string ●

D8 · Security & SBOM

2 tables · 12 columns. Cached vulnerability findings and the sbom.

sbom_components (7 cols · partitioned by repo)

One row per resolved dependency (name,version,license) for CycloneDX SBOM.

# col type req key
1 snapshot_id string ● ◆
2 ts_micros timestamptz ●
3 repo string ●
4 name string ●
5 version string ●
6 license string ●
7 derived_from string ○
vuln_findings (5 cols · unpartitioned)

Cached OSV/RUSTSEC findings keyed by immutable crate@version.

# col type req key
1 crate string ● ◆
2 version string ● ◆
3 ids string ●
4 summary string ●
5 checked_at_micros timestamptz ●

D9 · Time-Machine Artifacts

12 tables · 91 columns. The urðr time-machine: immutable artifact snapshots + rendered docs + arch wiring.

tantivy_index_snapshots (9 cols · partitioned by repo)

Metadata of a captured Tantivy code-index snapshot.

# col type req key
1 snapshot_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ●
5 branch string ●
6 ts_micros timestamptz ●
7 schema_hash string ●
8 blob_count int (i32) ●
9 total_bytes long (i64) ●
tantivy_index_blobs (5 cols · partitioned by snapshot_id)

Raw bytes of the files inside a Tantivy index snapshot.

# col type req key
1 snapshot_id string ● ◆
2 filename string ●
3 bytes binary (blob) ●
4 byte_len int (i32) ●
5 sha256 string ●
dwarf_snapshots (9 cols · partitioned by repo)

Metadata of a captured DWARF debuginfo snapshot (Urðr time-machine stub).

# col type req key
1 snapshot_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ●
5 branch string ●
6 ts_micros timestamptz ●
7 schema_hash string ●
8 blob_count int (i32) ●
9 total_bytes long (i64) ●
dwarf_blobs (5 cols · partitioned by snapshot_id)

Raw bytes of a DWARF debuginfo snapshot.

# col type req key
1 snapshot_id string ● ◆
2 filename string ●
3 bytes binary (blob) ●
4 byte_len int (i32) ●
5 sha256 string ●
gimli_snapshots (9 cols · partitioned by repo)

Metadata of a captured gimli unwind-table snapshot (stub).

# col type req key
1 snapshot_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ●
5 branch string ●
6 ts_micros timestamptz ●
7 schema_hash string ●
8 blob_count int (i32) ●
9 total_bytes long (i64) ●
gimli_blobs (5 cols · partitioned by snapshot_id)

Raw bytes of a gimli unwind-table snapshot.

# col type req key
1 snapshot_id string ● ◆
2 filename string ●
3 bytes binary (blob) ●
4 byte_len int (i32) ●
5 sha256 string ●
rustdoc_json_snapshots (9 cols · partitioned by repo)

Metadata of a captured rustdoc-JSON snapshot (feeds semver_diffs).

# col type req key
1 snapshot_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ●
5 branch string ●
6 ts_micros timestamptz ●
7 schema_hash string ●
8 blob_count int (i32) ●
9 total_bytes long (i64) ●
rustdoc_json_blobs (5 cols · partitioned by snapshot_id)

Raw bytes of a rustdoc-JSON snapshot.

# col type req key
1 snapshot_id string ● ◆
2 filename string ●
3 bytes binary (blob) ●
4 byte_len int (i32) ●
5 sha256 string ●
docs_index_snapshots (9 cols · partitioned by repo)

Metadata of a captured docs Tantivy-index snapshot.

# col type req key
1 snapshot_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ●
5 branch string ●
6 ts_micros timestamptz ●
7 schema_hash string ●
8 blob_count int (i32) ●
9 total_bytes long (i64) ●
docs_index_blobs (5 cols · partitioned by snapshot_id)

Raw bytes of a docs-index snapshot.

# col type req key
1 snapshot_id string ● ◆
2 filename string ●
3 bytes binary (blob) ●
4 byte_len int (i32) ●
5 sha256 string ●
doc_exports (11 cols · unpartitioned)

Rendered-doc export history (full artifact bytes inline, per version).

# col type req key
1 export_id string ● ◆
2 workspace string ●
3 repo string ●
4 doc_name string ●
5 version string ●
6 format string ●
7 git_sha string ●
8 ts_micros timestamptz ●
9 sha256 string ●
10 byte_len long (i64) ●
11 bytes binary (blob) ●
architecture_wiring (10 cols · unpartitioned)

Per-git_sha coarsened wiring graph — JSON + rendered SVG inline.

# col type req key
1 wiring_id string ● ◆
2 workspace string ●
3 repo string ●
4 git_sha string ● ◆
5 ts_micros timestamptz ●
6 node_count long (i64) ●
7 edge_count long (i64) ●
8 graph_sha256 string ●
9 graph_json binary (blob) ●
10 svg binary (blob) ●

D10 · Fleet Ops & Infra

9 tables · 110 columns. The fleet — idea funnel, populate outcomes, airgap, mcp/agent telemetry, yggdrasil infra.

funnel_events (37 cols · unpartitioned)

Every mutation to the idea-intake DAG (wide, one optional col per variant field).

# col type req key
1 event_id string ● ◆
2 ts_micros timestamptz ●
3 kind string ●
4 idea_id string ○
5 plan_id string ○
6 node_id string ○
7 run_id string ○
8 from_node string ○
9 to_node string ○
10 source string ○
11 text string ○
12 refs list<string> ○
13 decision string ○
14 node_status string ○
15 plan_status string ○
16 why string ○
17 summary string ○
18 planner string ○
19 node_kind string ○
20 targets list<string> ○
21 prompt_excerpt string ○
22 params_json string ○
23 ran_by string ○
24 outcome string ○
25 log_ref string ○
26 produced_commits list<struct{repo,sha}> ○
27 produced_test_runs list<string> ○
28 item_kind string ○
29 mode string ○
30 member string ○
31 role string ○
32 from_lane string ○
33 to_lane string ○
34 component string ○
35 wire_origin string ○
36 wire_status string ○
37 wire_confidence double (f64) ○
clone_events (8 cols · unpartitioned)

Per-member clone/fetch/republish populate outcome (why a member failed).

# col type req key
1 ts_micros timestamptz ●
2 workspace string ● ◆
3 member string ●
4 remote string ●
5 op string ●
6 status string ●
7 detail string ●
8 elapsed_ms long (i64) ●
workspace_events (7 cols · unpartitioned)

Per-(member,step) populate outcome (snapshot/deep-scan/arch/populate).

# col type req key
1 ts_micros timestamptz ●
2 workspace string ● ◆
3 member string ●
4 step string ●
5 status string ●
6 detail string ●
7 elapsed_ms long (i64) ●
airgap_events (9 cols · unpartitioned)

Row-level DAG of an airgap pack/move/unfold/install/start run.

# col type req key
1 run_id string ● ◆
2 seq long (i64) ●
3 ts_micros timestamptz ●
4 product string ●
5 op string ●
6 phase string ●
7 status string ●
8 detail string ●
9 depends_on list<string> ○
mcp_requests (4 cols · unpartitioned)

MCP tool-call telemetry (tool, status, latency) — metrics only.

# col type req key
1 ts_micros timestamptz ●
2 tool string ● ◆
3 status string ●
4 latency_ms long (i64) ●
agent_model_runs (16 cols · partitioned by run_id)

Local-LLM bake-off matrix cell (agent×model answer + token economics).

# col type req key
1 run_id string ● ◆
2 ts_micros timestamptz ●
3 model string ●
4 prompt_id string ●
5 prompt string ●
6 output string ●
7 latency_ms double (f64) ●
8 tokens_in long (i64) ●
9 tokens_out long (i64) ●
10 tokens_per_s double (f64) ●
11 score double (f64) ●
12 ok boolean ●
13 error string ○
14 agent string ○
15 cost_usd double (f64) ○
16 mcp_tool_calls long (i64) ○
infra_nodes (11 cols · unpartitioned)

Yggdrasil infra-crown nodes (machine/service/vm/container).

# col type req key
1 snapshot_id string ●
2 workspace_name string ●
3 ts_micros timestamptz ●
4 node_id string ● ◆
5 kind string ●
6 host string ●
7 node_group string ●
8 cores int (i32) ●
9 mem_mb long (i64) ●
10 role string ●
11 online boolean ●
infra_edges (6 cols · unpartitioned)

Infra-crown edges (runs_on/hosts/deploys/member_of).

# col type req key
1 snapshot_id string ●
2 workspace_name string ●
3 ts_micros timestamptz ●
4 from_node string ● ◆
5 to_node string ● ◆
6 rel string ●
runtime_spans (12 cols · unpartitioned)

Yggdrasil runtime/trace band — one row per executed span (jera job / server op).

# col type req key
1 snapshot_id string ●
2 workspace_name string ●
3 ts_micros timestamptz ●
4 span_id string ● ◆
5 parent_span string ●
6 service string ●
7 op string ●
8 start_micros long (i64) ●
9 dur_us long (i64) ●
10 job_id string ●
11 machine string ●
12 status string ●

Part 2 — the functions dwarves uses over Mímir

Every function below is a read over the warehouse — dwarves (and korp, and the MCP agents) never re-walk git or re-run cargo to answer these; the fact was written once and is queried back. The table column names each function reads are given so a query can be reproduced by hand with warehouse_query.

A. The dependency Mímir — the cross-repo graph

A small model need not reason over the whole graph: these answer blast-radius, build-order and re-run-set questions straight from the latest dep_graph_edges snapshot.

deps_of(repo)

Answers: the direct + transitive repos this repo depends on.
Over: dep_graph_edges (latest snapshot: from_repo → to_repo via_crate, filtered to kind != dev).

dependents_of(repo)

Answers: who depends on this repo — the roots of its blast radius.
Over: dep_graph_edges (reverse walk on to_repo → from_repo).

affected_by_change(repos)

Answers: the full downstream set that must be rebuilt / re-tested when these repos change.
Over: dep_graph_edges (transitive reverse closure), optionally intersected with test_results / test_inventory for the impacted-test list.

build_order()

Answers: a topological publish / build order for the workspace.
Over: dep_graph_edges (Kahn topo-sort over the snapshot).

dep_path(from, to)

Answers: a concrete dependency path between two repos (why A pulls in B).
Over: dep_graph_edges (BFS/shortest path).

changed_since_last_release(repo)

Answers: which repos have commits newer than their last recorded release.
Over: release_lineage (last git_sha per repo) ⋈ dep_graph_edges / release_commits.

B. The syntactic knowledge map (syn tier)

Name-matched, build-free — produced by the syn walker; fast and language-agnostic within Rust.

symbol_lookup(name) / defined_in(name)

Answers: where a symbol is defined (file · line · module · visibility · signature).
Over: symbol_facts.

callers_of(symbol)

Answers: which functions call this symbol (one hop in).
Over: call_edges (callee_ident = symbol) ⋈ symbol_facts for the caller's location.

callees_of(symbol)

Answers: which functions this symbol calls (one hop out).
Over: call_edges (caller_path = symbol).

path_between(a, b)

Answers: a call path linking two symbols.
Over: call_edges (BFS over caller→callee).

C. The resolved knowledge map (SCIP tier)

IDE-grade — every row carries rust-analyzer's fully resolved symbol moniker (trait/macro/type resolution included) and is SHA-historized, so find-usages is precise, not a name match.

knowledge_symbol_lookup(name) / knowledge_defined_in(name)

Answers: the resolved definition site of a symbol at a given git_sha.
Over: scip_occurrences (is_definition = true).

knowledge_callers(symbol) / knowledge_callees(symbol) / knowledge_call_path(a, b)

Answers: resolved callers / callees / a resolved call path — precise across traits and macros.
Over: scip_occurrences (resolved symbol + enclosing-range def spans).

knowledge_context(seed)

Answers: the change-radius / context around a symbol, with its embedding neighbours.
Over: call_edges ⋈ embeddings ⋈ embedding_manifest ⋈ symbol_facts.

dwarf_symbol_lookup / dwarf_defined_in / dwarf_callers / dwarf_callees / dwarf_call_path

Answers: the same lookups resolved from compiled DWARF debuginfo (post-mono, real linkage).
Over: dwarf_snapshots ⋈ dwarf_blobs (the captured debuginfo restored and read back).

D. Coverage, history & semantic search

surface_coverage(workspace)

Answers: the autonom completeness-gate verdict per surface node × mode (covered / allowlisted / missing).
Over: surface_coverage.

test_history(repo)

Answers: the pass/fail/duration history of a repo's test matrix.
Over: test_results (per run×suite×test) — for bench-coupled runs also test_outcomes.

bench_history(repo)

Answers: the metric trend of a repo's benchmarks over time (+ CPU/mem footprint).
Over: bench_runs ⋈ bench_results (scalar metrics) ⋈ bench_telemetry (load profile).

test_coverage(repo)

Answers: source line/region coverage — overall, per-crate, per-file and per ui/grpc/emitter/core boundary.
Over: coverage (rollup) + coverage_fn (per-function boundary rows).

vector_search(query)

Answers: the semantically nearest code chunks to a natural-language or code query, at any historical git_sha.
Over: embeddings (deduped vectors) ⋈ embedding_manifest (occurrence → file/span) ⋈ embedding_snapshots (index identity) ⋈ symbol_facts (readable symbol).

E. The escape hatch

warehouse_query(sql)

Answers: any question — read-only SQL (DuckDB / DataFusion) over all 72 tables at once (joins, window functions, aggregates).
Over: every table in Part 1. Companion warehouse_tables returns the valid FROM names; mimir_sql_template offers ready-made queries.

Runs embedded against the local warehouse (no SQL over the wire). This is how a novel question is answered without shipping new code.


Generated from source on request. Table/column counts are computed, not asserted: 72 tables, 722 columns. To regenerate the diagram + this manual, re-run the schema enumerator against src/warehouse/iceberg_schema.rs.