📌 Description
src/services/notifications/bounceStore.ts and the email provider handle bounces
and retries, but there is no test asserting the suppression contract: that an
address with a hard bounce is suppressed from further sends, that a soft bounce
is retried up to a cap then suppressed, and that a complaint immediately
suppresses. Without this, the system could keep mailing a poisoned address and
harm deliverability.
Goal: prove the bounce/complaint suppression rules so future sends to a
suppressed address are blocked.
🎯 Requirements and Context
- A hard bounce records suppression; a subsequent send to that address is skipped
with a typed reason.
- A soft bounce retries up to the configured cap, then suppresses.
- A spam complaint suppresses immediately regardless of bounce history.
- Suppression is queryable so the notification pipeline can short-circuit.
🛠️ Suggested Execution
1. Create a branch
git checkout -b test/email-bounce-suppression
2. Implement changes
- Add
src/tests/notifications.bounceStore.test.ts driving bounce/complaint
events through the store and provider.
3. Test and commit
- Run
bun test src/tests/notifications.bounceStore.test.ts.
- Edge cases: hard bounce, soft-bounce cap, complaint, send short-circuit.
Example commit message
test: email bounce and complaint suppression contract tests
✅ Guidelines
- Minimum 95% coverage of the bounce-store paths.
- Document the suppression state machine.
- Timeframe: 96 hours.
🏷️ Labels
type-testing · area-backend · MAYBE REWARDED · GRANTFOX OSS · OFFICIAL CAMPAIGN
💬 Community & Support
📌 Description
src/services/notifications/bounceStore.tsand the email provider handle bouncesand retries, but there is no test asserting the suppression contract: that an
address with a hard bounce is suppressed from further sends, that a soft bounce
is retried up to a cap then suppressed, and that a complaint immediately
suppresses. Without this, the system could keep mailing a poisoned address and
harm deliverability.
🎯 Requirements and Context
with a typed reason.
🛠️ Suggested Execution
1. Create a branch
2. Implement changes
src/tests/notifications.bounceStore.test.tsdriving bounce/complaintevents through the store and provider.
3. Test and commit
bun test src/tests/notifications.bounceStore.test.ts.Example commit message
✅ Guidelines
🏷️ Labels
type-testing·area-backend·MAYBE REWARDED·GRANTFOX OSS·OFFICIAL CAMPAIGN💬 Community & Support