Design features, subsystems, and substantial refactors through component boundaries, caller usage, data models, and interfaces before implementation. Use when asked to architect a change, choose a design, or decide where code and responsibilities should live.