experiment: snake_case enforcement + stats path — 32%→100% (19/19)
Two prompt changes:
1. Enforce snake_case for column names and JSON keys (category_id not
categoryid, by_category not bycategory)
2. Stats endpoint at /todos/stats (natural REST sub-resource)
All 19 tests pass: categories CRUD, todos CRUD with FK validation,
LEFT JOIN with category_name, query filtering (completed, category_id),
stats with by_category aggregation, cascade delete protection.
Full pipeline: spec → canonical graph → IUs → working multi-resource
REST API with SQLite, foreign keys, JOINs, filtering, and validation.