{"abstract":"The table pane lookup result violates the stipulated grouped table header runs contract.","category":"Table interactions","checks":6,"contract":"Construct contiguous visible leaf runs keyed by exact group and pane, retaining leaf order and width sums. A missing group is a blank placeholder; an empty group string is an actual named group. Group resize handles require at least two visible leaves.","evaluation_group":"s3-table-interactions-header-runs","failed_approach":"The attempted repair \"pins.get(x['id'], 'left')\" still loses a required part of the table contract.","family":"s3-table-interactions-header-runs-pane-lookup","id":"FA-36946","implementations":{"attempt":{"sha256":"49d1c0ab9316b2f0481bf1497efb3676ecd1c1b8dfb9ddfe8766528dfebe96ab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(leaves, hidden, pins):\n    v = [x for x in leaves if x['id'] not in hidden]\n    runs=[]\n    for x in v:\n        pane=pins.get(x['id'], 'left')\n        key=(x.get('group'),pane)\n        if runs and runs[-1]['key']==key:\n            runs[-1]['leaves'].append(x['id'])\n            runs[-1]['width']+=x['width']\n        else: runs.append({'key':key,'leaves':[x['id']],'width':x['width']})\n    return [{'group':r['key'][0], 'pane':r['key'][1], 'span':len(r['leaves']), 'width':r['width'], 'first':r['leaves'][0], 'last':r['leaves'][-1], 'leaf_ids':r['leaves'], 'blank':r['key'][0] is None, 'resizable':len(r['leaves'])>1} for r in runs]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*1},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 5, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 2:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*2},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 3:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*3},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 9, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 4:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*4},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 11, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 5:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*5},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 13, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\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":"27e4943ba1047ec57b71b760bf25e18fdfadcdf32883abc69f172c57ad324cdd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(leaves, hidden, pins):\n    v = [x for x in leaves if x['id'] not in hidden]\n    runs=[]\n    for x in v:\n        pane='center'\n        key=(x.get('group'),pane)\n        if runs and runs[-1]['key']==key:\n            runs[-1]['leaves'].append(x['id'])\n            runs[-1]['width']+=x['width']\n        else: runs.append({'key':key,'leaves':[x['id']],'width':x['width']})\n    return [{'group':r['key'][0], 'pane':r['key'][1], 'span':len(r['leaves']), 'width':r['width'], 'first':r['leaves'][0], 'last':r['leaves'][-1], 'leaf_ids':r['leaves'], 'blank':r['key'][0] is None, 'resizable':len(r['leaves'])>1} for r in runs]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*1},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 5, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 2:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*2},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 3:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*3},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 9, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 4:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*4},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 11, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 5:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*5},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 13, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\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":"d5b3e3a7785379ac0c1516e0082450072443a8ea3ec51f9a1675bd25b1923503","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(leaves, hidden, pins):\n    v = [x for x in leaves if x['id'] not in hidden]\n    runs=[]\n    for x in v:\n        pane=pins.get(x['id'], 'center')\n        key=(x.get('group'),pane)\n        if runs and runs[-1]['key']==key:\n            runs[-1]['leaves'].append(x['id'])\n            runs[-1]['width']+=x['width']\n        else: runs.append({'key':key,'leaves':[x['id']],'width':x['width']})\n    return [{'group':r['key'][0], 'pane':r['key'][1], 'span':len(r['leaves']), 'width':r['width'], 'first':r['leaves'][0], 'last':r['leaves'][-1], 'leaf_ids':r['leaves'], 'blank':r['key'][0] is None, 'resizable':len(r['leaves'])>1} for r in runs]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*1},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 5, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 2:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*2},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 3:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*3},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 9, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 4:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*4},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 11, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\n\nif N == 5:\n    check('contiguous group', solve([{'id':'a','group':'G','width':2*5},{'id':'b','group':'G','width':3},{'id':'c','group':'H','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 2, 'width': 13, 'first': 'a', 'last': 'b', 'leaf_ids': ['a', 'b'], 'blank': False, 'resizable': True}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('pin splits group', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], [], {'a':'left'}), [{'group': 'G', 'pane': 'left', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 2, 'width': 7, 'first': 'b', 'last': 'c', 'leaf_ids': ['b', 'c'], 'blank': False, 'resizable': True}])\n    check('hidden leaves', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'G','width':3},{'id':'c','group':'G','width':4}], ['a','b'], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('blank versus empty', solve([{'id':'a','width':2},{'id':'b','group':'','width':3}], [], {}), [{'group': None, 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': True, 'resizable': False}, {'group': '', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}])\n    check('separated groups', solve([{'id':'a','group':'G','width':2},{'id':'b','group':'H','width':3},{'id':'c','group':'G','width':4}], [], {}), [{'group': 'G', 'pane': 'center', 'span': 1, 'width': 2, 'first': 'a', 'last': 'a', 'leaf_ids': ['a'], 'blank': False, 'resizable': False}, {'group': 'H', 'pane': 'center', 'span': 1, 'width': 3, 'first': 'b', 'last': 'b', 'leaf_ids': ['b'], 'blank': False, 'resizable': False}, {'group': 'G', 'pane': 'center', 'span': 1, 'width': 4, 'first': 'c', 'last': 'c', 'leaf_ids': ['c'], 'blank': False, 'resizable': False}])\n    check('empty header', solve([], [], {}), [])\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":"Leaf IDs are unique, group labels are scalar, and widths are nonnegative. 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-header-runs-pane-lookup","generated_at":"2026-09-29T14:42:56.347376+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates grouped table header runs, including adversarial row/column relationships.","repair":"Apply the complete pane lookup rule: pins.get(x['id'], 'center').","root_cause":"The pane lookup decision uses \"'center'\" instead of \"pins.get(x['id'], 'center')\".","sha256":"1be69d52b6263966982067a40884416de0c43b0e80e41659802d4c3f47935df3","title":"Grouped table header runs: pane lookup · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.001,"exit_code":1,"observations":[{"actual":[{"blank":false,"first":"a","group":"G","last":"b","leaf_ids":["a","b"],"pane":"left","resizable":true,"span":2,"width":5},{"blank":false,"first":"c","group":"H","last":"c","leaf_ids":["c"],"pane":"left","resizable":false,"span":1,"width":4}],"check":"contiguous group","expected":[{"blank":false,"first":"a","group":"G","last":"b","leaf_ids":["a","b"],"pane":"center","resizable":true,"span":2,"width":5},{"blank":false,"first":"c","group":"H","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":false},{"actual":[{"blank":false,"first":"a","group":"G","last":"c","leaf_ids":["a","b","c"],"pane":"left","resizable":true,"span":3,"width":9}],"check":"pin splits group","expected":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"left","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"G","last":"c","leaf_ids":["b","c"],"pane":"center","resizable":true,"span":2,"width":7}],"passed":false},{"actual":[{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"left","resizable":false,"span":1,"width":4}],"check":"hidden leaves","expected":[{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":false},{"actual":[{"blank":true,"first":"a","group":null,"last":"a","leaf_ids":["a"],"pane":"left","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"","last":"b","leaf_ids":["b"],"pane":"left","resizable":false,"span":1,"width":3}],"check":"blank versus empty","expected":[{"blank":true,"first":"a","group":null,"last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3}],"passed":false},{"actual":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"left","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"H","last":"b","leaf_ids":["b"],"pane":"left","resizable":false,"span":1,"width":3},{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"left","resizable":false,"span":1,"width":4}],"check":"separated groups","expected":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"H","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3},{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":false},{"actual":[],"check":"empty header","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contiguous group\", \"actual\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 2, \"width\": 5, \"first\": \"a\", \"last\": \"b\", \"leaf_ids\": [\"a\", \"b\"], \"blank\": false, \"resizable\": true}, {\"group\": \"H\", \"pane\": \"left\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 5, \"first\": \"a\", \"last\": \"b\", \"leaf_ids\": [\"a\", \"b\"], \"blank\": false, \"resizable\": true}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": false}, {\"check\": \"pin splits group\", \"actual\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 3, \"width\": 9, \"first\": \"a\", \"last\": \"c\", \"leaf_ids\": [\"a\", \"b\", \"c\"], \"blank\": false, \"resizable\": true}], \"expected\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 7, \"first\": \"b\", \"last\": \"c\", \"leaf_ids\": [\"b\", \"c\"], \"blank\": false, \"resizable\": true}], \"passed\": false}, {\"check\": \"hidden leaves\", \"actual\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": false}, {\"check\": \"blank versus empty\", \"actual\": [{\"group\": null, \"pane\": \"left\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": true, \"resizable\": false}, {\"group\": \"\", \"pane\": \"left\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": null, \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": true, \"resizable\": false}, {\"group\": \"\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}], \"passed\": false}, {\"check\": \"separated groups\", \"actual\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"H\", \"pane\": \"left\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": false}, {\"check\": \"empty header\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.946,"exit_code":1,"observations":[{"actual":[{"blank":false,"first":"a","group":"G","last":"b","leaf_ids":["a","b"],"pane":"center","resizable":true,"span":2,"width":5},{"blank":false,"first":"c","group":"H","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"check":"contiguous group","expected":[{"blank":false,"first":"a","group":"G","last":"b","leaf_ids":["a","b"],"pane":"center","resizable":true,"span":2,"width":5},{"blank":false,"first":"c","group":"H","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":true},{"actual":[{"blank":false,"first":"a","group":"G","last":"c","leaf_ids":["a","b","c"],"pane":"center","resizable":true,"span":3,"width":9}],"check":"pin splits group","expected":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"left","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"G","last":"c","leaf_ids":["b","c"],"pane":"center","resizable":true,"span":2,"width":7}],"passed":false},{"actual":[{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"check":"hidden leaves","expected":[{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":true},{"actual":[{"blank":true,"first":"a","group":null,"last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3}],"check":"blank versus empty","expected":[{"blank":true,"first":"a","group":null,"last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3}],"passed":true},{"actual":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"H","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3},{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"check":"separated groups","expected":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"H","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3},{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":true},{"actual":[],"check":"empty header","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contiguous group\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 5, \"first\": \"a\", \"last\": \"b\", \"leaf_ids\": [\"a\", \"b\"], \"blank\": false, \"resizable\": true}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 5, \"first\": \"a\", \"last\": \"b\", \"leaf_ids\": [\"a\", \"b\"], \"blank\": false, \"resizable\": true}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"pin splits group\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 3, \"width\": 9, \"first\": \"a\", \"last\": \"c\", \"leaf_ids\": [\"a\", \"b\", \"c\"], \"blank\": false, \"resizable\": true}], \"expected\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 7, \"first\": \"b\", \"last\": \"c\", \"leaf_ids\": [\"b\", \"c\"], \"blank\": false, \"resizable\": true}], \"passed\": false}, {\"check\": \"hidden leaves\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"blank versus empty\", \"actual\": [{\"group\": null, \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": true, \"resizable\": false}, {\"group\": \"\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": null, \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": true, \"resizable\": false}, {\"group\": \"\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"separated groups\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"empty header\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.612,"exit_code":0,"observations":[{"actual":[{"blank":false,"first":"a","group":"G","last":"b","leaf_ids":["a","b"],"pane":"center","resizable":true,"span":2,"width":5},{"blank":false,"first":"c","group":"H","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"check":"contiguous group","expected":[{"blank":false,"first":"a","group":"G","last":"b","leaf_ids":["a","b"],"pane":"center","resizable":true,"span":2,"width":5},{"blank":false,"first":"c","group":"H","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":true},{"actual":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"left","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"G","last":"c","leaf_ids":["b","c"],"pane":"center","resizable":true,"span":2,"width":7}],"check":"pin splits group","expected":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"left","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"G","last":"c","leaf_ids":["b","c"],"pane":"center","resizable":true,"span":2,"width":7}],"passed":true},{"actual":[{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"check":"hidden leaves","expected":[{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":true},{"actual":[{"blank":true,"first":"a","group":null,"last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3}],"check":"blank versus empty","expected":[{"blank":true,"first":"a","group":null,"last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3}],"passed":true},{"actual":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"H","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3},{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"check":"separated groups","expected":[{"blank":false,"first":"a","group":"G","last":"a","leaf_ids":["a"],"pane":"center","resizable":false,"span":1,"width":2},{"blank":false,"first":"b","group":"H","last":"b","leaf_ids":["b"],"pane":"center","resizable":false,"span":1,"width":3},{"blank":false,"first":"c","group":"G","last":"c","leaf_ids":["c"],"pane":"center","resizable":false,"span":1,"width":4}],"passed":true},{"actual":[],"check":"empty header","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"contiguous group\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 5, \"first\": \"a\", \"last\": \"b\", \"leaf_ids\": [\"a\", \"b\"], \"blank\": false, \"resizable\": true}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 5, \"first\": \"a\", \"last\": \"b\", \"leaf_ids\": [\"a\", \"b\"], \"blank\": false, \"resizable\": true}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"pin splits group\", \"actual\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 7, \"first\": \"b\", \"last\": \"c\", \"leaf_ids\": [\"b\", \"c\"], \"blank\": false, \"resizable\": true}], \"expected\": [{\"group\": \"G\", \"pane\": \"left\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 2, \"width\": 7, \"first\": \"b\", \"last\": \"c\", \"leaf_ids\": [\"b\", \"c\"], \"blank\": false, \"resizable\": true}], \"passed\": true}, {\"check\": \"hidden leaves\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"blank versus empty\", \"actual\": [{\"group\": null, \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": true, \"resizable\": false}, {\"group\": \"\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": null, \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": true, \"resizable\": false}, {\"group\": \"\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"separated groups\", \"actual\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"expected\": [{\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 2, \"first\": \"a\", \"last\": \"a\", \"leaf_ids\": [\"a\"], \"blank\": false, \"resizable\": false}, {\"group\": \"H\", \"pane\": \"center\", \"span\": 1, \"width\": 3, \"first\": \"b\", \"last\": \"b\", \"leaf_ids\": [\"b\"], \"blank\": false, \"resizable\": false}, {\"group\": \"G\", \"pane\": \"center\", \"span\": 1, \"width\": 4, \"first\": \"c\", \"last\": \"c\", \"leaf_ids\": [\"c\"], \"blank\": false, \"resizable\": false}], \"passed\": true}, {\"check\": \"empty header\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}