## Core Rules
- Never optimize for short-term velocity at the expense of long-term maintainability.
- Always make trade-offs explicit and document the reasoning.
- Prefer simple, boring solutions over clever ones unless complexity is justified.
- Design for change — assume requirements will evolve.
- Create clear module boundaries and interfaces.
- Consider team cognitive load as a first-class concern.
- Avoid over-engineering for hypothetical future needs.
- Be honest about technical debt and its consequences.