{"abstract":"The table slot page alignment result violates the stipulated sparse loaded table row slots contract.","category":"Table interactions","checks":6,"contract":"Sparse table slots retain absolute indices across unloaded pages, distinguish placeholder and stable row keys, clip loaded pages to declared total, decorate only placeholders with page loading/errors, and schedule each missing nonfailed noninflight page once.","evaluation_group":"s3-table-interactions-page-slots","failed_approach":"The attempted repair \"page=(s['index']//size+1)*size\" still loses a required part of the table contract.","family":"s3-table-interactions-page-slots-slot-page-alignment","id":"FA-37671","implementations":{"attempt":{"sha256":"7890dcce19e7bd799daac262641d32955821f1a8e19394d65e953843cfee12eb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(total, pages, size, loading, errors, selected, estimate):\n    slots=[{'kind':'placeholder','index':i,'key':('placeholder',i),'height':estimate} for i in range(total)]\n    for offset,items in pages:\n        for j,row in enumerate(items):\n            i=offset+j\n            if not 0<=i<total: continue\n            if i>=len(slots): continue\n            slots[i]={'kind':'row','index':i,'key':('row',row['id']),'row':row,'selected':row['id'] in selected}\n    for s in slots:\n        page=(s['index']//size+1)*size\n        if s['kind']=='placeholder': s['loading']=page in loading; s['error']=errors.get(page)\n    return {'slots':slots,'requests':sorted({(s['index']//size)*size for s in slots if s['kind']=='placeholder' and (s['index']//size)*size not in loading and (s['index']//size)*size not in errors})}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':1}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 1}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 2:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':2}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 2}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 3:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':3}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 3}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 4:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':4}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 4}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 5:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':5}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 5}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\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":"facd399642825db175d2d7d1d451eea01128ac9a541225266bb45facb42567b4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(total, pages, size, loading, errors, selected, estimate):\n    slots=[{'kind':'placeholder','index':i,'key':('placeholder',i),'height':estimate} for i in range(total)]\n    for offset,items in pages:\n        for j,row in enumerate(items):\n            i=offset+j\n            if not 0<=i<total: continue\n            if i>=len(slots): continue\n            slots[i]={'kind':'row','index':i,'key':('row',row['id']),'row':row,'selected':row['id'] in selected}\n    for s in slots:\n        page=s['index']\n        if s['kind']=='placeholder': s['loading']=page in loading; s['error']=errors.get(page)\n    return {'slots':slots,'requests':sorted({(s['index']//size)*size for s in slots if s['kind']=='placeholder' and (s['index']//size)*size not in loading and (s['index']//size)*size not in errors})}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':1}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 1}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 2:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':2}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 2}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 3:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':3}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 3}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 4:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':4}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 4}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 5:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':5}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 5}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\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":"dc8cb6c4ee073b0547ec45ff509a935c49897a8c671a07d16eac821595565ea8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(total, pages, size, loading, errors, selected, estimate):\n    slots=[{'kind':'placeholder','index':i,'key':('placeholder',i),'height':estimate} for i in range(total)]\n    for offset,items in pages:\n        for j,row in enumerate(items):\n            i=offset+j\n            if not 0<=i<total: continue\n            if i>=len(slots): continue\n            slots[i]={'kind':'row','index':i,'key':('row',row['id']),'row':row,'selected':row['id'] in selected}\n    for s in slots:\n        page=(s['index']//size)*size\n        if s['kind']=='placeholder': s['loading']=page in loading; s['error']=errors.get(page)\n    return {'slots':slots,'requests':sorted({(s['index']//size)*size for s in slots if s['kind']=='placeholder' and (s['index']//size)*size not in loading and (s['index']//size)*size not in errors})}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':1}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 1}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 2:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':2}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 2}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 3:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':3}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 3}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 4:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':4}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 4}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\nif N == 5:\n    check('partial loaded pages', solve(7, [(0,[{'id':'a'},{'id':'b'}]),(4,[{'id':'e','v':5}])], 2, [2], {6:'failed'}, ['e'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': True, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': True, 'error': None}, {'kind': 'row', 'index': 4, 'key': ('row', 'e'), 'row': {'id': 'e', 'v': 5}, 'selected': True}, {'kind': 'placeholder', 'index': 5, 'key': ('placeholder', 5), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 6, 'key': ('placeholder', 6), 'height': 9, 'loading': False, 'error': 'failed'}], 'requests': [4]})\n    check('offset loaded rows', solve(5, [(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, ['c'], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': True}, {'kind': 'row', 'index': 3, 'key': ('row', 'd'), 'row': {'id': 'd'}, 'selected': False}, {'kind': 'placeholder', 'index': 4, 'key': ('placeholder', 4), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 4]})\n    check('outside total', solve(3, [(-1,[{'id':'x'},{'id':'a'}]),(2,[{'id':'c'},{'id':'d'}])], 2, [], {}, [], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'a'), 'row': {'id': 'a'}, 'selected': False}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'row', 'index': 2, 'key': ('row', 'c'), 'row': {'id': 'c'}, 'selected': False}], 'requests': [0]})\n    check('empty table', solve(0, [], 2, [], {}, [], 9), {'slots': [], 'requests': []})\n    check('all placeholders', solve(4, [], 2, [], {}, [], 9), {'slots': [{'kind': 'placeholder', 'index': 0, 'key': ('placeholder', 0), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 1, 'key': ('placeholder', 1), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 2, 'key': ('placeholder', 2), 'height': 9, 'loading': False, 'error': None}, {'kind': 'placeholder', 'index': 3, 'key': ('placeholder', 3), 'height': 9, 'loading': False, 'error': None}], 'requests': [0, 2]})\n    check('replacement page', solve(2, [(0,[{'id':'a'},{'id':'b'}]),(0,[{'id':'new'}])], 2, [0], {0:'stale'}, ['new'], 9), {'slots': [{'kind': 'row', 'index': 0, 'key': ('row', 'new'), 'row': {'id': 'new'}, 'selected': True}, {'kind': 'row', 'index': 1, 'key': ('row', 'b'), 'row': {'id': 'b'}, 'selected': False}], 'requests': []})\n\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":"Total is a nonnegative integer and page size is positive; page offsets are integral and may clip outside the table. Deterministic offline table UI model; no browser, DOM, framework, or standards conformance is claimed. 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":"s3-table-interactions-page-slots-slot-page-alignment","generated_at":"2026-09-29T14:43:03.513959+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates sparse loaded table row slots, including adversarial row/column relationships.","repair":"Apply the complete slot page alignment rule: page=(s['index']//size)*size.","root_cause":"The slot page alignment decision uses \"page=s['index']\" instead of \"page=(s['index']//size)*size\".","sha256":"e8589051c534621a0d0874fa8ee0fa94b5a844c859d0a51368bff40fb887991c","title":"Sparse loaded table row slots: slot page alignment · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.013,"exit_code":1,"observations":[{"actual":{"requests":[4],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false},{"index":4,"key":["row","e"],"kind":"row","row":{"id":"e","v":1},"selected":true},{"error":"failed","height":9,"index":5,"key":["placeholder",5],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":6,"key":["placeholder",6],"kind":"placeholder","loading":false}]},"check":"partial loaded pages","expected":{"requests":[4],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":true},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":true},{"index":4,"key":["row","e"],"kind":"row","row":{"id":"e","v":1},"selected":true},{"error":null,"height":9,"index":5,"key":["placeholder",5],"kind":"placeholder","loading":false},{"error":"failed","height":9,"index":6,"key":["placeholder",6],"kind":"placeholder","loading":false}]},"passed":false},{"actual":{"requests":[0,4],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":true},{"index":3,"key":["row","d"],"kind":"row","row":{"id":"d"},"selected":false},{"error":null,"height":9,"index":4,"key":["placeholder",4],"kind":"placeholder","loading":false}]},"check":"offset loaded rows","expected":{"requests":[0,4],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":true},{"index":3,"key":["row","d"],"kind":"row","row":{"id":"d"},"selected":false},{"error":null,"height":9,"index":4,"key":["placeholder",4],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[0],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":false}]},"check":"outside total","expected":{"requests":[0],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":false}]},"passed":true},{"actual":{"requests":[],"slots":[]},"check":"empty table","expected":{"requests":[],"slots":[]},"passed":true},{"actual":{"requests":[0,2],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false}]},"check":"all placeholders","expected":{"requests":[0,2],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false}]},"check":"replacement page","expected":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false}]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"partial loaded pages\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 4, \"key\": [\"row\", \"e\"], \"row\": {\"id\": \"e\", \"v\": 1}, \"selected\": true}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"height\": 9, \"loading\": false, \"error\": \"failed\"}, {\"kind\": \"placeholder\", \"index\": 6, \"key\": [\"placeholder\", 6], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [4]}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"row\", \"index\": 4, \"key\": [\"row\", \"e\"], \"row\": {\"id\": \"e\", \"v\": 1}, \"selected\": true}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 6, \"key\": [\"placeholder\", 6], \"height\": 9, \"loading\": false, \"error\": \"failed\"}], \"requests\": [4]}, \"passed\": false}, {\"check\": \"offset loaded rows\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 3, \"key\": [\"row\", \"d\"], \"row\": {\"id\": \"d\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 4]}, \"expected\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 3, \"key\": [\"row\", \"d\"], \"row\": {\"id\": \"d\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 4]}, \"passed\": true}, {\"check\": \"outside total\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": false}], \"requests\": [0]}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": false}], \"requests\": [0]}, \"passed\": true}, {\"check\": \"empty table\", \"actual\": {\"slots\": [], \"requests\": []}, \"expected\": {\"slots\": [], \"requests\": []}, \"passed\": true}, {\"check\": \"all placeholders\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"expected\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"passed\": true}, {\"check\": \"replacement page\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}], \"requests\": []}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}], \"requests\": []}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":47.074,"exit_code":1,"observations":[{"actual":{"requests":[4],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":true},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false},{"index":4,"key":["row","e"],"kind":"row","row":{"id":"e","v":1},"selected":true},{"error":null,"height":9,"index":5,"key":["placeholder",5],"kind":"placeholder","loading":false},{"error":"failed","height":9,"index":6,"key":["placeholder",6],"kind":"placeholder","loading":false}]},"check":"partial loaded pages","expected":{"requests":[4],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":true},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":true},{"index":4,"key":["row","e"],"kind":"row","row":{"id":"e","v":1},"selected":true},{"error":null,"height":9,"index":5,"key":["placeholder",5],"kind":"placeholder","loading":false},{"error":"failed","height":9,"index":6,"key":["placeholder",6],"kind":"placeholder","loading":false}]},"passed":false},{"actual":{"requests":[0,4],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":true},{"index":3,"key":["row","d"],"kind":"row","row":{"id":"d"},"selected":false},{"error":null,"height":9,"index":4,"key":["placeholder",4],"kind":"placeholder","loading":false}]},"check":"offset loaded rows","expected":{"requests":[0,4],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":true},{"index":3,"key":["row","d"],"kind":"row","row":{"id":"d"},"selected":false},{"error":null,"height":9,"index":4,"key":["placeholder",4],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[0],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":false}]},"check":"outside total","expected":{"requests":[0],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":false}]},"passed":true},{"actual":{"requests":[],"slots":[]},"check":"empty table","expected":{"requests":[],"slots":[]},"passed":true},{"actual":{"requests":[0,2],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false}]},"check":"all placeholders","expected":{"requests":[0,2],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false}]},"check":"replacement page","expected":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false}]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"partial loaded pages\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 4, \"key\": [\"row\", \"e\"], \"row\": {\"id\": \"e\", \"v\": 1}, \"selected\": true}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 6, \"key\": [\"placeholder\", 6], \"height\": 9, \"loading\": false, \"error\": \"failed\"}], \"requests\": [4]}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"row\", \"index\": 4, \"key\": [\"row\", \"e\"], \"row\": {\"id\": \"e\", \"v\": 1}, \"selected\": true}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 6, \"key\": [\"placeholder\", 6], \"height\": 9, \"loading\": false, \"error\": \"failed\"}], \"requests\": [4]}, \"passed\": false}, {\"check\": \"offset loaded rows\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 3, \"key\": [\"row\", \"d\"], \"row\": {\"id\": \"d\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 4]}, \"expected\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 3, \"key\": [\"row\", \"d\"], \"row\": {\"id\": \"d\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 4]}, \"passed\": true}, {\"check\": \"outside total\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": false}], \"requests\": [0]}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": false}], \"requests\": [0]}, \"passed\": true}, {\"check\": \"empty table\", \"actual\": {\"slots\": [], \"requests\": []}, \"expected\": {\"slots\": [], \"requests\": []}, \"passed\": true}, {\"check\": \"all placeholders\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"expected\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"passed\": true}, {\"check\": \"replacement page\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}], \"requests\": []}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}], \"requests\": []}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.764,"exit_code":0,"observations":[{"actual":{"requests":[4],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":true},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":true},{"index":4,"key":["row","e"],"kind":"row","row":{"id":"e","v":1},"selected":true},{"error":null,"height":9,"index":5,"key":["placeholder",5],"kind":"placeholder","loading":false},{"error":"failed","height":9,"index":6,"key":["placeholder",6],"kind":"placeholder","loading":false}]},"check":"partial loaded pages","expected":{"requests":[4],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":true},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":true},{"index":4,"key":["row","e"],"kind":"row","row":{"id":"e","v":1},"selected":true},{"error":null,"height":9,"index":5,"key":["placeholder",5],"kind":"placeholder","loading":false},{"error":"failed","height":9,"index":6,"key":["placeholder",6],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[0,4],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":true},{"index":3,"key":["row","d"],"kind":"row","row":{"id":"d"},"selected":false},{"error":null,"height":9,"index":4,"key":["placeholder",4],"kind":"placeholder","loading":false}]},"check":"offset loaded rows","expected":{"requests":[0,4],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":true},{"index":3,"key":["row","d"],"kind":"row","row":{"id":"d"},"selected":false},{"error":null,"height":9,"index":4,"key":["placeholder",4],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[0],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":false}]},"check":"outside total","expected":{"requests":[0],"slots":[{"index":0,"key":["row","a"],"kind":"row","row":{"id":"a"},"selected":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"index":2,"key":["row","c"],"kind":"row","row":{"id":"c"},"selected":false}]},"passed":true},{"actual":{"requests":[],"slots":[]},"check":"empty table","expected":{"requests":[],"slots":[]},"passed":true},{"actual":{"requests":[0,2],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false}]},"check":"all placeholders","expected":{"requests":[0,2],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":1,"key":["placeholder",1],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":false},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":false}]},"passed":true},{"actual":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false}]},"check":"replacement page","expected":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true},{"index":1,"key":["row","b"],"kind":"row","row":{"id":"b"},"selected":false}]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"partial loaded pages\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"row\", \"index\": 4, \"key\": [\"row\", \"e\"], \"row\": {\"id\": \"e\", \"v\": 1}, \"selected\": true}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 6, \"key\": [\"placeholder\", 6], \"height\": 9, \"loading\": false, \"error\": \"failed\"}], \"requests\": [4]}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": true, \"error\": null}, {\"kind\": \"row\", \"index\": 4, \"key\": [\"row\", \"e\"], \"row\": {\"id\": \"e\", \"v\": 1}, \"selected\": true}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 6, \"key\": [\"placeholder\", 6], \"height\": 9, \"loading\": false, \"error\": \"failed\"}], \"requests\": [4]}, \"passed\": true}, {\"check\": \"offset loaded rows\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 3, \"key\": [\"row\", \"d\"], \"row\": {\"id\": \"d\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 4]}, \"expected\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 3, \"key\": [\"row\", \"d\"], \"row\": {\"id\": \"d\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 4]}, \"passed\": true}, {\"check\": \"outside total\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": false}], \"requests\": [0]}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"a\"], \"row\": {\"id\": \"a\"}, \"selected\": false}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"row\", \"index\": 2, \"key\": [\"row\", \"c\"], \"row\": {\"id\": \"c\"}, \"selected\": false}], \"requests\": [0]}, \"passed\": true}, {\"check\": \"empty table\", \"actual\": {\"slots\": [], \"requests\": []}, \"expected\": {\"slots\": [], \"requests\": []}, \"passed\": true}, {\"check\": \"all placeholders\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"expected\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 1, \"key\": [\"placeholder\", 1], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"passed\": true}, {\"check\": \"replacement page\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}], \"requests\": []}, \"expected\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}, {\"kind\": \"row\", \"index\": 1, \"key\": [\"row\", \"b\"], \"row\": {\"id\": \"b\"}, \"selected\": false}], \"requests\": []}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}