"description": "A stored delete tombstone (#581/#583): the server hard-deleted message 12345 and left a fresh empty row naming it in tombstone_of. History pages and reconnect catch-up must fold it to the SAME event the live delete frame produces \u2014 one delete path, no gap-inference.",
4
"server_message": {
5
"id": 12360,
6
"created_at": 1751900000,
7
"blob": "",
8
"tombstone_of": 12345
9
},
10
"expected_fold_event": {
11
"type": "chat.delete",
12
"msgId": 12345
13
},
14
"note": "The tombstone's own id (12360) is deliberately fresh \u2014 above every client watermark \u2014 so forward-only after: sync always delivers it. Clients with no local copy of 12345 fold it as a no-op. Old clients that predate tombstone_of skip the row entirely (an empty blob fails decrypt)."