trpc-query-used-for-write-violates-idempotency

tRPC queries (GET contract) must be idempotent reads — using a query procedure to trigger writes (e.g. reminder notifications via checkDueTomorrow) violates the protocol contract and means side effects only fire on client-initiated calls, not scheduled jobs. Write operations that should run on a schedule must be mutations called from a cron worker, not queries.