{"abstract":"The table placeholder count 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 'range(total+1)' still loses a required part of the table contract.","family":"s3-table-interactions-page-slots-placeholder-count","id":"FA-37641","implementations":{"attempt":{"sha256":"2770955fe8748f078ab9d44aa42d54d5b85512a30ccaa4cf301e40b1745cca6d","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+1)]\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"},"broken":{"sha256":"c59e33bf9bdf39d629626ffa66b10d613d8b0b804a39a76ee614a3eaa704e61d","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(max(0,total-1))]\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"},"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-placeholder-count","generated_at":"2026-09-29T14:43:03.180429+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 placeholder count rule: range(total).","root_cause":"The placeholder count decision uses 'range(max(0,total-1))' instead of 'range(total)'.","sha256":"8cebf9cb36ef30a1c1525dd8951cba70459ac5333c70d39151dcc71897a615f3","title":"Sparse loaded table row slots: placeholder count · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.991,"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":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},{"error":"failed","height":9,"index":7,"key":["placeholder",7],"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},{"error":null,"height":9,"index":5,"key":["placeholder",5],"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":false},{"actual":{"requests":[0,2],"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},{"error":null,"height":9,"index":3,"key":["placeholder",3],"kind":"placeholder","loading":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":false},{"actual":{"requests":[0],"slots":[{"error":null,"height":9,"index":0,"key":["placeholder",0],"kind":"placeholder","loading":false}]},"check":"empty table","expected":{"requests":[],"slots":[]},"passed":false},{"actual":{"requests":[0,2,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},{"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},{"error":null,"height":9,"index":4,"key":["placeholder",4],"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":false},{"actual":{"requests":[2],"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},{"error":null,"height":9,"index":2,"key":["placeholder",2],"kind":"placeholder","loading":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":false}],"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\": 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\"}, {\"kind\": \"placeholder\", \"index\": 7, \"key\": [\"placeholder\", 7], \"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}, {\"kind\": \"placeholder\", \"index\": 5, \"key\": [\"placeholder\", 5], \"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\": false}, {\"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}, {\"kind\": \"placeholder\", \"index\": 3, \"key\": [\"placeholder\", 3], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2]}, \"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\": false}, {\"check\": \"empty table\", \"actual\": {\"slots\": [{\"kind\": \"placeholder\", \"index\": 0, \"key\": [\"placeholder\", 0], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0]}, \"expected\": {\"slots\": [], \"requests\": []}, \"passed\": false}, {\"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}, {\"kind\": \"placeholder\", \"index\": 4, \"key\": [\"placeholder\", 4], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [0, 2, 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\": \"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\": false}, {\"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}, {\"kind\": \"placeholder\", \"index\": 2, \"key\": [\"placeholder\", 2], \"height\": 9, \"loading\": false, \"error\": null}], \"requests\": [2]}, \"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\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.253,"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":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}]},"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],"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}]},"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":false},{"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}]},"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":false},{"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}]},"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":false},{"actual":{"requests":[],"slots":[{"index":0,"key":["row","new"],"kind":"row","row":{"id":"new"},"selected":true}]},"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":false}],"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\": 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}], \"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}], \"requests\": [0]}, \"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\": false}, {\"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}], \"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\": false}, {\"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}], \"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\": false}, {\"check\": \"replacement page\", \"actual\": {\"slots\": [{\"kind\": \"row\", \"index\": 0, \"key\": [\"row\", \"new\"], \"row\": {\"id\": \"new\"}, \"selected\": true}], \"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\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.74,"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"}