I mapped LangChain Core as a knowledge graph. 180 modules, 650 dependency edges. Here's what the structure reveals that the docs never tell you. Finding 1: The messages module has a 70% blast radius. Change it and 126 of 180 modules break — directly or transitively. Every callback, every agent, every retriever, every embedding module traces a dependency path back to messages. It is the load-bearing wall of the entire framework. Nothing in the documentation flags this. Finding 2: runnables.base requires 147 other modules to fully function. That is 82% of the codebase as a prerequisite chain. Before an agent touches runnables.base, it needs ground-truth awareness of almost everything else. Without that map, it is guessing. Finding 3: Exactly 7 modules are completely safe to modify without any downstream risk. cross_encoders, structured_query, sys_info, version, utils.html, utils.image, utils.mustache. Seven. Out of 180.…