{"abstract":"Messages sharing the cursor timestamp are skipped when loading older history.","category":"Chat ordering and read receipts","checks":6,"contract":"messages are [ts, id] pairs in any order; ordering is by (ts, id). cursor is None or the exclusive [ts, id] of the oldest message already shown. A page holds the newest `limit` messages strictly older than the cursor, in ascending order; next is the [ts, id] of the page's oldest item when older messages remain, else None.","evaluation_group":"w2-chat_ordering_and_read_receipts-history-page-cursor","failed_approach":"Excluding only the cursor id reloads newer siblings that were already displayed. The attempted `m[0] <= cursor[0] and m[1] != cursor[1]` still disagrees with a fixture.","family":"w2-chat_ordering_and_read_receipts-history-page-cursor-composite-cursor","id":"FA-76061","implementations":{"attempt":{"sha256":"cb33cb8b25000fe244bd9a83bfefc8b05c93910a08f41a87b11dc424a7727b8d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(messages, cursor, limit):\n    rows = sorted(messages, key=lambda m: (m[0], m[1]))\n    if cursor is not None:\n        rows = [m for m in rows if m[0] <= cursor[0] and m[1] != cursor[1]]\n    page = rows[-limit:] if limit > 0 else []\n    more = len(rows) > len(page)\n    return {'page': [m[1] for m in page], 'next': [page[0][0], page[0][1]] if more and page else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [91, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x1']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08']], None, 3), {'next': [6, 'm06'], 'page': ['m06', 'm07', 'm08']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})], 2: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [92, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x2']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09']], None, 3), {'next': [7, 'm07'], 'page': ['m07', 'm08', 'm09']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 2), {'next': [13, 'id13'], 'page': ['id13', 'id14']})], 3: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [93, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x3']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10']], None, 3), {'next': [8, 'm08'], 'page': ['m08', 'm09', 'm10']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})], 4: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [94, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x4']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10'], [11, 'm11']], None, 3), {'next': [9, 'm09'], 'page': ['m09', 'm10', 'm11']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 2), {'next': [13, 'id13'], 'page': ['id13', 'id14']})], 5: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [95, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x5']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10'], [11, 'm11'], [12, 'm12']], None, 3), {'next': [10, 'm10'], 'page': ['m10', 'm11', 'm12']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})]}\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":"1fbd3e89b18944653d6b988dbc98454f80ea7dd28c2ff43fe0b4cb4e4e12d812","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(messages, cursor, limit):\n    rows = sorted(messages, key=lambda m: (m[0], m[1]))\n    if cursor is not None:\n        rows = [m for m in rows if m[0] < cursor[0]]\n    page = rows[-limit:] if limit > 0 else []\n    more = len(rows) > len(page)\n    return {'page': [m[1] for m in page], 'next': [page[0][0], page[0][1]] if more and page else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [91, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x1']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08']], None, 3), {'next': [6, 'm06'], 'page': ['m06', 'm07', 'm08']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})], 2: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [92, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x2']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09']], None, 3), {'next': [7, 'm07'], 'page': ['m07', 'm08', 'm09']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 2), {'next': [13, 'id13'], 'page': ['id13', 'id14']})], 3: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [93, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x3']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10']], None, 3), {'next': [8, 'm08'], 'page': ['m08', 'm09', 'm10']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})], 4: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [94, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x4']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10'], [11, 'm11']], None, 3), {'next': [9, 'm09'], 'page': ['m09', 'm10', 'm11']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 2), {'next': [13, 'id13'], 'page': ['id13', 'id14']})], 5: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [95, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x5']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10'], [11, 'm11'], [12, 'm12']], None, 3), {'next': [10, 'm10'], 'page': ['m10', 'm11', 'm12']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})]}\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":"4e4147fd5d6024af8afb8e4af8e24f29267a80d1c1439ea2b6069cfb4cc7aa4d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(messages, cursor, limit):\n    rows = sorted(messages, key=lambda m: (m[0], m[1]))\n    if cursor is not None:\n        rows = [m for m in rows if (m[0], m[1]) < (cursor[0], cursor[1])]\n    page = rows[-limit:] if limit > 0 else []\n    more = len(rows) > len(page)\n    return {'page': [m[1] for m in page], 'next': [page[0][0], page[0][1]] if more and page else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [91, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x1']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08']], None, 3), {'next': [6, 'm06'], 'page': ['m06', 'm07', 'm08']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})], 2: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [92, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x2']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09']], None, 3), {'next': [7, 'm07'], 'page': ['m07', 'm08', 'm09']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 2), {'next': [13, 'id13'], 'page': ['id13', 'id14']})], 3: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [93, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x3']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10']], None, 3), {'next': [8, 'm08'], 'page': ['m08', 'm09', 'm10']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})], 4: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [94, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x4']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10'], [11, 'm11']], None, 3), {'next': [9, 'm09'], 'page': ['m09', 'm10', 'm11']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 2), {'next': [13, 'id13'], 'page': ['id13', 'id14']})], 5: [('siblings share the cursor timestamp', ([[100, 'a'], [100, 'd'], [100, 'b'], [100, 'c'], [95, 'z']], [100, 'c'], 5), {'next': None, 'page': ['z', 'a', 'b']}), ('equal timestamps across a page edge', ([[50, 'b'], [50, 'Q'], [50, 'a'], [40, 'x5']], None, 2), {'next': [50, 'a'], 'page': ['a', 'b']}), ('first page', ([[1, 'm01'], [2, 'm02'], [3, 'm03'], [4, 'm04'], [5, 'm05'], [6, 'm06'], [7, 'm07'], [8, 'm08'], [9, 'm09'], [10, 'm10'], [11, 'm11'], [12, 'm12']], None, 3), {'next': [10, 'm10'], 'page': ['m10', 'm11', 'm12']}), ('exact multiple', ([[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']], [5, 'e'], 4), {'next': None, 'page': ['a', 'b', 'c', 'd']}), ('zero limit', ([[1, 'a'], [2, 'b']], None, 0), {'next': None, 'page': []}), ('middle page', ([[10, 'id10'], [11, 'id11'], [12, 'id12'], [13, 'id13'], [14, 'id14'], [15, 'id15'], [16, 'id16'], [17, 'id17'], [18, 'id18'], [19, 'id19']], [15, 'id15'], 3), {'next': [12, 'id12'], 'page': ['id12', 'id13', 'id14']})]}\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-history-page-cursor-composite-cursor","generated_at":"2026-09-29T14:49:12.819840+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Infinite-scroll history must neither skip nor duplicate messages that share a timestamp.","repair":"Use `(m[0], m[1]) < (cursor[0], cursor[1])` for the composite cursor decision and keep every other rule of the model unchanged.","root_cause":"The composite cursor decision evaluates `m[0] < cursor[0]` where the contract requires `(m[0], m[1]) < (cursor[0], cursor[1])`.","sha256":"b45094b1c6bf708776eb8238df7589ed33607ac494b83f55ce39eb273be16836","title":"Page older history with a composite (ts, id) cursor: composite cursor · 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":40.698,"exit_code":1,"observations":[{"actual":{"next":null,"page":["z","a","b","d"]},"check":"siblings share the cursor timestamp","expected":{"next":null,"page":["z","a","b"]},"passed":false},{"actual":{"next":[50,"a"],"page":["a","b"]},"check":"equal timestamps across a page edge","expected":{"next":[50,"a"],"page":["a","b"]},"passed":true},{"actual":{"next":[6,"m06"],"page":["m06","m07","m08"]},"check":"first page","expected":{"next":[6,"m06"],"page":["m06","m07","m08"]},"passed":true},{"actual":{"next":null,"page":["a","b","c","d"]},"check":"exact multiple","expected":{"next":null,"page":["a","b","c","d"]},"passed":true},{"actual":{"next":null,"page":[]},"check":"zero limit","expected":{"next":null,"page":[]},"passed":true},{"actual":{"next":[12,"id12"],"page":["id12","id13","id14"]},"check":"middle page","expected":{"next":[12,"id12"],"page":["id12","id13","id14"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"siblings share the cursor timestamp\", \"actual\": {\"page\": [\"z\", \"a\", \"b\", \"d\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": [\"z\", \"a\", \"b\"]}, \"passed\": false}, {\"check\": \"equal timestamps across a page edge\", \"actual\": {\"page\": [\"a\", \"b\"], \"next\": [50, \"a\"]}, \"expected\": {\"next\": [50, \"a\"], \"page\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"first page\", \"actual\": {\"page\": [\"m06\", \"m07\", \"m08\"], \"next\": [6, \"m06\"]}, \"expected\": {\"next\": [6, \"m06\"], \"page\": [\"m06\", \"m07\", \"m08\"]}, \"passed\": true}, {\"check\": \"exact multiple\", \"actual\": {\"page\": [\"a\", \"b\", \"c\", \"d\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": [\"a\", \"b\", \"c\", \"d\"]}, \"passed\": true}, {\"check\": \"zero limit\", \"actual\": {\"page\": [], \"next\": null}, \"expected\": {\"next\": null, \"page\": []}, \"passed\": true}, {\"check\": \"middle page\", \"actual\": {\"page\": [\"id12\", \"id13\", \"id14\"], \"next\": [12, \"id12\"]}, \"expected\": {\"next\": [12, \"id12\"], \"page\": [\"id12\", \"id13\", \"id14\"]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.577,"exit_code":1,"observations":[{"actual":{"next":null,"page":["z"]},"check":"siblings share the cursor timestamp","expected":{"next":null,"page":["z","a","b"]},"passed":false},{"actual":{"next":[50,"a"],"page":["a","b"]},"check":"equal timestamps across a page edge","expected":{"next":[50,"a"],"page":["a","b"]},"passed":true},{"actual":{"next":[6,"m06"],"page":["m06","m07","m08"]},"check":"first page","expected":{"next":[6,"m06"],"page":["m06","m07","m08"]},"passed":true},{"actual":{"next":null,"page":["a","b","c","d"]},"check":"exact multiple","expected":{"next":null,"page":["a","b","c","d"]},"passed":true},{"actual":{"next":null,"page":[]},"check":"zero limit","expected":{"next":null,"page":[]},"passed":true},{"actual":{"next":[12,"id12"],"page":["id12","id13","id14"]},"check":"middle page","expected":{"next":[12,"id12"],"page":["id12","id13","id14"]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"siblings share the cursor timestamp\", \"actual\": {\"page\": [\"z\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": [\"z\", \"a\", \"b\"]}, \"passed\": false}, {\"check\": \"equal timestamps across a page edge\", \"actual\": {\"page\": [\"a\", \"b\"], \"next\": [50, \"a\"]}, \"expected\": {\"next\": [50, \"a\"], \"page\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"first page\", \"actual\": {\"page\": [\"m06\", \"m07\", \"m08\"], \"next\": [6, \"m06\"]}, \"expected\": {\"next\": [6, \"m06\"], \"page\": [\"m06\", \"m07\", \"m08\"]}, \"passed\": true}, {\"check\": \"exact multiple\", \"actual\": {\"page\": [\"a\", \"b\", \"c\", \"d\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": [\"a\", \"b\", \"c\", \"d\"]}, \"passed\": true}, {\"check\": \"zero limit\", \"actual\": {\"page\": [], \"next\": null}, \"expected\": {\"next\": null, \"page\": []}, \"passed\": true}, {\"check\": \"middle page\", \"actual\": {\"page\": [\"id12\", \"id13\", \"id14\"], \"next\": [12, \"id12\"]}, \"expected\": {\"next\": [12, \"id12\"], \"page\": [\"id12\", \"id13\", \"id14\"]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.921,"exit_code":0,"observations":[{"actual":{"next":null,"page":["z","a","b"]},"check":"siblings share the cursor timestamp","expected":{"next":null,"page":["z","a","b"]},"passed":true},{"actual":{"next":[50,"a"],"page":["a","b"]},"check":"equal timestamps across a page edge","expected":{"next":[50,"a"],"page":["a","b"]},"passed":true},{"actual":{"next":[6,"m06"],"page":["m06","m07","m08"]},"check":"first page","expected":{"next":[6,"m06"],"page":["m06","m07","m08"]},"passed":true},{"actual":{"next":null,"page":["a","b","c","d"]},"check":"exact multiple","expected":{"next":null,"page":["a","b","c","d"]},"passed":true},{"actual":{"next":null,"page":[]},"check":"zero limit","expected":{"next":null,"page":[]},"passed":true},{"actual":{"next":[12,"id12"],"page":["id12","id13","id14"]},"check":"middle page","expected":{"next":[12,"id12"],"page":["id12","id13","id14"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"siblings share the cursor timestamp\", \"actual\": {\"page\": [\"z\", \"a\", \"b\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": [\"z\", \"a\", \"b\"]}, \"passed\": true}, {\"check\": \"equal timestamps across a page edge\", \"actual\": {\"page\": [\"a\", \"b\"], \"next\": [50, \"a\"]}, \"expected\": {\"next\": [50, \"a\"], \"page\": [\"a\", \"b\"]}, \"passed\": true}, {\"check\": \"first page\", \"actual\": {\"page\": [\"m06\", \"m07\", \"m08\"], \"next\": [6, \"m06\"]}, \"expected\": {\"next\": [6, \"m06\"], \"page\": [\"m06\", \"m07\", \"m08\"]}, \"passed\": true}, {\"check\": \"exact multiple\", \"actual\": {\"page\": [\"a\", \"b\", \"c\", \"d\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": [\"a\", \"b\", \"c\", \"d\"]}, \"passed\": true}, {\"check\": \"zero limit\", \"actual\": {\"page\": [], \"next\": null}, \"expected\": {\"next\": null, \"page\": []}, \"passed\": true}, {\"check\": \"middle page\", \"actual\": {\"page\": [\"id12\", \"id13\", \"id14\"], \"next\": [12, \"id12\"]}, \"expected\": {\"next\": [12, \"id12\"], \"page\": [\"id12\", \"id13\", \"id14\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}