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

nordisk/nornir

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(())
}