{"abstract":"Scrolling up loads the very oldest messages instead of those just above the view.","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":"Slicing from the end without guarding zero returns the whole history for a zero limit. The attempted `rows[-limit:]` still disagrees with a fixture.","family":"w2-chat_ordering_and_read_receipts-history-page-cursor-newest-slice","id":"FA-76071","implementations":{"attempt":{"sha256":"44046c6300932e66ae7e76200c199873de4fd3d4ae16841d1539386532269033","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:]\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":"801bb14c3c4ce644bcc293f5e599615e70d5439c1f1bd32bbd8718db2260c34d","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]\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-newest-slice","generated_at":"2026-09-29T14:49:12.852996+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 `rows[-limit:] if limit > 0 else []` for the newest slice decision and keep every other rule of the model unchanged.","root_cause":"The newest slice decision evaluates `rows[:limit]` where the contract requires `rows[-limit:] if limit > 0 else []`.","sha256":"ff58c9bae0e75c158043af062f24f7f05547a99dd9df26082a30c9e850f38874","title":"Page older history with a composite (ts, id) cursor: newest slice · 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":42.683,"exit_code":1,"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":["a","b"]},"check":"zero limit","expected":{"next":null,"page":[]},"passed":false},{"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\"], \"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\": [\"a\", \"b\"], \"next\": null}, \"expected\": {\"next\": null, \"page\": []}, \"passed\": false}, {\"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":42.817,"exit_code":1,"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":[40,"x1"],"page":["x1","Q"]},"check":"equal timestamps across a page edge","expected":{"next":[50,"a"],"page":["a","b"]},"passed":false},{"actual":{"next":[1,"m01"],"page":["m01","m02","m03"]},"check":"first page","expected":{"next":[6,"m06"],"page":["m06","m07","m08"]},"passed":false},{"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":[10,"id10"],"page":["id10","id11","id12"]},"check":"middle page","expected":{"next":[12,"id12"],"page":["id12","id13","id14"]},"passed":false}],"passed":false,"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\": [\"x1\", \"Q\"], \"next\": [40, \"x1\"]}, \"expected\": {\"next\": [50, \"a\"], \"page\": [\"a\", \"b\"]}, \"passed\": false}, {\"check\": \"first page\", \"actual\": {\"page\": [\"m01\", \"m02\", \"m03\"], \"next\": [1, \"m01\"]}, \"expected\": {\"next\": [6, \"m06\"], \"page\": [\"m06\", \"m07\", \"m08\"]}, \"passed\": false}, {\"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\": [\"id10\", \"id11\", \"id12\"], \"next\": [10, \"id10\"]}, \"expected\": {\"next\": [12, \"id12\"], \"page\": [\"id12\", \"id13\", \"id14\"]}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.369,"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"}