The 3D version of this simulator walks the same kind of dependency graph backward from a chosen dashboard metric, drawn as an orbitable 3D mesh. This 2D counterpart is an independently-built, genuinely different tool: it runs on a real directed-acyclic-graph data model with actual fan-in (a node with several parents) and fan-out (a node feeding several children), and it exposes two distinct graph algorithms the 3D scene does not have โ a live upstream ancestor walk and an animated forward impact-propagation wave.
Upstream trace (reverse BFS) from node n:
visited = {n}; frontier = [n]
while frontier not empty:
next = [ ]
for each id in frontier:
for each parent p with edge (p -> id):
if p not in visited: visited.add(p); next.push(p)
frontier = next
Impact propagation (forward BFS) from changed node n:
hop(n) = 0; frontier = [n]
while frontier not empty:
next = [ ]
for each id in frontier:
for each child c with edge (id -> c):
if hop(c) undefined: hop(c) = hop(id) + 1; next.push(c)
frontier = next
reveal nodes in hop order over time, one wave-front per tick
- Trace Upstream mode โ click any node (or pick it from the dropdown) and a real reverse breadth-first search collects every ancestor table and transform it depends on, however many parents each hop has; the exact traversed edges light up, nothing else does.
- Simulate Impact mode โ click a node to pretend its data just changed, and watch a genuine forward BFS wave reveal every descendant hop-by-hop, exactly the way a real impact-analysis tool answers "what breaks if I touch this table?" A pulse animates along each edge the instant its wave-front crosses it.
- Fan-in / fan-out โ several nodes here have two or three parents and feed two or three children, so the traversal genuinely has to merge branches rather than following one linear chain โ a source deep in the customer data (e.g. the CRM feed) reaches almost every dashboard, while the catalog feed only reaches pricing.
- Pan & zoom โ drag the empty canvas to pan, scroll or pinch to zoom; node positions are recomputed from the graph layout, not from a fixed image.
Real-world use: this is the same class of algorithm behind dbt's "run downstream of this model," Airflow/Dagster impact-analysis tooling, and GDPR/BCBS-239 lineage audits that must prove every consumer of a changed field has been identified.