flowchart TD
trigger["Hit a naming, boundary, or trade-off question"] --> lookup["Use this page as a glossary, map, rubric, or atlas"]
lookup --> compare["Compare the current code or workflow against the boundary"]
compare --> decision["Turn the comparison into a keep, change, or reject call"]
Read the first diagram as a lookup map: this page is part of the review shelf, not a first-read narrative. Read the second diagram as the reference rhythm: arrive with a concrete ambiguity, compare the current work against the boundary on the page, then turn that comparison into a decision.
Use this page when a codebase feels “object-oriented” but hard to trust. These are the
failure shapes the course is trying to prevent, grouped by the module that best repairs
them.
You can name the owner of the rule that used to be scattered.
You can explain which boundary is authoritative and which are derived.
You can add or remove behavior with smaller blast radius than before.
You can point to one proof surface that would fail first if the anti-pattern returned.
An atlas like this keeps the course honest. It proves the book is not just teaching
clean examples; it is also teaching how to recognize and repair the clumsy code people
actually inherit.