Skip to content

feat(notifications): D1 data model + idempotency guard #567

Description

@JSONbored

Parent roadmap: #525
Parent epic: #535

Goal

D1 data model: notification_subscriptions + notification_log with a UNIQUE(dedup_key, channel) idempotency guard and a per-recipient rate-limit window.

Reuse

Drizzle patterns mirroring digest_subscriptions (src/db/schema.ts).

Acceptance

Migration applies; duplicate dedup_key insert is a no-op.

Testing

npm run test:ci, 97%+ coverage. Public/private output boundary preserved; deterministic where applicable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    gittensor:featureGittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions