Class Hierarchies

Per the engineering policy, every behavior hierarchy gets a contract page here before or with its implementation: what the base owns, where subclasses may diverge, and the invariants any leaf must preserve. A PR adding a leaf class links the contract it extends and states why the behavior can't live in the base.

The shared rule across all of them: data variation is not behavior. Stats, models, tables, and tuning live in resources; a subclass exists only when the logic diverges.

The player state machine page serves the same role for the player avatar and predates this section.