Event
@Serializable
The wire envelope every SSE / event-bus message rides in.
id is assigned by the producer and used by krill.zone.shared.events.EventTracker for deduplication — distinct from eventId, which is a fresh UUID per envelope so retransmits can be correlated. timestamp defaults to Clock.System.now() so producers that don't care about wall-clock can just call Event(id, type, payload).