Research verdict: ~40KB gz, synchronous run-N-ticks-then-freeze layout, labelRenderedSizeThreshold = Obsidian's text fade threshold, near-zero idle CPU. Obsidian internals confirmed: PixiJS WebGL + d3-force-style custom sim. Rejected: vis-network, cytoscape, react-force-graph-2d, cosmos.gl. Pre-impl validation: 2k-node synthetic benchmark.