Prevent duplicate suspicious registration alerts #1019
No reviewers
Labels
No labels
automated
code-quality
component: admin dashboard
component: backend
component: billing
component: content management
component: faqs
component: game genres
component: game lists
component: game reviews
component: game search
component: games
component: internal notifications
component: platforms
component: security
component: tests
component: user api
component: user badges
component: user blogs
component: user consoles
component: user favorites
component: user friends
component: user notifications
component: user profiles
component: user site notifications
component: user wishlists
component: web design
dependencies
javascript
php
priority
high
priority
low
priority
medium
security-hotspot
source: codex
source: sonarqube
status
awaiting feedback
status
backlog
status
done
status
in progress
status
in queue
status
in review
status
needs codex review
status
needs investigation
status
wontfix
type: bug
type: documentation
type: feature
type: improvement
type: regression
type: task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MyVideoGameList/myvideogamelist.com!1019
Loading…
Reference in a new issue
No description provided.
Delete branch "codex/issue-1011-idempotent-discord-alerts"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Prevent duplicate Discord alerts when a suspicious registration is handled repeatedly or overlapping workers deliver the same audit.
Serialize audit creation per user and page delivery per audit, preserving pagination and committed retry checkpoints. Retry database-only registration transactions up to three times to handle deadlocks between distinct registrations; webhook delivery transactions are never automatically retried.
Verification: all 134 focused tests passed on MariaDB 12.3, including overlapping workers, distinct-registration deadlocks, registration retries, and partial-delivery recovery. SQLite passed 129 tests with five MariaDB-only tests skipped. Pint, PHPStan, and diff checks passed.
Webhook acceptance followed by a lost response or worker crash remains an ambiguous delivery outcome.
Fixes #1011