- Ya
- 27 Agosti 2026, 20:32 UTC
- Mwandishi
- Kamo
- Ahadi ya
- eb5e727
ChatSessionSubscriptionManager publishes to a topic named after the session it subscribed FOR, never after the session the frame came from. That is safe only while the NATS consumer is filtered to chat.session.<guid>, and it was not — the durable was created with no filter and took the whole stream, so every message, read receipt and member-added event in the platform was forwarded into every open conversation. A read receipt arriving in an unrelated window is a chat window that pops itself open with nothing new in it; a message arriving there is someone else's conversation on a member's screen. The filter (kamo-shared-library, NatsMessageService) is the fix. This is the guard that makes it unrepeatable, including on a consumer that predates the filter and has not been reconciled yet. A frame with no session guid still passes: absent is not 'belongs elsewhere', and the subject filter already vouches for it.