FA-75873 / Chat ordering and read receipts / Member archive
Advance a stored read marker from a device report: monotonic advance · case 03
A delayed report from a slower device drags the read marker backwards and resurrects already-read messages.
Case contract
A report from a device session whose epoch differs from the current epoch (for example a session that predates a "mark unread") is ignored. Otherwise the report is clamped to latest_seq and the marker only moves forward. Result: {marker, broadcast (true only when the marker changed), unread = max(0, latest_seq - marker)}.
Why this case matters
Read markers drive unread badges on every device; regressions or stale sessions resurrect or hide unread messages.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| older report arrives late | {"broadcast": true, "marker": 43, "unread": 20} | {"broadcast": false, "marker": 53, "unread": 10} | 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 ↗