{"abstract":"The last scroll event wins, so a lower receipt is sent after a higher one was generated.","category":"Chat ordering and read receipts","checks":6,"contract":"pending_reads are [conv, seq] events produced while scrolling, in any order. Per conversation only the highest seq is sent, and only if it is above the marker already sent (missing marker means nothing sent, -1). In the background nothing is sent: the eligible conversations are deferred. Result {send: [[conv, seq]...] sorted by conv, defer: [conv...]}.","evaluation_group":"w2-chat_ordering_and_read_receipts-receipt-batcher","failed_approach":"Defaulting to zero drops the receipt for a conversation whose only message has seq zero. The attempted `if seq > best.get(conv, 0):` still disagrees with a fixture.","family":"w2-chat_ordering_and_read_receipts-receipt-batcher-highest-per-conversation","id":"FA-76201","implementations":{"attempt":{"sha256":"79453bad5cd584eff058656221e494eecc22484a37346a4dcdc93307462d618e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pending_reads, sent_markers, foreground):\n    best = {}\n    for conv, seq in pending_reads:\n        if seq > best.get(conv, 0):\n            best[conv] = seq\n    rows = [[c, s] for c, s in sorted(best.items()) if s > sent_markers.get(c, -1)]\n    if not foreground:\n        return {'send': [], 'defer': [c for c, _ in rows]}\n    return {'send': rows, 'defer': []}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('scroll events out of order', ([['a', 10], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 10], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 8]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 8]]}), ('lower than sent', ([['a', 2]], {'a': 7}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 2]], {'b': 2}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 2: [('scroll events out of order', ([['a', 11], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 11], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 9]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 9]]}), ('lower than sent', ([['a', 2]], {'a': 8}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 3]], {'b': 3}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 3: [('scroll events out of order', ([['a', 12], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 12], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 10]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 10]]}), ('lower than sent', ([['a', 2]], {'a': 9}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 4]], {'b': 4}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 4: [('scroll events out of order', ([['a', 13], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 13], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 11]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 11]]}), ('lower than sent', ([['a', 2]], {'a': 10}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 5]], {'b': 5}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 5: [('scroll events out of order', ([['a', 14], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 14], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 12]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 12]]}), ('lower than sent', ([['a', 2]], {'a': 11}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 6]], {'b': 6}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})]}\nfor _label, _args, _expected in _CASES[N]:\n    check(_label, solve(*_args), _expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"d5b84662db03133f13671d70a3e38091fc0e77c19b553f1f00f762ef1d0ff8b5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pending_reads, sent_markers, foreground):\n    best = {}\n    for conv, seq in pending_reads:\n        if seq != best.get(conv):\n            best[conv] = seq\n    rows = [[c, s] for c, s in sorted(best.items()) if s > sent_markers.get(c, -1)]\n    if not foreground:\n        return {'send': [], 'defer': [c for c, _ in rows]}\n    return {'send': rows, 'defer': []}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('scroll events out of order', ([['a', 10], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 10], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 8]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 8]]}), ('lower than sent', ([['a', 2]], {'a': 7}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 2]], {'b': 2}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 2: [('scroll events out of order', ([['a', 11], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 11], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 9]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 9]]}), ('lower than sent', ([['a', 2]], {'a': 8}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 3]], {'b': 3}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 3: [('scroll events out of order', ([['a', 12], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 12], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 10]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 10]]}), ('lower than sent', ([['a', 2]], {'a': 9}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 4]], {'b': 4}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 4: [('scroll events out of order', ([['a', 13], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 13], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 11]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 11]]}), ('lower than sent', ([['a', 2]], {'a': 10}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 5]], {'b': 5}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 5: [('scroll events out of order', ([['a', 14], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 14], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 12]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 12]]}), ('lower than sent', ([['a', 2]], {'a': 11}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 6]], {'b': 6}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})]}\nfor _label, _args, _expected in _CASES[N]:\n    check(_label, solve(*_args), _expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"0b9d0c38fb9b77cba0190af534fc4ad09f3294a1edef2cef856ee2ce6edb4015","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pending_reads, sent_markers, foreground):\n    best = {}\n    for conv, seq in pending_reads:\n        if seq > best.get(conv, -1):\n            best[conv] = seq\n    rows = [[c, s] for c, s in sorted(best.items()) if s > sent_markers.get(c, -1)]\n    if not foreground:\n        return {'send': [], 'defer': [c for c, _ in rows]}\n    return {'send': rows, 'defer': []}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('scroll events out of order', ([['a', 10], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 10], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 8]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 8]]}), ('lower than sent', ([['a', 2]], {'a': 7}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 2]], {'b': 2}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 2: [('scroll events out of order', ([['a', 11], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 11], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 9]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 9]]}), ('lower than sent', ([['a', 2]], {'a': 8}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 3]], {'b': 3}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 3: [('scroll events out of order', ([['a', 12], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 12], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 10]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 10]]}), ('lower than sent', ([['a', 2]], {'a': 9}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 4]], {'b': 4}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 4: [('scroll events out of order', ([['a', 13], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 13], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 11]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 11]]}), ('lower than sent', ([['a', 2]], {'a': 10}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 5]], {'b': 5}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})], 5: [('scroll events out of order', ([['a', 14], ['a', 4], ['b', 2]], {}, True), {'defer': [], 'send': [['a', 14], ['b', 2]]}), ('first message has seq zero', ([['n', 0]], {}, True), {'defer': [], 'send': [['n', 0]]}), ('not advancing', ([['a', 5], ['b', 12]], {'a': 5, 'b': 3}, True), {'defer': [], 'send': [['b', 12]]}), ('lower than sent', ([['a', 2]], {'a': 11}, True), {'defer': [], 'send': []}), ('background defers', ([['a', 3], ['b', 6]], {'b': 6}, False), {'defer': ['a'], 'send': []}), ('empty', ([], {'a': 1}, True), {'defer': [], 'send': []})]}\nfor _label, _args, _expected in _CASES[N]:\n    check(_label, solve(*_args), _expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-chat_ordering_and_read_receipts-receipt-batcher-highest-per-conversation","generated_at":"2026-09-29T14:49:14.141596+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Receipt batching limits traffic; batching errors send stale receipts or none at all.","repair":"Use `if seq > best.get(conv, -1):` for the highest per conversation decision and keep every other rule of the model unchanged.","root_cause":"The highest per conversation decision evaluates `if seq != best.get(conv):` where the contract requires `if seq > best.get(conv, -1):`.","sha256":"8e6b08160a9fbd6ef99cb3e45329303adb2e6c6173a8ed33e6a17c62e901f7d0","title":"Batch outgoing read receipts per conversation: highest per conversation · case 01","variant":1,"variant_policy":"N selects a different enumerated fixture set (shifted clocks, identifiers and sizes); boundary fixtures recur across variants.","verification":{"attempt":{"elapsed_ms":43.674,"exit_code":1,"observations":[{"actual":{"defer":[],"send":[["a",10],["b",2]]},"check":"scroll events out of order","expected":{"defer":[],"send":[["a",10],["b",2]]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"first message has seq zero","expected":{"defer":[],"send":[["n",0]]},"passed":false},{"actual":{"defer":[],"send":[["b",8]]},"check":"not advancing","expected":{"defer":[],"send":[["b",8]]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"lower than sent","expected":{"defer":[],"send":[]},"passed":true},{"actual":{"defer":["a"],"send":[]},"check":"background defers","expected":{"defer":["a"],"send":[]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"empty","expected":{"defer":[],"send":[]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"scroll events out of order\", \"actual\": {\"send\": [[\"a\", 10], [\"b\", 2]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"a\", 10], [\"b\", 2]]}, \"passed\": true}, {\"check\": \"first message has seq zero\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"n\", 0]]}, \"passed\": false}, {\"check\": \"not advancing\", \"actual\": {\"send\": [[\"b\", 8]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"b\", 8]]}, \"passed\": true}, {\"check\": \"lower than sent\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}, {\"check\": \"background defers\", \"actual\": {\"send\": [], \"defer\": [\"a\"]}, \"expected\": {\"defer\": [\"a\"], \"send\": []}, \"passed\": true}, {\"check\": \"empty\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.555,"exit_code":1,"observations":[{"actual":{"defer":[],"send":[["a",4],["b",2]]},"check":"scroll events out of order","expected":{"defer":[],"send":[["a",10],["b",2]]},"passed":false},{"actual":{"defer":[],"send":[["n",0]]},"check":"first message has seq zero","expected":{"defer":[],"send":[["n",0]]},"passed":true},{"actual":{"defer":[],"send":[["b",8]]},"check":"not advancing","expected":{"defer":[],"send":[["b",8]]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"lower than sent","expected":{"defer":[],"send":[]},"passed":true},{"actual":{"defer":["a"],"send":[]},"check":"background defers","expected":{"defer":["a"],"send":[]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"empty","expected":{"defer":[],"send":[]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"scroll events out of order\", \"actual\": {\"send\": [[\"a\", 4], [\"b\", 2]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"a\", 10], [\"b\", 2]]}, \"passed\": false}, {\"check\": \"first message has seq zero\", \"actual\": {\"send\": [[\"n\", 0]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"n\", 0]]}, \"passed\": true}, {\"check\": \"not advancing\", \"actual\": {\"send\": [[\"b\", 8]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"b\", 8]]}, \"passed\": true}, {\"check\": \"lower than sent\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}, {\"check\": \"background defers\", \"actual\": {\"send\": [], \"defer\": [\"a\"]}, \"expected\": {\"defer\": [\"a\"], \"send\": []}, \"passed\": true}, {\"check\": \"empty\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.451,"exit_code":0,"observations":[{"actual":{"defer":[],"send":[["a",10],["b",2]]},"check":"scroll events out of order","expected":{"defer":[],"send":[["a",10],["b",2]]},"passed":true},{"actual":{"defer":[],"send":[["n",0]]},"check":"first message has seq zero","expected":{"defer":[],"send":[["n",0]]},"passed":true},{"actual":{"defer":[],"send":[["b",8]]},"check":"not advancing","expected":{"defer":[],"send":[["b",8]]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"lower than sent","expected":{"defer":[],"send":[]},"passed":true},{"actual":{"defer":["a"],"send":[]},"check":"background defers","expected":{"defer":["a"],"send":[]},"passed":true},{"actual":{"defer":[],"send":[]},"check":"empty","expected":{"defer":[],"send":[]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"scroll events out of order\", \"actual\": {\"send\": [[\"a\", 10], [\"b\", 2]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"a\", 10], [\"b\", 2]]}, \"passed\": true}, {\"check\": \"first message has seq zero\", \"actual\": {\"send\": [[\"n\", 0]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"n\", 0]]}, \"passed\": true}, {\"check\": \"not advancing\", \"actual\": {\"send\": [[\"b\", 8]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"b\", 8]]}, \"passed\": true}, {\"check\": \"lower than sent\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}, {\"check\": \"background defers\", \"actual\": {\"send\": [], \"defer\": [\"a\"]}, \"expected\": {\"defer\": [\"a\"], \"send\": []}, \"passed\": true}, {\"check\": \"empty\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}