Drives development with a failing test first. Use when implementing any new logic, fixing any bug, or modifying behavior. Tests ship in the same commit as code — never "tests later."