-
Notifications
You must be signed in to change notification settings - Fork 87
Build a bounded event deduplication engine with deterministic fingerprints #375
Copy link
Copy link
Closed
Labels
GrantFox OSSGrantFox Open Source Sponsorship program tagGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesIssue may qualify for a reward upon successful completion per campaign rulesThird CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortAdvanced difficulty tasks requiring significant domain knowledge and implementation effortbackendBackend services, application logic, persistence integration, and server-side functionalityBackend services, application logic, persistence integration, and server-side functionalityconsistencyPattern and convention standardization across the codebase for uniformityPattern and convention standardization across the codebase for uniformityeventsDomain events, event processing, transactional outbox, workers, and asynchronous workflowsDomain events, event processing, transactional outbox, workers, and asynchronous workflows
Description
Activity
Metadata
Metadata
Assignees
Labels
GrantFox OSSGrantFox Open Source Sponsorship program tagGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesIssue may qualify for a reward upon successful completion per campaign rulesThird CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortAdvanced difficulty tasks requiring significant domain knowledge and implementation effortbackendBackend services, application logic, persistence integration, and server-side functionalityBackend services, application logic, persistence integration, and server-side functionalityconsistencyPattern and convention standardization across the codebase for uniformityPattern and convention standardization across the codebase for uniformityeventsDomain events, event processing, transactional outbox, workers, and asynchronous workflowsDomain events, event processing, transactional outbox, workers, and asynchronous workflows
Difficulty: Advanced
Type: Feature
Recommended labels (if available in this repo): events, backend, consistency, advanced
Background
GuildPass Core may eventually consume events from multiple sources, including internal outbox processors, Stellar integrations and background jobs. Duplicate delivery is a normal possibility in distributed systems and should not automatically result in duplicate processing.
This issue introduces a standalone deduplication primitive with an in-memory implementation so it can be completed independently.
Problem
There is currently no shared Core utility for recognising recently processed event fingerprints and suppressing duplicate handling within a defined time window.
A naive set of seen IDs can grow without bound and does not define expiry semantics.
Expected Outcome
Implement a framework-independent event deduplication engine with bounded memory, explicit expiry and atomic check-and-record behaviour.
Suggested Implementation
The engine should:
A future Redis adapter should be possible without changing the core decision semantics.
Acceptance Criteria
pnpm typecheckpasses.pnpm buildpasses.pnpm testpasses.Likely Affected Files/Directories
Independence Requirement
This issue must be independently implementable from
mainand must not require the transactional outbox or any event processor to exist.