examples/verify_mimir_njord.rs
//! Verify the EPIC #44 mimir-njord fix: build the dep graph from the warehouse's
//! `dep_graph_edges` (no `nornir-workspace.toml` in the checkout) and run the
//! Mímir queries that `nornir mimir deps-of/dependents-of/svg njord` use.
//!
//! LOCAL_ROOT=/tmp/njord_prof cargo run --example verify_mimir_njord \
//! --features viz,server -- njord
fn main() -> anyhow::Result<()> {
let ws = std::env::args().nth(1).unwrap_or_else(|| "njord".into());
let root = std::env::var("LOCAL_ROOT").expect("set LOCAL_ROOT to the workspace builds dir");
let wh =
nornir::warehouse::iceberg::IcebergWarehouse::open_read_only(std::path::Path::new(&root))?;
// Diagnostic: dump distinct workspace_name + a few edges from the raw table.
let preview = wh.scan_preview("dep_graph_edges", 2000)?;
eprintln!("dep_graph_edges columns: {:?}", preview.columns);
let wsi = preview.columns.iter().position(|c| c == "workspace_name");
let fi = preview.columns.iter().position(|c| c == "from_repo");
let ti = preview.columns.iter().position(|c| c == "to_repo");
let mut names = std::collections::BTreeSet::new();
for row in &preview.rows {
if let Some(i) = wsi {
names.insert(row.get(i).cloned().unwrap_or_default());
}
}
eprintln!(
"distinct workspace_name in dep_graph_edges: {names:?} ({} rows total)",
preview.rows.len()
);
for row in preview.rows.iter().take(8) {
let g = |i: Option<usize>| i.and_then(|x| row.get(x)).cloned().unwrap_or_default();
eprintln!(" ws={} {} -> {}", g(wsi), g(fi), g(ti));
}
// njord's only member is `njord` itself (single-repo workspace).
let members = vec![ws.clone()];
let g =
nornir::mimir::build_graph_from_warehouse(&wh, &ws, &members, std::path::Path::new("."))?
.ok_or_else(|| anyhow::anyhow!("no dep_graph_edges snapshot for {ws}"))?;
let comps = g.component_names();
eprintln!(
"MIMIR-NJORD: graph rebuilt from warehouse — {} components, {} edges",
comps.len(),
g.edges.len()
);
eprintln!(" components: {comps:?}");
// svg (the `nornir mimir svg njord` body)
let mm = nornir::mimir::svg(&g);
eprintln!(" svg lines: {}", mm.lines().count());
// deps-of the workspace root repo (first component) if present
if let Some(first) = comps.first() {
let d = nornir::mimir::deps_of(&g, first, true)?;
eprintln!(" deps-of {first} (transitive): {}", d);
}
eprintln!("MIMIR-NJORD: OK");
Ok(())
}