How much you have to hold in working memory to work with a piece of code. The actual thing that “readable” and “maintainable” are proxies for.
Not LOC, not “clean,” not any single metric. Sometimes a 200-line function has lower cognitive load than 15 tiny methods you have to trace through, because all the relevant context is in one place (cohesion, LoB). Sometimes the opposite.
High cognitive load: code where understanding one part requires understanding many other parts simultaneously → coupling. Each dependency is a chunk you have to keep loaded.
Low cognitive load: code where you can understand a part in isolation. Well-decoupled, well-cohesive modules act as single chunks.
Near-decomposable systems are precisely the ones humans can understand: the fast dynamics within a module can be ignored when reasoning about the slow dynamics between modules.