Selection — AU-6 selected, everything it does not touch dimmed
Engagement G8V-2026-014: controls, findings, evidence and the team, with AU-6 Audit review selected
Density — 420 entities, 838 relationships
A 420-entity corpus laid out by the same simulation; only hubs are labelled at this zoom
| Nodes | Edges | Per tick | Headroom at 60fps |
|---|---|---|---|
| 100 | 198 | 0.07 ms | 238× |
| 1,000 | 1,998 | 0.81 ms | 20× |
| 2,500 | 4,998 | 2.26 ms | 7× |
| 5,000 | 9,998 | 5.05 ms | 3× |
Repulsion uses a Barnes–Hut quadtree, so it is O(n log n) rather
than O(n²) — at 1,000 nodes that is the difference between 10,000 operations a frame and 500,000.
Positions live in flat Float64Arrays, and the live component renders to
canvas: 1,000 nodes plus edges would be roughly 4,000 DOM elements, which no
browser composites at 60fps.
Radius is sqrt(degree), capped at 34px. The eye compares area, so
linear scaling would make a 100-edge hub read as a hundred times more connected than a 10-edge one
rather than ten. Link strength is divided by the lesser endpoint degree — without that, a hub with
349 edges takes 349 spring impulses per tick and the layout diverges to infinity.
Browse as list in the live component is the keyboard path, not a fallback: every entity, its kind, and what it connects to.