1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//! 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 use ;
// Data-only diagram renderers (static SVG / Markdown over the `Timeline` model,
// no egui) — compiled alongside `model` so docs/server/CLI can render the viz
// diagrams headlessly.
// 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).
// 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.
// 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.
// DepGraphView + its memoized closure are asserted by the perf matrix test
// 🧬 the `nornir` root pane (server + workspace lifecycle
// operations). Public so the headless viz test matrix drives
// its NornirRootView + state_json directly.
// ported facett palette family (egui-0.33 vendored) — the
// Test pane's switchable themes + status/health ramps.
// 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.
// gRPC thin-client (list_workspaces / fetch_timeline / fetch_tables /
// scan_table) — public so the headless viz test matrix can drive it.
// structured IN/OUT/END event stream ($NORNIR_VIZ_TRACE) — the
// machine-readable data the UI actually rendered.
pub use ;