Visualization technique where each horizontal row is an architectural layer (routes, controllers, models, views; or data/calculation/domain layers) and arrows represent call-time dependencies. Used to diagnose smells: upward-pointing arrows (e.g. a view iterating over models, a controller creating a decorator that knows about the view) indicate something has gone wrong. Shows why concerns don't solve complexity — they just split the same runtime dependency graph across more files. Also reveals legitimate modularization (a date→humanized-string library) and the real progress service objects represent over fat models. Works at function-scope too: refactoring a 'most unpopular book' function into a named 'frequencies' abstraction with a min-value method quarantines all stateful 'spidey-sense' code into a small corner of the graph.