fix(feedback): suppress admin notification and email for honeypot spam #338

Merged
Claude-Run merged 1 commit from fix/BUNYIP-270-suppress-spam-feedback-admin-notification into main 2026-07-04 06:23:46 +02:00
Member

The admin feedback dashboard's Active tab is backed by a list query that filters is_spam = FALSE, so honeypot-flagged spam submissions never appear there. submit_feedback, however, raised the in-app NewFeedback notification and sent the admin notification email unconditionally, including for spam. Admins therefore received a "new feedback submitted" email but opened /admin/feedback to an empty Active queue: the row existed only under the Spam tab. This is the mismatch reported in BUNYIP-270 (email fires, dashboard empty).

Gate the admin notification + email on a new should_notify_admins_of_feedback(is_spam) predicate so admins are pinged only for submissions that land in the Active queue. Legit feedback (is_spam = FALSE) still notifies, emails, and appears in Active unchanged; spam is still stored, audit-logged, and visible under the Spam tab, but no longer pings admins. The predicate is factored out and covered by unit tests so the invariant cannot silently regress to an unconditional ping.

#BUNYIP-270

The admin feedback dashboard's Active tab is backed by a list query that filters `is_spam = FALSE`, so honeypot-flagged spam submissions never appear there. `submit_feedback`, however, raised the in-app `NewFeedback` notification and sent the admin notification email unconditionally, including for spam. Admins therefore received a "new feedback submitted" email but opened `/admin/feedback` to an empty Active queue: the row existed only under the Spam tab. This is the mismatch reported in BUNYIP-270 (email fires, dashboard empty). Gate the admin notification + email on a new `should_notify_admins_of_feedback(is_spam)` predicate so admins are pinged only for submissions that land in the Active queue. Legit feedback (is_spam = FALSE) still notifies, emails, and appears in Active unchanged; spam is still stored, audit-logged, and visible under the Spam tab, but no longer pings admins. The predicate is factored out and covered by unit tests so the invariant cannot silently regress to an unconditional ping. #BUNYIP-270
fix(feedback): suppress admin notification and email for honeypot spam
All checks were successful
E2E / Playwright against deployment (pull_request) Successful in 27s
Check / fmt + clippy + build + tests (pull_request) Successful in 9m54s
Create release / Create release from merged PR (pull_request) Has been skipped
e67c77e6c2
The admin feedback dashboard's Active tab is backed by a list query that filters `is_spam = FALSE`, so honeypot-flagged spam submissions never appear there. `submit_feedback`, however, raised the in-app `NewFeedback` notification and sent the admin notification email unconditionally, including for spam. Admins therefore received a "new feedback submitted" email but opened `/admin/feedback` to an empty Active queue: the row existed only under the Spam tab. This is the mismatch reported in BUNYIP-270 (email fires, dashboard empty).

Gate the admin notification + email on a new `should_notify_admins_of_feedback(is_spam)` predicate so admins are pinged only for submissions that land in the Active queue. Legit feedback (is_spam = FALSE) still notifies, emails, and appears in Active unchanged; spam is still stored, audit-logged, and visible under the Spam tab, but no longer pings admins. The predicate is factored out and covered by unit tests so the invariant cannot silently regress to an unconditional ping.

#BUNYIP-270
Claude-Run deleted branch fix/BUNYIP-270-suppress-spam-feedback-admin-notification 2026-07-04 06:23:46 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/bunyip!338
No description provided.