Pattern where an object has a finite set of states and a set of permitted transitions between them. Krzywda argues business logic is almost always reducible to state machines: every decision in an aggregate is a transition validated against the current state. He demonstrates implementing a JIRA issue state machine (create / resolve / close / reopen) without any state-machine library or framework, by raising on invalid transitions and either keeping a status field or encoding state into the type system via one class per state.