Boolean flags encode state implicitly and explode combinatorially (N flags → 2^N states). If system behavior depends on its state, define an explicit state machine — system behavior becomes defined for every state and transitions are gated. Almost everything in software engineering can be described as a state machine; a single model can even have multiple state machines when needed. Implicit flags often hide as dates, periods, presence of associations, or status fields.