Test-Driven Development Write test first. Commit it red. Write minimal code to pass. Commit green. Refactor. Core principle: tests verify behavior through public interfaces, not implementation. Code can change entirely; tests shouldn't. A test that breaks when you rename an internal function — with no behavior change — was testing implementation. Delete it. No watched failure = no proof the test tests the right thing. Commit history is the evidence; hooks check its structure. See tests.md for examples and mocking.md for mocking guidelines. Iron Law NO PRODUCTION CODE WITHOUT A FAILING TEST CO…