trpc-query-procedures-must-not-write-data

tRPC query procedures are semantically GET operations and must be idempotent reads. TaskFlow’s reminders.checkDueTomorrow was a query that wrote notification rows — this means reminders only fire when a user manually hits the endpoint, silently failing as a background notification system. Any write (insert, update, side-effect) must be a mutation. Violating this contract also prevents proper caching, optimistic updates, and retry-safety.