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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
//! 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).
// Cross-workspace coverage-metrics grid → self-contained static SVG (S6 step 5).
// No egui — a hand-emitted SVG over `autonom::megagate::MegaGateReport`, compiled
// alongside `model` (server build too) so the CLI / docs / server can render the
// cross-workspace completeness dashboard headlessly, and the matrix asserts it.
// 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.
// 🏛 EPIC ARCH wiring board drawn natively in egui; its
// `ArchPayload` serde shape is shared with `remote::fetch_architecture` (the RPC).
// 🚇 PURE producer: nornir arch::metro chains + surface_coverage
// → facett-graphview MetroMap (the S5b feed for the Metro tab).
// Public so the headless `tests/metro_feed.rs` drives it directly.
// 🚇 the Metro tab pane — hosts facett-graphview::MetroView,
// fed the producer's MetroMap. Public so the matrix drives it.
// rotating 3-D funnel-plan view (sphere/helix/force); asserted by viz_funnel3d
// DepGraphView + its memoized closure are asserted by the perf matrix test
// SHARED pan/zoom graph renderer (arch board + 🧬 release
// dashboard) — domain-agnostic, a future facett-graphview.
// SHARED Gate / Doctor model + gate_json — reused by the 🚀 Release
// pane AND the 🧬 nornir RELEASE DASHBOARD.
// 🧬 the RELEASE DASHBOARD (Release button + gate-overlaid
// dependency graph + node→history), built on graph_render.
// 🧙 the guided, gated RELEASE WIZARD the dashboard's Release
// button opens — orchestrates doctor/stage/promote as gates.
// 🔁 SHARED per-repo pane empty-state + auto-refresh helper:
// the LAW-2 empty-state classifier (in-route vs not-scanned, from
// the live Viz.Jobs snapshot) + the `should_refetch` throttle that
// replaces every pane's sticky `loaded` latch. Public so the
// headless matrix drives `classify_empty`/`should_refetch` directly.
// 🧬 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.
// 📖 nornir's own manual, rendered from docs/book-svg/ via
// the facett-docview vector viewer (multi-core resvg).
// 📦 Holger registry pane — the built-in (married) holger dev pair (/cache +
// /sparring) read via holger's IN-PROCESS functional API. Only compiled when
// holger is actually embedded (the `embed-holger` feature); the 📦 tab degrades
// to a short note otherwise.
pub use ;
// 🧭 LAW 9 (UI-PLANE reachability): nornir-viz modelled as a `UiPlan` (plane per
// Tab) + a native `PlaneDriver` over the live app + the wasm/deployed driver seam.
// The worked example that proves `nornir_testmatrix::uiplane`.
// 🧭 S3c — the PANE DISCOVERY REGISTRY (`viz_surfaces()`): the formal, stable
// enumeration of every addressable viz surface (one per `Tab::ALL` + the 🧬 tab's
// populate_status/jobs sub-panels) that the atom-walk + functional matrix walk,
// superseding `Tab::ALL` + ad-hoc `state_json` slicing.