FA-76088 / Chat ordering and read receipts / Member archive
Apply create, edit and delete events to message state: terminal delete · case 03
A concurrent edit with a higher version resurrects a message that was deleted.
Case contract
events {op, id, ver, text} arrive in any order and are processed in arrival order. Per id the highest version wins and an edit that only equals the current version is ignored; an edit that arrives before its create is buffered (highest buffered version kept) and applied if it is newer than the create. Delete is terminal: the id shows None and later creates and edits are ignored whatever their version. Result: id -> text (None for deleted) for created or deleted ids, sorted by id.
Why this case matters
Message edits and deletions race with the original message across devices; tombstones must stay terminal.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| edit after delete with higher version | {"a": "again"} | {"a": null} | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗