FA-76326 / Chat ordering and read receipts / Open access
Compute a member's visible history and initial read marker: leave inclusive · case 01
The member cannot see their own leave event.
ROOT CAUSE
The leave inclusive decision evaluates `s < leave_seq` where the contract requires `s <= leave_seq`.
VERIFIED REPAIR
Use `s <= leave_seq` for the leave inclusive decision and keep every other rule of the model unchanged.
Unsuccessful approach: Fixing only shared-history rooms keeps the leave event hidden elsewhere. The attempted `(s <= leave_seq if history_visible else s < leave_seq)` still disagrees with a fixture.
Case contract
messages are seqs (duplicates possible). A member sees seqs >= join_seq, or all seqs from 1 when the room shares history with new members; after leaving at leave_seq they see nothing after leave_seq (their own leave event included). The initial read marker is join_seq - 1, so only messages from the join onward are unread. Result {visible (sorted, unique), initial_marker}.
Why this case matters
Membership changes decide which history a user may read and where their unread count starts.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(messages, join_seq, leave_seq, history_visible):
lo = 1 if history_visible else join_seq
vis = [s for s in sorted(set(messages)) if s >= lo and (leave_seq is None or s < leave_seq)]
return {'visible': vis, 'initial_marker': join_seq - 1}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('shared history', ([1, 2, 3, 5], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 5]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 4, None, False), {'initial_marker': 3, 'visible': []})], 2: [('shared history', ([1, 2, 3, 6], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 6]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 8], 7, None, False), {'initial_marker': 6, 'visible': [7, 8, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 5, None, False), {'initial_marker': 4, 'visible': []})], 3: [('shared history', ([1, 2, 3, 7], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 7]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 6, None, False), {'initial_marker': 5, 'visible': []})], 4: [('shared history', ([1, 2, 3, 8], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 8]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 8], 7, None, False), {'initial_marker': 6, 'visible': [7, 8, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 7, None, False), {'initial_marker': 6, 'visible': []})], 5: [('shared history', ([1, 2, 3, 9], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 9]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 8, None, False), {'initial_marker': 7, 'visible': []})]}
for _label, _args, _expected in _CASES[N]:
check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| shared history | {'initial_marker': 2, 'visible': [1, 2, 3, 5]} | {'initial_marker': 2, 'visible': [1, 2, 3, 5]} | Passed |
| join message visible | {'initial_marker': 4, 'visible': [5, 6]} | {'initial_marker': 4, 'visible': [5, 6]} | Passed |
| leave event visible | {'initial_marker': 4, 'visible': [5, 6]} | {'initial_marker': 4, 'visible': [5, 6, 7]} | Failed |
| duplicate deliveries | {'initial_marker': 6, 'visible': [7, 9]} | {'initial_marker': 6, 'visible': [7, 9]} | Passed |
| history visible after leave | {'initial_marker': 1, 'visible': [1]} | {'initial_marker': 1, 'visible': [1, 2]} | Failed |
| nothing yet | {'initial_marker': 3, 'visible': []} | {'initial_marker': 3, 'visible': []} | Passed |
SHA-256 / 08ecc84e5da0ae40c2b648e9f0cc43c14cb5930e5e2115f8b5456c06907f486e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(messages, join_seq, leave_seq, history_visible):
lo = 1 if history_visible else join_seq
vis = [s for s in sorted(set(messages)) if s >= lo and (leave_seq is None or (s <= leave_seq if history_visible else s < leave_seq))]
return {'visible': vis, 'initial_marker': join_seq - 1}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('shared history', ([1, 2, 3, 5], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 5]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 4, None, False), {'initial_marker': 3, 'visible': []})], 2: [('shared history', ([1, 2, 3, 6], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 6]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 8], 7, None, False), {'initial_marker': 6, 'visible': [7, 8, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 5, None, False), {'initial_marker': 4, 'visible': []})], 3: [('shared history', ([1, 2, 3, 7], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 7]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 6, None, False), {'initial_marker': 5, 'visible': []})], 4: [('shared history', ([1, 2, 3, 8], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 8]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 8], 7, None, False), {'initial_marker': 6, 'visible': [7, 8, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 7, None, False), {'initial_marker': 6, 'visible': []})], 5: [('shared history', ([1, 2, 3, 9], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 9]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 8, None, False), {'initial_marker': 7, 'visible': []})]}
for _label, _args, _expected in _CASES[N]:
check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| shared history | {'initial_marker': 2, 'visible': [1, 2, 3, 5]} | {'initial_marker': 2, 'visible': [1, 2, 3, 5]} | Passed |
| join message visible | {'initial_marker': 4, 'visible': [5, 6]} | {'initial_marker': 4, 'visible': [5, 6]} | Passed |
| leave event visible | {'initial_marker': 4, 'visible': [5, 6]} | {'initial_marker': 4, 'visible': [5, 6, 7]} | Failed |
| duplicate deliveries | {'initial_marker': 6, 'visible': [7, 9]} | {'initial_marker': 6, 'visible': [7, 9]} | Passed |
| history visible after leave | {'initial_marker': 1, 'visible': [1, 2]} | {'initial_marker': 1, 'visible': [1, 2]} | Passed |
| nothing yet | {'initial_marker': 3, 'visible': []} | {'initial_marker': 3, 'visible': []} | Passed |
SHA-256 / 2147595b9cd9f42daaf0a92c323bde30733365af7bbe75db0b441ee175a22419
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(messages, join_seq, leave_seq, history_visible):
lo = 1 if history_visible else join_seq
vis = [s for s in sorted(set(messages)) if s >= lo and (leave_seq is None or s <= leave_seq)]
return {'visible': vis, 'initial_marker': join_seq - 1}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_CASES = {1: [('shared history', ([1, 2, 3, 5], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 5]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 4, None, False), {'initial_marker': 3, 'visible': []})], 2: [('shared history', ([1, 2, 3, 6], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 6]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 8], 7, None, False), {'initial_marker': 6, 'visible': [7, 8, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 5, None, False), {'initial_marker': 4, 'visible': []})], 3: [('shared history', ([1, 2, 3, 7], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 7]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 6, None, False), {'initial_marker': 5, 'visible': []})], 4: [('shared history', ([1, 2, 3, 8], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 8]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 8], 7, None, False), {'initial_marker': 6, 'visible': [7, 8, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 7, None, False), {'initial_marker': 6, 'visible': []})], 5: [('shared history', ([1, 2, 3, 9], 3, None, True), {'initial_marker': 2, 'visible': [1, 2, 3, 9]}), ('join message visible', ([4, 5, 6], 5, None, False), {'initial_marker': 4, 'visible': [5, 6]}), ('leave event visible', ([5, 6, 7, 8], 5, 7, False), {'initial_marker': 4, 'visible': [5, 6, 7]}), ('duplicate deliveries', ([9, 7, 7, 9], 7, None, False), {'initial_marker': 6, 'visible': [7, 9]}), ('history visible after leave', ([1, 2, 3], 2, 2, True), {'initial_marker': 1, 'visible': [1, 2]}), ('nothing yet', ([], 8, None, False), {'initial_marker': 7, 'visible': []})]}
for _label, _args, _expected in _CASES[N]:
check(_label, solve(*_args), _expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| shared history | {'initial_marker': 2, 'visible': [1, 2, 3, 5]} | {'initial_marker': 2, 'visible': [1, 2, 3, 5]} | Passed |
| join message visible | {'initial_marker': 4, 'visible': [5, 6]} | {'initial_marker': 4, 'visible': [5, 6]} | Passed |
| leave event visible | {'initial_marker': 4, 'visible': [5, 6, 7]} | {'initial_marker': 4, 'visible': [5, 6, 7]} | Passed |
| duplicate deliveries | {'initial_marker': 6, 'visible': [7, 9]} | {'initial_marker': 6, 'visible': [7, 9]} | Passed |
| history visible after leave | {'initial_marker': 1, 'visible': [1, 2]} | {'initial_marker': 1, 'visible': [1, 2]} | Passed |
| nothing yet | {'initial_marker': 3, 'visible': []} | {'initial_marker': 3, 'visible': []} | Passed |
SHA-256 / 5a9bb6fd562f55e8901de307e491c6008e3b33f4b3a3133441f314027a0bb297
Verification & scope
Stipulated offline chat model; not a complete messaging protocol, client or server implementation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:49:15.320539+00:00.
Case digest / 48246183e662d35c651cf715a8fd603ab54299cb45c26691827a803f30447f4f