Processed Event Repository Port
Persistence-agnostic repository port for ProcessedEvent rows.
Adapters back this port with the storage technology of choice (JPA today, Mongo/Cassandra possible). Implementations MUST honor the uniqueness of (eventId, consumerGroup) — duplicate inserts within the same group must throw so the ProcessedEventGuard can treat them as already-processed.