{"abstract":"The table server total result violates the stipulated remote table page response admission contract.","category":"Table interactions","checks":6,"contract":"Admit remote table pages only for the exact request/query/offset. Errors retain displayed rows, duplicate row IDs retain first placement and last payload, successful totals may shrink, loading and old errors clear, and only explicit server deletions prune cross-page selection.","evaluation_group":"s3-table-interactions-page-response","failed_approach":"The attempted repair \"out['total']=max(state['total'],response['total'])\" still loses a required part of the table contract.","family":"s3-table-interactions-page-response-server-total","id":"FA-37621","implementations":{"attempt":{"sha256":"71d620c1f1070c36f73e508cc8cee07b237f4ab80841bbbf5912a4a628b73dc2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(state, response):\n    out=dict(state)\n    if response['request']!=state['request']: return out\n    if response['query']!=state['query']: return out\n    if response['offset']!=state['offset']: return out\n    if response.get('error') is not None:\n        out.update(loading=False,error=response['error']); return out\n    ids=[]; by={}\n    for row in response['rows']:\n        if row['id'] not in by: ids.append(row['id'])\n        by[row['id']]=row\n    out['rows']=[by[k] for k in ids]\n    out['total']=max(state['total'],response['total'])\n    out['loading']=False; out['error']=None\n    out['has_next']=response['offset']+len(ids)<response['total']\n    out['selected']=[k for k in state['selected'] if k not in response.get('deleted',[])]\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':1},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 1}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 2:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':2},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 2}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 3:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':3},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 3}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 4:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':4},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 4}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 5:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':5},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 5}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\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":"606d49cc1a95decd22e016d1f3639f627526d899d7ca9ed674e6bcf50f8f0022","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(state, response):\n    out=dict(state)\n    if response['request']!=state['request']: return out\n    if response['query']!=state['query']: return out\n    if response['offset']!=state['offset']: return out\n    if response.get('error') is not None:\n        out.update(loading=False,error=response['error']); return out\n    ids=[]; by={}\n    for row in response['rows']:\n        if row['id'] not in by: ids.append(row['id'])\n        by[row['id']]=row\n    out['rows']=[by[k] for k in ids]\n    out['total']=len(ids)\n    out['loading']=False; out['error']=None\n    out['has_next']=response['offset']+len(ids)<response['total']\n    out['selected']=[k for k in state['selected'] if k not in response.get('deleted',[])]\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':1},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 1}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 2:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':2},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 2}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 3:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':3},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 3}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 4:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':4},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 4}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 5:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':5},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 5}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\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":"2c5461c5d6c7c09935dcae058c668a07a34c4457ebceb4d2c83f8e8f6623f2ce","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(state, response):\n    out=dict(state)\n    if response['request']!=state['request']: return out\n    if response['query']!=state['query']: return out\n    if response['offset']!=state['offset']: return out\n    if response.get('error') is not None:\n        out.update(loading=False,error=response['error']); return out\n    ids=[]; by={}\n    for row in response['rows']:\n        if row['id'] not in by: ids.append(row['id'])\n        by[row['id']]=row\n    out['rows']=[by[k] for k in ids]\n    out['total']=response['total']\n    out['loading']=False; out['error']=None\n    out['has_next']=response['offset']+len(ids)<response['total']\n    out['selected']=[k for k in state['selected'] if k not in response.get('deleted',[])]\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':1},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 1}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 2:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':2},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 2}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 3:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':3},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 3}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 4:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':4},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 4}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\n\nif N == 5:\n    check('fresh deduped page', solve({'request':2,'query':'q','offset':2,'rows':[{'id':'old'}],'total':20,'loading':True,'error':'old error','selected':['a','off','gone']}, {'request':2,'query':'q','offset':2,'rows':[{'id':'a','v':1},{'id':'b','v':5},{'id':'a','v':3}],'total':4,'deleted':['gone']}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [{'id': 'a', 'v': 3}, {'id': 'b', 'v': 5}], 'total': 4, 'loading': False, 'error': None, 'selected': ['a', 'off'], 'has_next': False})\n    check('late request', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':1,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old query', solve({'request':2,'query':'q','offset':0,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'old','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('old offset', solve({'request':2,'query':'q','offset':2,'rows':[],'total':0,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 2, 'rows': [], 'total': 0, 'loading': True, 'error': None, 'selected': []})\n    check('error retains page', solve({'request':2,'query':'q','offset':0,'rows':[{'id':'old'}],'total':1,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0,'error':'failed'}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [{'id': 'old'}], 'total': 1, 'loading': False, 'error': 'failed', 'selected': []})\n    check('empty final page', solve({'request':2,'query':'q','offset':0,'rows':[],'total':2,'loading':True,'error':None,'selected':[]}, {'request':2,'query':'q','offset':0,'rows':[],'total':0}), {'request': 2, 'query': 'q', 'offset': 0, 'rows': [], 'total': 0, 'loading': False, 'error': None, 'selected': [], 'has_next': False})\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":"Requests are modeled as explicit scalar ownership tokens with integer offsets/totals; actual network scheduling is outside scope. 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-response-server-total","generated_at":"2026-09-29T14:43:02.930660+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates remote table page response admission, including adversarial row/column relationships.","repair":"Apply the complete server total rule: out['total']=response['total'].","root_cause":"The server total decision uses \"out['total']=len(ids)\" instead of \"out['total']=response['total']\".","sha256":"2b466a9c9d005335bb34db6e4a5edc17fe00bd1d5c1ec26d4783c265fc3a6181","title":"Remote table page response admission: server total · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.943,"exit_code":1,"observations":[{"actual":{"error":null,"has_next":false,"loading":false,"offset":2,"query":"q","request":2,"rows":[{"id":"a","v":3},{"id":"b","v":1}],"selected":["a","off"],"total":20},"check":"fresh deduped page","expected":{"error":null,"has_next":false,"loading":false,"offset":2,"query":"q","request":2,"rows":[{"id":"a","v":3},{"id":"b","v":1}],"selected":["a","off"],"total":4},"passed":false},{"actual":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"late request","expected":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"old query","expected":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":null,"loading":true,"offset":2,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"old offset","expected":{"error":null,"loading":true,"offset":2,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":"failed","loading":false,"offset":0,"query":"q","request":2,"rows":[{"id":"old"}],"selected":[],"total":1},"check":"error retains page","expected":{"error":"failed","loading":false,"offset":0,"query":"q","request":2,"rows":[{"id":"old"}],"selected":[],"total":1},"passed":true},{"actual":{"error":null,"has_next":false,"loading":false,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":2},"check":"empty final page","expected":{"error":null,"has_next":false,"loading":false,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fresh deduped page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [{\"id\": \"a\", \"v\": 3}, {\"id\": \"b\", \"v\": 1}], \"total\": 20, \"loading\": false, \"error\": null, \"selected\": [\"a\", \"off\"], \"has_next\": false}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [{\"id\": \"a\", \"v\": 3}, {\"id\": \"b\", \"v\": 1}], \"total\": 4, \"loading\": false, \"error\": null, \"selected\": [\"a\", \"off\"], \"has_next\": false}, \"passed\": false}, {\"check\": \"late request\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"old query\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"old offset\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"error retains page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [{\"id\": \"old\"}], \"total\": 1, \"loading\": false, \"error\": \"failed\", \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [{\"id\": \"old\"}], \"total\": 1, \"loading\": false, \"error\": \"failed\", \"selected\": []}, \"passed\": true}, {\"check\": \"empty final page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 2, \"loading\": false, \"error\": null, \"selected\": [], \"has_next\": false}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": false, \"error\": null, \"selected\": [], \"has_next\": false}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.198,"exit_code":1,"observations":[{"actual":{"error":null,"has_next":false,"loading":false,"offset":2,"query":"q","request":2,"rows":[{"id":"a","v":3},{"id":"b","v":1}],"selected":["a","off"],"total":2},"check":"fresh deduped page","expected":{"error":null,"has_next":false,"loading":false,"offset":2,"query":"q","request":2,"rows":[{"id":"a","v":3},{"id":"b","v":1}],"selected":["a","off"],"total":4},"passed":false},{"actual":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"late request","expected":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"old query","expected":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":null,"loading":true,"offset":2,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"old offset","expected":{"error":null,"loading":true,"offset":2,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":"failed","loading":false,"offset":0,"query":"q","request":2,"rows":[{"id":"old"}],"selected":[],"total":1},"check":"error retains page","expected":{"error":"failed","loading":false,"offset":0,"query":"q","request":2,"rows":[{"id":"old"}],"selected":[],"total":1},"passed":true},{"actual":{"error":null,"has_next":false,"loading":false,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"empty final page","expected":{"error":null,"has_next":false,"loading":false,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fresh deduped page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [{\"id\": \"a\", \"v\": 3}, {\"id\": \"b\", \"v\": 1}], \"total\": 2, \"loading\": false, \"error\": null, \"selected\": [\"a\", \"off\"], \"has_next\": false}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [{\"id\": \"a\", \"v\": 3}, {\"id\": \"b\", \"v\": 1}], \"total\": 4, \"loading\": false, \"error\": null, \"selected\": [\"a\", \"off\"], \"has_next\": false}, \"passed\": false}, {\"check\": \"late request\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"old query\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"old offset\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"error retains page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [{\"id\": \"old\"}], \"total\": 1, \"loading\": false, \"error\": \"failed\", \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [{\"id\": \"old\"}], \"total\": 1, \"loading\": false, \"error\": \"failed\", \"selected\": []}, \"passed\": true}, {\"check\": \"empty final page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": false, \"error\": null, \"selected\": [], \"has_next\": false}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": false, \"error\": null, \"selected\": [], \"has_next\": false}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.076,"exit_code":0,"observations":[{"actual":{"error":null,"has_next":false,"loading":false,"offset":2,"query":"q","request":2,"rows":[{"id":"a","v":3},{"id":"b","v":1}],"selected":["a","off"],"total":4},"check":"fresh deduped page","expected":{"error":null,"has_next":false,"loading":false,"offset":2,"query":"q","request":2,"rows":[{"id":"a","v":3},{"id":"b","v":1}],"selected":["a","off"],"total":4},"passed":true},{"actual":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"late request","expected":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"old query","expected":{"error":null,"loading":true,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":null,"loading":true,"offset":2,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"old offset","expected":{"error":null,"loading":true,"offset":2,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true},{"actual":{"error":"failed","loading":false,"offset":0,"query":"q","request":2,"rows":[{"id":"old"}],"selected":[],"total":1},"check":"error retains page","expected":{"error":"failed","loading":false,"offset":0,"query":"q","request":2,"rows":[{"id":"old"}],"selected":[],"total":1},"passed":true},{"actual":{"error":null,"has_next":false,"loading":false,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"check":"empty final page","expected":{"error":null,"has_next":false,"loading":false,"offset":0,"query":"q","request":2,"rows":[],"selected":[],"total":0},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fresh deduped page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [{\"id\": \"a\", \"v\": 3}, {\"id\": \"b\", \"v\": 1}], \"total\": 4, \"loading\": false, \"error\": null, \"selected\": [\"a\", \"off\"], \"has_next\": false}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [{\"id\": \"a\", \"v\": 3}, {\"id\": \"b\", \"v\": 1}], \"total\": 4, \"loading\": false, \"error\": null, \"selected\": [\"a\", \"off\"], \"has_next\": false}, \"passed\": true}, {\"check\": \"late request\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"old query\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"old offset\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 2, \"rows\": [], \"total\": 0, \"loading\": true, \"error\": null, \"selected\": []}, \"passed\": true}, {\"check\": \"error retains page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [{\"id\": \"old\"}], \"total\": 1, \"loading\": false, \"error\": \"failed\", \"selected\": []}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [{\"id\": \"old\"}], \"total\": 1, \"loading\": false, \"error\": \"failed\", \"selected\": []}, \"passed\": true}, {\"check\": \"empty final page\", \"actual\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": false, \"error\": null, \"selected\": [], \"has_next\": false}, \"expected\": {\"request\": 2, \"query\": \"q\", \"offset\": 0, \"rows\": [], \"total\": 0, \"loading\": false, \"error\": null, \"selected\": [], \"has_next\": false}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}