You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PREWAVE-BE-095 — Resolve Eligible Governance Participants for Governance Notifications #796
src/notifications/services/governance-event-publisher.service.ts currently returns an empty array from getGovernanceParticipants(). Proposal-created, vote-reminder, vote-closed, and proposal-executed events can therefore have no recipients.
Technical scope
Define and implement the policy-backed recipient set for each governance notification. Use verified participation and eligibility records rather than broad user broadcasts. Separate active voters, eligible governance participants, proposal followers, and directly affected users where the event requires it. Respect channel preferences, opt-outs, and bounded fan-out.
Required tests
Each governance event's eligibility matrix, including expired/ineligible participants.
Deduplication, pagination/batch bounds, and preference enforcement.
No accidental broadcast to all users.
Stable results when participant records change during event publication.
Security and architecture constraints
Contracts and finalized canonical events remain authoritative for protocol state.
The API remains a projection/read and notification-delivery layer; it must not invent protocol outcomes.
Fail closed on missing, stale, ambiguous, unauthorized, or incomplete state.
Do not expose secrets, device tokens, email verification tokens, private evidence, or unnecessary personal data.
Activity