trpc-query-that-writes-violates-idempotency-contract

Using a tRPC query procedure (GET semantics) to perform writes — such as checkDueTomorrow creating notification records — violates the query/mutation contract and causes silent data integrity issues. Queries are expected to be idempotent reads; only mutations should produce side effects. Beyond the semantic violation, reminder delivery becomes user-triggered rather than scheduled, meaning reminders never fire unless a user actively hits the endpoint. All write operations must be tRPC mutations; background jobs must be driven by an actual cron, not by API calls.