- Shipped
- August 20, 2026 at 7:18 PM UTC
- Author
- Kamo
- Commit
- abcd491
The four places that built a member's unread snapshot — the REST read, the frame sent when a message arrives, the frame sent when a session is marked read, and the one a web-chat visitor's message triggers — each assembled the same aggregation by hand and sent it unstamped. They are not ordered with respect to one another: the arrival frame is computed at the tail of the SENDER's request, so a recipient reading the conversation can mark it read and have that broadcast before the frame announcing the message is even sent. A client applying frames as they land then holds a badge this service no longer believes in. They now come from one factory that stamps computedAt BEFORE reading the counts — the instant from which the snapshot's data is no older — so a client can tell which frame describes the older world. Stamping after the read would give the stale frame the LARGER number, since it is precisely the one that finishes last, and preserve the bug it is meant to remove.