{"abstract":"The table schema order result violates the stipulated column track resolution contract.","category":"Table interactions","checks":6,"contract":"Resolve unique schema IDs in saved order then append unlisted visible columns; clamp widths to per-column bounds, keep explicit zero, compute prefix starts, omit a terminal resize handle, and use None for no terminal column.","evaluation_group":"s3-table-interactions-column-track","failed_approach":"The attempted repair \"{c['id']: {'id':c['id']} for c in cols}\" still loses a required part of the table contract.","family":"s3-table-interactions-column-track-schema-order","id":"FA-36841","implementations":{"attempt":{"sha256":"8a6cbed83faecb53ed81ce194f546407ac4a5e8d2613112fe71c794d16f02b68","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cols, order, hidden, widths, minimum, maximum, default):\n    by_id = {c['id']: {'id':c['id']} for c in cols}\n    ids = [c for c in order if c in by_id and c not in hidden]\n    ids += [c['id'] for c in cols if c['id'] not in order and c['id'] not in hidden]\n    resolved = {c: max(minimum.get(c, 0), min(maximum.get(c, 10000), widths.get(c, by_id[c].get('width', default)))) for c in ids}\n    starts = {c: sum(resolved[x] for x in ids[:i]) for i,c in enumerate(ids)}\n    return {'ids': ids, 'widths': resolved, 'starts': starts, 'total': sum(resolved.values()), 'resizable': [c for c in ids if by_id[c].get('resize', True)], 'handles': [c for c in ids[:-1] if by_id[c].get('resize', True)], 'last': ids[-1] if ids else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*1}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 12, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 12, 'c': 22}, 'total': 42, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 2:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*2}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 24, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 24, 'c': 34}, 'total': 54, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 3:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*3}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 36, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 36, 'c': 46}, 'total': 66, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 4:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*4}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 48, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 48, 'c': 58}, 'total': 78, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 5:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*5}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 60, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 60, 'c': 70}, 'total': 90, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\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":"e33ed0b8f8390bfed1b9c7d3d19d7f1a5facf29cba7b8f1f4d3d24d2bac3a799","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cols, order, hidden, widths, minimum, maximum, default):\n    by_id = {c['id']: cols[0] for c in cols}\n    ids = [c for c in order if c in by_id and c not in hidden]\n    ids += [c['id'] for c in cols if c['id'] not in order and c['id'] not in hidden]\n    resolved = {c: max(minimum.get(c, 0), min(maximum.get(c, 10000), widths.get(c, by_id[c].get('width', default)))) for c in ids}\n    starts = {c: sum(resolved[x] for x in ids[:i]) for i,c in enumerate(ids)}\n    return {'ids': ids, 'widths': resolved, 'starts': starts, 'total': sum(resolved.values()), 'resizable': [c for c in ids if by_id[c].get('resize', True)], 'handles': [c for c in ids[:-1] if by_id[c].get('resize', True)], 'last': ids[-1] if ids else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*1}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 12, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 12, 'c': 22}, 'total': 42, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 2:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*2}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 24, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 24, 'c': 34}, 'total': 54, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 3:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*3}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 36, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 36, 'c': 46}, 'total': 66, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 4:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*4}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 48, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 48, 'c': 58}, 'total': 78, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 5:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*5}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 60, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 60, 'c': 70}, 'total': 90, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\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":"112073f4da16d83a932d9add5a920460ba3a6e6a77aa94f4b73f4bf7c6703959","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cols, order, hidden, widths, minimum, maximum, default):\n    by_id = {c['id']: c for c in cols}\n    ids = [c for c in order if c in by_id and c not in hidden]\n    ids += [c['id'] for c in cols if c['id'] not in order and c['id'] not in hidden]\n    resolved = {c: max(minimum.get(c, 0), min(maximum.get(c, 10000), widths.get(c, by_id[c].get('width', default)))) for c in ids}\n    starts = {c: sum(resolved[x] for x in ids[:i]) for i,c in enumerate(ids)}\n    return {'ids': ids, 'widths': resolved, 'starts': starts, 'total': sum(resolved.values()), 'resizable': [c for c in ids if by_id[c].get('resize', True)], 'handles': [c for c in ids[:-1] if by_id[c].get('resize', True)], 'last': ids[-1] if ids else None}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*1}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 12, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 12, 'c': 22}, 'total': 42, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 2:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*2}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 24, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 24, 'c': 34}, 'total': 54, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 3:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*3}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 36, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 36, 'c': 46}, 'total': 66, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 4:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*4}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 48, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 48, 'c': 58}, 'total': 78, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\n\nif N == 5:\n    check('mixed schema', solve([{'id':'a','width':8,'resize':False},{'id':'b'},{'id':'c','width':30}], ['b','gone','a'], [], {'b':12*5}, {'a':10}, {'c':20}, 7), {'ids': ['b', 'a', 'c'], 'widths': {'b': 60, 'a': 10, 'c': 20}, 'starts': {'b': 0, 'a': 60, 'c': 70}, 'total': 90, 'resizable': ['b', 'c'], 'handles': ['b'], 'last': 'c'})\n    check('zero override', solve([{'id':'a','width':8},{'id':'b','width':9}], ['a','b'], [], {'a':0}, {}, {}, 5), {'ids': ['a', 'b'], 'widths': {'a': 0, 'b': 9}, 'starts': {'a': 0, 'b': 0}, 'total': 9, 'resizable': ['a', 'b'], 'handles': ['a'], 'last': 'b'})\n    check('multiple hidden', solve([{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'}], ['a','b','c'], ['a','b','d'], {}, {}, {}, 6), {'ids': ['c'], 'widths': {'c': 6}, 'starts': {'c': 0}, 'total': 6, 'resizable': ['c'], 'handles': [], 'last': 'c'})\n    check('empty table', solve([], [], [], {}, {}, {}, 5), {'ids': [], 'widths': {}, 'starts': {}, 'total': 0, 'resizable': [], 'handles': [], 'last': None})\n    check('fixed singleton', solve([{'id':'x','resize':False}], ['x'], [], {}, {'x':11}, {'x':11}, 3), {'ids': ['x'], 'widths': {'x': 11}, 'starts': {'x': 0}, 'total': 11, 'resizable': [], 'handles': [], 'last': 'x'})\n    check('default tracks', solve([{'id':'q'},{'id':'r'}], [], [], {}, {}, {}, 4), {'ids': ['q', 'r'], 'widths': {'q': 4, 'r': 4}, 'starts': {'q': 0, 'r': 4}, 'total': 8, 'resizable': ['q', 'r'], 'handles': ['q'], 'last': 'r'})\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":"Schema IDs are unique; width bounds satisfy 0 <= minimum <= maximum. 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-column-track-schema-order","generated_at":"2026-09-29T14:42:55.314891+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates column track resolution, including adversarial row/column relationships.","repair":"Apply the complete schema order rule: {c['id']: c for c in cols}.","root_cause":"The schema order decision uses \"{c['id']: cols[0] for c in cols}\" instead of \"{c['id']: c for c in cols}\".","sha256":"ec2fc4ebaeaa37504f726d0c317b02be493c137f0d5ee82f18ffac9675ae8c51","title":"Column track resolution: schema order · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.725,"exit_code":1,"observations":[{"actual":{"handles":["b","a"],"ids":["b","a","c"],"last":"c","resizable":["b","a","c"],"starts":{"a":12,"b":0,"c":22},"total":29,"widths":{"a":10,"b":12,"c":7}},"check":"mixed schema","expected":{"handles":["b"],"ids":["b","a","c"],"last":"c","resizable":["b","c"],"starts":{"a":12,"b":0,"c":22},"total":42,"widths":{"a":10,"b":12,"c":20}},"passed":false},{"actual":{"handles":["a"],"ids":["a","b"],"last":"b","resizable":["a","b"],"starts":{"a":0,"b":0},"total":5,"widths":{"a":0,"b":5}},"check":"zero override","expected":{"handles":["a"],"ids":["a","b"],"last":"b","resizable":["a","b"],"starts":{"a":0,"b":0},"total":9,"widths":{"a":0,"b":9}},"passed":false},{"actual":{"handles":[],"ids":["c"],"last":"c","resizable":["c"],"starts":{"c":0},"total":6,"widths":{"c":6}},"check":"multiple hidden","expected":{"handles":[],"ids":["c"],"last":"c","resizable":["c"],"starts":{"c":0},"total":6,"widths":{"c":6}},"passed":true},{"actual":{"handles":[],"ids":[],"last":null,"resizable":[],"starts":{},"total":0,"widths":{}},"check":"empty table","expected":{"handles":[],"ids":[],"last":null,"resizable":[],"starts":{},"total":0,"widths":{}},"passed":true},{"actual":{"handles":[],"ids":["x"],"last":"x","resizable":["x"],"starts":{"x":0},"total":11,"widths":{"x":11}},"check":"fixed singleton","expected":{"handles":[],"ids":["x"],"last":"x","resizable":[],"starts":{"x":0},"total":11,"widths":{"x":11}},"passed":false},{"actual":{"handles":["q"],"ids":["q","r"],"last":"r","resizable":["q","r"],"starts":{"q":0,"r":4},"total":8,"widths":{"q":4,"r":4}},"check":"default tracks","expected":{"handles":["q"],"ids":["q","r"],"last":"r","resizable":["q","r"],"starts":{"q":0,"r":4},"total":8,"widths":{"q":4,"r":4}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed schema\", \"actual\": {\"ids\": [\"b\", \"a\", \"c\"], \"widths\": {\"b\": 12, \"a\": 10, \"c\": 7}, \"starts\": {\"b\": 0, \"a\": 12, \"c\": 22}, \"total\": 29, \"resizable\": [\"b\", \"a\", \"c\"], \"handles\": [\"b\", \"a\"], \"last\": \"c\"}, \"expected\": {\"ids\": [\"b\", \"a\", \"c\"], \"widths\": {\"b\": 12, \"a\": 10, \"c\": 20}, \"starts\": {\"b\": 0, \"a\": 12, \"c\": 22}, \"total\": 42, \"resizable\": [\"b\", \"c\"], \"handles\": [\"b\"], \"last\": \"c\"}, \"passed\": false}, {\"check\": \"zero override\", \"actual\": {\"ids\": [\"a\", \"b\"], \"widths\": {\"a\": 0, \"b\": 5}, \"starts\": {\"a\": 0, \"b\": 0}, \"total\": 5, \"resizable\": [\"a\", \"b\"], \"handles\": [\"a\"], \"last\": \"b\"}, \"expected\": {\"ids\": [\"a\", \"b\"], \"widths\": {\"a\": 0, \"b\": 9}, \"starts\": {\"a\": 0, \"b\": 0}, \"total\": 9, \"resizable\": [\"a\", \"b\"], \"handles\": [\"a\"], \"last\": \"b\"}, \"passed\": false}, {\"check\": \"multiple hidden\", \"actual\": {\"ids\": [\"c\"], \"widths\": {\"c\": 6}, \"starts\": {\"c\": 0}, \"total\": 6, \"resizable\": [\"c\"], \"handles\": [], \"last\": \"c\"}, \"expected\": {\"ids\": [\"c\"], \"widths\": {\"c\": 6}, \"starts\": {\"c\": 0}, \"total\": 6, \"resizable\": [\"c\"], \"handles\": [], \"last\": \"c\"}, \"passed\": true}, {\"check\": \"empty table\", \"actual\": {\"ids\": [], \"widths\": {}, \"starts\": {}, \"total\": 0, \"resizable\": [], \"handles\": [], \"last\": null}, \"expected\": {\"ids\": [], \"widths\": {}, \"starts\": {}, \"total\": 0, \"resizable\": [], \"handles\": [], \"last\": null}, \"passed\": true}, {\"check\": \"fixed singleton\", \"actual\": {\"ids\": [\"x\"], \"widths\": {\"x\": 11}, \"starts\": {\"x\": 0}, \"total\": 11, \"resizable\": [\"x\"], \"handles\": [], \"last\": \"x\"}, \"expected\": {\"ids\": [\"x\"], \"widths\": {\"x\": 11}, \"starts\": {\"x\": 0}, \"total\": 11, \"resizable\": [], \"handles\": [], \"last\": \"x\"}, \"passed\": false}, {\"check\": \"default tracks\", \"actual\": {\"ids\": [\"q\", \"r\"], \"widths\": {\"q\": 4, \"r\": 4}, \"starts\": {\"q\": 0, \"r\": 4}, \"total\": 8, \"resizable\": [\"q\", \"r\"], \"handles\": [\"q\"], \"last\": \"r\"}, \"expected\": {\"ids\": [\"q\", \"r\"], \"widths\": {\"q\": 4, \"r\": 4}, \"starts\": {\"q\": 0, \"r\": 4}, \"total\": 8, \"resizable\": [\"q\", \"r\"], \"handles\": [\"q\"], \"last\": \"r\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.082,"exit_code":1,"observations":[{"actual":{"handles":[],"ids":["b","a","c"],"last":"c","resizable":[],"starts":{"a":12,"b":0,"c":22},"total":30,"widths":{"a":10,"b":12,"c":8}},"check":"mixed schema","expected":{"handles":["b"],"ids":["b","a","c"],"last":"c","resizable":["b","c"],"starts":{"a":12,"b":0,"c":22},"total":42,"widths":{"a":10,"b":12,"c":20}},"passed":false},{"actual":{"handles":["a"],"ids":["a","b"],"last":"b","resizable":["a","b"],"starts":{"a":0,"b":0},"total":8,"widths":{"a":0,"b":8}},"check":"zero override","expected":{"handles":["a"],"ids":["a","b"],"last":"b","resizable":["a","b"],"starts":{"a":0,"b":0},"total":9,"widths":{"a":0,"b":9}},"passed":false},{"actual":{"handles":[],"ids":["c"],"last":"c","resizable":["c"],"starts":{"c":0},"total":6,"widths":{"c":6}},"check":"multiple hidden","expected":{"handles":[],"ids":["c"],"last":"c","resizable":["c"],"starts":{"c":0},"total":6,"widths":{"c":6}},"passed":true},{"actual":{"handles":[],"ids":[],"last":null,"resizable":[],"starts":{},"total":0,"widths":{}},"check":"empty table","expected":{"handles":[],"ids":[],"last":null,"resizable":[],"starts":{},"total":0,"widths":{}},"passed":true},{"actual":{"handles":[],"ids":["x"],"last":"x","resizable":[],"starts":{"x":0},"total":11,"widths":{"x":11}},"check":"fixed singleton","expected":{"handles":[],"ids":["x"],"last":"x","resizable":[],"starts":{"x":0},"total":11,"widths":{"x":11}},"passed":true},{"actual":{"handles":["q"],"ids":["q","r"],"last":"r","resizable":["q","r"],"starts":{"q":0,"r":4},"total":8,"widths":{"q":4,"r":4}},"check":"default tracks","expected":{"handles":["q"],"ids":["q","r"],"last":"r","resizable":["q","r"],"starts":{"q":0,"r":4},"total":8,"widths":{"q":4,"r":4}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed schema\", \"actual\": {\"ids\": [\"b\", \"a\", \"c\"], \"widths\": {\"b\": 12, \"a\": 10, \"c\": 8}, \"starts\": {\"b\": 0, \"a\": 12, \"c\": 22}, \"total\": 30, \"resizable\": [], \"handles\": [], \"last\": \"c\"}, \"expected\": {\"ids\": [\"b\", \"a\", \"c\"], \"widths\": {\"b\": 12, \"a\": 10, \"c\": 20}, \"starts\": {\"b\": 0, \"a\": 12, \"c\": 22}, \"total\": 42, \"resizable\": [\"b\", \"c\"], \"handles\": [\"b\"], \"last\": \"c\"}, \"passed\": false}, {\"check\": \"zero override\", \"actual\": {\"ids\": [\"a\", \"b\"], \"widths\": {\"a\": 0, \"b\": 8}, \"starts\": {\"a\": 0, \"b\": 0}, \"total\": 8, \"resizable\": [\"a\", \"b\"], \"handles\": [\"a\"], \"last\": \"b\"}, \"expected\": {\"ids\": [\"a\", \"b\"], \"widths\": {\"a\": 0, \"b\": 9}, \"starts\": {\"a\": 0, \"b\": 0}, \"total\": 9, \"resizable\": [\"a\", \"b\"], \"handles\": [\"a\"], \"last\": \"b\"}, \"passed\": false}, {\"check\": \"multiple hidden\", \"actual\": {\"ids\": [\"c\"], \"widths\": {\"c\": 6}, \"starts\": {\"c\": 0}, \"total\": 6, \"resizable\": [\"c\"], \"handles\": [], \"last\": \"c\"}, \"expected\": {\"ids\": [\"c\"], \"widths\": {\"c\": 6}, \"starts\": {\"c\": 0}, \"total\": 6, \"resizable\": [\"c\"], \"handles\": [], \"last\": \"c\"}, \"passed\": true}, {\"check\": \"empty table\", \"actual\": {\"ids\": [], \"widths\": {}, \"starts\": {}, \"total\": 0, \"resizable\": [], \"handles\": [], \"last\": null}, \"expected\": {\"ids\": [], \"widths\": {}, \"starts\": {}, \"total\": 0, \"resizable\": [], \"handles\": [], \"last\": null}, \"passed\": true}, {\"check\": \"fixed singleton\", \"actual\": {\"ids\": [\"x\"], \"widths\": {\"x\": 11}, \"starts\": {\"x\": 0}, \"total\": 11, \"resizable\": [], \"handles\": [], \"last\": \"x\"}, \"expected\": {\"ids\": [\"x\"], \"widths\": {\"x\": 11}, \"starts\": {\"x\": 0}, \"total\": 11, \"resizable\": [], \"handles\": [], \"last\": \"x\"}, \"passed\": true}, {\"check\": \"default tracks\", \"actual\": {\"ids\": [\"q\", \"r\"], \"widths\": {\"q\": 4, \"r\": 4}, \"starts\": {\"q\": 0, \"r\": 4}, \"total\": 8, \"resizable\": [\"q\", \"r\"], \"handles\": [\"q\"], \"last\": \"r\"}, \"expected\": {\"ids\": [\"q\", \"r\"], \"widths\": {\"q\": 4, \"r\": 4}, \"starts\": {\"q\": 0, \"r\": 4}, \"total\": 8, \"resizable\": [\"q\", \"r\"], \"handles\": [\"q\"], \"last\": \"r\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.903,"exit_code":0,"observations":[{"actual":{"handles":["b"],"ids":["b","a","c"],"last":"c","resizable":["b","c"],"starts":{"a":12,"b":0,"c":22},"total":42,"widths":{"a":10,"b":12,"c":20}},"check":"mixed schema","expected":{"handles":["b"],"ids":["b","a","c"],"last":"c","resizable":["b","c"],"starts":{"a":12,"b":0,"c":22},"total":42,"widths":{"a":10,"b":12,"c":20}},"passed":true},{"actual":{"handles":["a"],"ids":["a","b"],"last":"b","resizable":["a","b"],"starts":{"a":0,"b":0},"total":9,"widths":{"a":0,"b":9}},"check":"zero override","expected":{"handles":["a"],"ids":["a","b"],"last":"b","resizable":["a","b"],"starts":{"a":0,"b":0},"total":9,"widths":{"a":0,"b":9}},"passed":true},{"actual":{"handles":[],"ids":["c"],"last":"c","resizable":["c"],"starts":{"c":0},"total":6,"widths":{"c":6}},"check":"multiple hidden","expected":{"handles":[],"ids":["c"],"last":"c","resizable":["c"],"starts":{"c":0},"total":6,"widths":{"c":6}},"passed":true},{"actual":{"handles":[],"ids":[],"last":null,"resizable":[],"starts":{},"total":0,"widths":{}},"check":"empty table","expected":{"handles":[],"ids":[],"last":null,"resizable":[],"starts":{},"total":0,"widths":{}},"passed":true},{"actual":{"handles":[],"ids":["x"],"last":"x","resizable":[],"starts":{"x":0},"total":11,"widths":{"x":11}},"check":"fixed singleton","expected":{"handles":[],"ids":["x"],"last":"x","resizable":[],"starts":{"x":0},"total":11,"widths":{"x":11}},"passed":true},{"actual":{"handles":["q"],"ids":["q","r"],"last":"r","resizable":["q","r"],"starts":{"q":0,"r":4},"total":8,"widths":{"q":4,"r":4}},"check":"default tracks","expected":{"handles":["q"],"ids":["q","r"],"last":"r","resizable":["q","r"],"starts":{"q":0,"r":4},"total":8,"widths":{"q":4,"r":4}},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed schema\", \"actual\": {\"ids\": [\"b\", \"a\", \"c\"], \"widths\": {\"b\": 12, \"a\": 10, \"c\": 20}, \"starts\": {\"b\": 0, \"a\": 12, \"c\": 22}, \"total\": 42, \"resizable\": [\"b\", \"c\"], \"handles\": [\"b\"], \"last\": \"c\"}, \"expected\": {\"ids\": [\"b\", \"a\", \"c\"], \"widths\": {\"b\": 12, \"a\": 10, \"c\": 20}, \"starts\": {\"b\": 0, \"a\": 12, \"c\": 22}, \"total\": 42, \"resizable\": [\"b\", \"c\"], \"handles\": [\"b\"], \"last\": \"c\"}, \"passed\": true}, {\"check\": \"zero override\", \"actual\": {\"ids\": [\"a\", \"b\"], \"widths\": {\"a\": 0, \"b\": 9}, \"starts\": {\"a\": 0, \"b\": 0}, \"total\": 9, \"resizable\": [\"a\", \"b\"], \"handles\": [\"a\"], \"last\": \"b\"}, \"expected\": {\"ids\": [\"a\", \"b\"], \"widths\": {\"a\": 0, \"b\": 9}, \"starts\": {\"a\": 0, \"b\": 0}, \"total\": 9, \"resizable\": [\"a\", \"b\"], \"handles\": [\"a\"], \"last\": \"b\"}, \"passed\": true}, {\"check\": \"multiple hidden\", \"actual\": {\"ids\": [\"c\"], \"widths\": {\"c\": 6}, \"starts\": {\"c\": 0}, \"total\": 6, \"resizable\": [\"c\"], \"handles\": [], \"last\": \"c\"}, \"expected\": {\"ids\": [\"c\"], \"widths\": {\"c\": 6}, \"starts\": {\"c\": 0}, \"total\": 6, \"resizable\": [\"c\"], \"handles\": [], \"last\": \"c\"}, \"passed\": true}, {\"check\": \"empty table\", \"actual\": {\"ids\": [], \"widths\": {}, \"starts\": {}, \"total\": 0, \"resizable\": [], \"handles\": [], \"last\": null}, \"expected\": {\"ids\": [], \"widths\": {}, \"starts\": {}, \"total\": 0, \"resizable\": [], \"handles\": [], \"last\": null}, \"passed\": true}, {\"check\": \"fixed singleton\", \"actual\": {\"ids\": [\"x\"], \"widths\": {\"x\": 11}, \"starts\": {\"x\": 0}, \"total\": 11, \"resizable\": [], \"handles\": [], \"last\": \"x\"}, \"expected\": {\"ids\": [\"x\"], \"widths\": {\"x\": 11}, \"starts\": {\"x\": 0}, \"total\": 11, \"resizable\": [], \"handles\": [], \"last\": \"x\"}, \"passed\": true}, {\"check\": \"default tracks\", \"actual\": {\"ids\": [\"q\", \"r\"], \"widths\": {\"q\": 4, \"r\": 4}, \"starts\": {\"q\": 0, \"r\": 4}, \"total\": 8, \"resizable\": [\"q\", \"r\"], \"handles\": [\"q\"], \"last\": \"r\"}, \"expected\": {\"ids\": [\"q\", \"r\"], \"widths\": {\"q\": 4, \"r\": 4}, \"starts\": {\"q\": 0, \"r\": 4}, \"total\": 8, \"resizable\": [\"q\", \"r\"], \"handles\": [\"q\"], \"last\": \"r\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}