Duplication and reconnect

the same IdempotencyKey maps to the same source EventId · reconnect rebinds the session, not the owner state

Duplication and reconnect the same IdempotencyKey maps to the same source EventId · reconnect rebinds the session, not the owner state STREAM reconnect JoinSessionReq(player-1) JoinSessionRes(active quests) GetQuestProgressReq GetQuestProgressReq(player-1) GetQuestProgressRes GetQuestProgressRes KillMonsterReq(same key) GameplayMsg(same eventId) existing result, no duplicate event existing result Game Client · Sequence participant Game Client GameApi · Sequence participant GameApi PlayerQuestSpot · Sequence participant PlayerQuestSpot

Dedupe and reconnect

  • • The same IdempotencyKey is converted to the same source EventId; PlayerQuestSpot checks the already-stored sourceEventId and doesn't re-append the domain event.
  • • On reconnect, the same PlayerId session actor is bound, and progress is confirmed via GetQuestProgressReq.

No binding, no push

  • • A notify sent while there's no session binding isn't a success condition — the state is recorded in the event store and restored via lookup after reconnect.