Cache tags vs cache contexts: the mental model that ends “why won't my block update?”
The single most misunderstood corner of Drupal, and the root of ~90% of 'stale content' and 'user B sees user A's data' bugs. The one-line model: stale = a missing cache tag, leaking = a missing cache context. How they bubble, why max-age:0 quietly poisons a whole page, and the debug header that finds the culprit in seconds.