{"abstract":"Receipts at or below the marker already sent are transmitted again.","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":"Allowing equality resends the marker the server already holds. The attempted `if s >= sent_markers` still disagrees with a fixture.","family":"w2-chat_ordering_and_read_receipts-receipt-batcher-advance-only","id":"FA-76206","implementations":{"attempt":{"sha256":"8fbd4a91cdc38ecaaa0a29a7eb0c1b5bdc3a4e89c7c01dff79558679a0d91216","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"},"broken":{"sha256":"41449072c0503c0cba3e6e966b67e5b907413eb299e38ccc84fda30aafbf99ec","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"},"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-advance-only","generated_at":"2026-09-29T14:49:14.142358+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 s > sent_markers` for the advance only decision and keep every other rule of the model unchanged.","root_cause":"The advance only decision evaluates `if s != sent_markers` where the contract requires `if s > sent_markers`.","sha256":"77e81c73a42c8a4a77de76e8b9a90ba0332a94668741c36572904eed3d6e1674","title":"Batch outgoing read receipts per conversation: advance only · 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":41.876,"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":[["n",0]]},"check":"first message has seq zero","expected":{"defer":[],"send":[["n",0]]},"passed":true},{"actual":{"defer":[],"send":[["a",5],["b",8]]},"check":"not advancing","expected":{"defer":[],"send":[["b",8]]},"passed":false},{"actual":{"defer":[],"send":[]},"check":"lower than sent","expected":{"defer":[],"send":[]},"passed":true},{"actual":{"defer":["a","b"],"send":[]},"check":"background defers","expected":{"defer":["a"],"send":[]},"passed":false},{"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\": [[\"n\", 0]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"n\", 0]]}, \"passed\": true}, {\"check\": \"not advancing\", \"actual\": {\"send\": [[\"a\", 5], [\"b\", 8]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": [[\"b\", 8]]}, \"passed\": false}, {\"check\": \"lower than sent\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}, {\"check\": \"background defers\", \"actual\": {\"send\": [], \"defer\": [\"a\", \"b\"]}, \"expected\": {\"defer\": [\"a\"], \"send\": []}, \"passed\": false}, {\"check\": \"empty\", \"actual\": {\"send\": [], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.357,"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":[["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":[["a",2]]},"check":"lower than sent","expected":{"defer":[],"send":[]},"passed":false},{"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\": [[\"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\": [[\"a\", 2]], \"defer\": []}, \"expected\": {\"defer\": [], \"send\": []}, \"passed\": false}, {\"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":42.049,"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"}