nornir 0.4.18

Companion to cargo: dependency tracking, release gating, deploy, benchmarks, and documentation assembly. Project-agnostic.
Documentation
//! Urðr Threads — egui time-travel visualizer for the warehouse.
//!
//! Reads (read-only) the `release_lineage` and `dep_graph_edges`
//! tables and paints each repo as a swim-lane along the release
//! timeline. Cross-repo dep edges from the snapshot pinned to a
//! release are drawn as woven threads between lanes (the literal
//! Norns motif).
//!
//! Pure Rust — eframe over glow on Linux/macOS/Windows. No JS,
//! no WebView, no C deps beyond the platform windowing libs that
//! eframe already brings in.
//!
//! Enable with the `viz` feature; the binary lives at
//! `src/bin/urdr-threads.rs`.

// The pure data model (no egui) is also compiled for the `server` build so the
// `Viz.Timeline` RPC can reuse `build_timeline`. The egui app + its tabs are
// `viz`-only.
pub mod model;
pub use model::{build_timeline, load_timeline, Lane, LaneNode, Timeline};

// Data-only diagram renderers (Mermaid / Markdown over the `Timeline` model, no
// egui) — compiled alongside `model` so docs/server/CLI can render the viz
// diagrams headlessly.
pub mod diagram;

// Pure (no-egui) dependency-graph layout + edge classification — the data core
// behind the 🔗 Dep Graph renderer (deep transitive closure, direct-vs-transitive
// classification, click-collapse). Compiled alongside `model` (server build too)
// so the closure / classification logic is unit-testable and the laid-out graph
// structure can be folded into `state_json` (LAW #6).
pub mod depgraph_layout;

// The robot-UI-tester control channel (the drive-half). No egui — just the tiny
// command-file contract the running viz polls and the `viz.click` MCP tool
// writes. Compiled in every build (incl. the `nornir-mcp` binary, which writes
// commands) so both sides share the same `VizCommand` type + path resolution.
pub mod control;

#[cfg(feature = "viz")]
pub mod action_log; // TOTAL user-action log (ring + stderr + /tmp file + durable
                    // warehouse `viz_actions` sink, N5). Public so the headless
                    // inject-assert test can drive it end-to-end.
#[cfg(feature = "viz")]
pub mod preflight;
#[cfg(feature = "viz")]
mod app;
#[cfg(feature = "viz")]
mod callgraph;
#[cfg(feature = "viz")]
mod funnel_tab;
#[cfg(feature = "viz")]
mod funnel_view;
#[cfg(feature = "viz")]
mod graph;
#[cfg(feature = "viz")]
pub mod knowledge;
#[cfg(feature = "viz")]
mod ops_tabs;
#[cfg(feature = "viz")]
mod bench_live;
#[cfg(feature = "viz")]
mod security_tab;
#[cfg(feature = "viz")]
mod live;
#[cfg(feature = "viz")]
mod release_tab;
#[cfg(feature = "viz")]
mod test_tab;
#[cfg(feature = "viz")]
pub mod facett_theme; // ported facett palette family (egui-0.33 vendored) — the
                      // Test pane's switchable themes + status/health ramps.
#[cfg(feature = "viz")]
pub mod facett_ui; // generic, non-nornir-specific viz widgets (status chips,
                   // badges, sparklines, zebra rows, health pill, graph node) —
                   // factored out of the panes, palette-driven, facett-bound when
                   // egui aligns (D3). See .nornir/theming-and-facett-migration.md.
// Pure matrix model behind the 🧪 Test pane (no egui) — repos × aspects grid,
// per-repo health, per-aspect sparkline series. Public so headless tests assert it.
pub mod test_matrix_grid;
#[cfg(feature = "viz")]
mod leaderboard_tab;
#[cfg(feature = "viz")]
pub mod remote; // gRPC thin-client (list_workspaces / fetch_timeline / fetch_tables /
                // scan_table) — public so the headless viz test matrix can drive it.
#[cfg(feature = "viz")]
mod timetravel;
#[cfg(feature = "viz")]
pub mod trace; // structured IN/OUT/END event stream ($NORNIR_VIZ_TRACE) — the
               // machine-readable data the UI actually rendered.
#[cfg(feature = "viz")]
mod mcp_tab;
#[cfg(feature = "viz")]
mod warehouse_tab;

#[cfg(feature = "viz")]
pub use app::{client_build, UrdrThreadsApp};