{"abstract":"The table visibility before pinning result violates the stipulated pinned table panes contract.","category":"Table interactions","checks":6,"contract":"Partition visible schema columns into left, center, and right panes; left wins conflicting pin assignments. Pin order follows schema, left offsets are prefixes, right offsets suffixes, only center moves on scroll, reservations exclude hidden tracks.","evaluation_group":"s3-table-interactions-pinned-panes","failed_approach":"The attempted repair 'c not in hidden[:1]' still loses a required part of the table contract.","family":"s3-table-interactions-pinned-panes-visibility-before-pinning","id":"FA-36891","implementations":{"attempt":{"sha256":"1eda16d981208ac7a88e7b74cfe2d355e378dc004e4b67cd645fa4e853bd105a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ids, left, right, hidden, widths, scroll):\n    visible = [c for c in ids if c not in hidden[:1]]\n    l = [c for c in visible if c in left]\n    r = [c for c in visible if c in right and c not in left]\n    m = [c for c in visible if c not in left and c not in right]\n    lo = {c: sum(widths[x] for x in l[:i]) for i,c in enumerate(l)}\n    ro = {c: sum(widths[x] for x in r[i+1:]) for i,c in enumerate(r)}\n    mo = {c: sum(widths[x] for x in m[:i]) - scroll for i,c in enumerate(m)}\n    return [l,m,r,lo,ro,mo,sum(widths[x] for x in l),sum(widths[x] for x in r),l[-1:] if m or r else [],r[:1] if l or m else []]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*1,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 2:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*2,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 4}, {'d': 6, 'e': 0}, {'c': -3}, 7, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 3:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*3,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 6}, {'d': 6, 'e': 0}, {'c': -3}, 9, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 4:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*4,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 8}, {'d': 6, 'e': 0}, {'c': -3}, 11, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 5:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*5,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 10}, {'d': 6, 'e': 0}, {'c': -3}, 13, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\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":"80e4e4d3368543a1c8947fa96776a15c682101cc7591b0d40936f3f18acccc72","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ids, left, right, hidden, widths, scroll):\n    visible = [c for c in ids if True]\n    l = [c for c in visible if c in left]\n    r = [c for c in visible if c in right and c not in left]\n    m = [c for c in visible if c not in left and c not in right]\n    lo = {c: sum(widths[x] for x in l[:i]) for i,c in enumerate(l)}\n    ro = {c: sum(widths[x] for x in r[i+1:]) for i,c in enumerate(r)}\n    mo = {c: sum(widths[x] for x in m[:i]) - scroll for i,c in enumerate(m)}\n    return [l,m,r,lo,ro,mo,sum(widths[x] for x in l),sum(widths[x] for x in r),l[-1:] if m or r else [],r[:1] if l or m else []]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*1,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 2:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*2,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 4}, {'d': 6, 'e': 0}, {'c': -3}, 7, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 3:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*3,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 6}, {'d': 6, 'e': 0}, {'c': -3}, 9, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 4:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*4,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 8}, {'d': 6, 'e': 0}, {'c': -3}, 11, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 5:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*5,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 10}, {'d': 6, 'e': 0}, {'c': -3}, 13, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\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":"8b16da6eb8b26adf36e1442f1eaab7e6cc11f6ccbeae17d19fa3592f1604f5c4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ids, left, right, hidden, widths, scroll):\n    visible = [c for c in ids if c not in hidden]\n    l = [c for c in visible if c in left]\n    r = [c for c in visible if c in right and c not in left]\n    m = [c for c in visible if c not in left and c not in right]\n    lo = {c: sum(widths[x] for x in l[:i]) for i,c in enumerate(l)}\n    ro = {c: sum(widths[x] for x in r[i+1:]) for i,c in enumerate(r)}\n    mo = {c: sum(widths[x] for x in m[:i]) - scroll for i,c in enumerate(m)}\n    return [l,m,r,lo,ro,mo,sum(widths[x] for x in l),sum(widths[x] for x in r),l[-1:] if m or r else [],r[:1] if l or m else []]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*1,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 2:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*2,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 4}, {'d': 6, 'e': 0}, {'c': -3}, 7, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 3:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*3,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 6}, {'d': 6, 'e': 0}, {'c': -3}, 9, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 4:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*4,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 8}, {'d': 6, 'e': 0}, {'c': -3}, 11, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\n\nif N == 5:\n    check('mixed panes', solve(['a','b','c','d','e'], ['b','a'], ['d','e'], [], {'a':2*5,'b':3,'c':7,'d':4,'e':6}, 3), [['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 10}, {'d': 6, 'e': 0}, {'c': -3}, 13, 10, ['b'], ['d']])\n    check('overlap priority', solve(['a','b','c'], ['a','b'], ['b','c'], [], {'a':2,'b':4,'c':8}, 1), [['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']])\n    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])\n    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])\n    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])\n    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])\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 and every schema column has a nonnegative width. 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-pinned-panes-visibility-before-pinning","generated_at":"2026-09-29T14:42:55.798564+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates pinned table panes, including adversarial row/column relationships.","repair":"Apply the complete visibility before pinning rule: c not in hidden.","root_cause":"The visibility before pinning decision uses 'True' instead of 'c not in hidden'.","sha256":"b1da7f0e9a4db0098860ba56890459823e25b55052d0510f8d025552cae0e76c","title":"Pinned table panes: visibility before pinning · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.546,"exit_code":1,"observations":[{"actual":[["a","b"],["c"],["d","e"],{"a":0,"b":2},{"d":6,"e":0},{"c":-3},5,10,["b"],["d"]],"check":"mixed panes","expected":[["a","b"],["c"],["d","e"],{"a":0,"b":2},{"d":6,"e":0},{"c":-3},5,10,["b"],["d"]],"passed":true},{"actual":[["a","b"],[],["c"],{"a":0,"b":2},{"c":0},{},6,8,["b"],["c"]],"check":"overlap priority","expected":[["a","b"],[],["c"],{"a":0,"b":2},{"c":0},{},6,8,["b"],["c"]],"passed":true},{"actual":[[],["c"],["b"],{},{"b":0},{"c":-2},0,4,[],["b"]],"check":"hidden pins","expected":[[],["c"],[],{},{},{"c":-2},0,0,[],[]],"passed":false},{"actual":[["a","b"],[],[],{"a":0,"b":2},{},{},6,0,[],[]],"check":"only left","expected":[["a","b"],[],[],{"a":0,"b":2},{},{},6,0,[],[]],"passed":true},{"actual":[[],[],["a","b"],{},{"a":4,"b":0},{},0,6,[],[]],"check":"only right","expected":[[],[],["a","b"],{},{"a":4,"b":0},{},0,6,[],[]],"passed":true},{"actual":[[],[],[],{},{},{},0,0,[],[]],"check":"empty","expected":[[],[],[],{},{},{},0,0,[],[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed panes\", \"actual\": [[\"a\", \"b\"], [\"c\"], [\"d\", \"e\"], {\"a\": 0, \"b\": 2}, {\"d\": 6, \"e\": 0}, {\"c\": -3}, 5, 10, [\"b\"], [\"d\"]], \"expected\": [[\"a\", \"b\"], [\"c\"], [\"d\", \"e\"], {\"a\": 0, \"b\": 2}, {\"d\": 6, \"e\": 0}, {\"c\": -3}, 5, 10, [\"b\"], [\"d\"]], \"passed\": true}, {\"check\": \"overlap priority\", \"actual\": [[\"a\", \"b\"], [], [\"c\"], {\"a\": 0, \"b\": 2}, {\"c\": 0}, {}, 6, 8, [\"b\"], [\"c\"]], \"expected\": [[\"a\", \"b\"], [], [\"c\"], {\"a\": 0, \"b\": 2}, {\"c\": 0}, {}, 6, 8, [\"b\"], [\"c\"]], \"passed\": true}, {\"check\": \"hidden pins\", \"actual\": [[], [\"c\"], [\"b\"], {}, {\"b\": 0}, {\"c\": -2}, 0, 4, [], [\"b\"]], \"expected\": [[], [\"c\"], [], {}, {}, {\"c\": -2}, 0, 0, [], []], \"passed\": false}, {\"check\": \"only left\", \"actual\": [[\"a\", \"b\"], [], [], {\"a\": 0, \"b\": 2}, {}, {}, 6, 0, [], []], \"expected\": [[\"a\", \"b\"], [], [], {\"a\": 0, \"b\": 2}, {}, {}, 6, 0, [], []], \"passed\": true}, {\"check\": \"only right\", \"actual\": [[], [], [\"a\", \"b\"], {}, {\"a\": 4, \"b\": 0}, {}, 0, 6, [], []], \"expected\": [[], [], [\"a\", \"b\"], {}, {\"a\": 4, \"b\": 0}, {}, 0, 6, [], []], \"passed\": true}, {\"check\": \"empty\", \"actual\": [[], [], [], {}, {}, {}, 0, 0, [], []], \"expected\": [[], [], [], {}, {}, {}, 0, 0, [], []], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.169,"exit_code":1,"observations":[{"actual":[["a","b"],["c"],["d","e"],{"a":0,"b":2},{"d":6,"e":0},{"c":-3},5,10,["b"],["d"]],"check":"mixed panes","expected":[["a","b"],["c"],["d","e"],{"a":0,"b":2},{"d":6,"e":0},{"c":-3},5,10,["b"],["d"]],"passed":true},{"actual":[["a","b"],[],["c"],{"a":0,"b":2},{"c":0},{},6,8,["b"],["c"]],"check":"overlap priority","expected":[["a","b"],[],["c"],{"a":0,"b":2},{"c":0},{},6,8,["b"],["c"]],"passed":true},{"actual":[["a"],["c"],["b"],{"a":0},{"b":0},{"c":-2},2,4,["a"],["b"]],"check":"hidden pins","expected":[[],["c"],[],{},{},{"c":-2},0,0,[],[]],"passed":false},{"actual":[["a","b"],[],[],{"a":0,"b":2},{},{},6,0,[],[]],"check":"only left","expected":[["a","b"],[],[],{"a":0,"b":2},{},{},6,0,[],[]],"passed":true},{"actual":[[],[],["a","b"],{},{"a":4,"b":0},{},0,6,[],[]],"check":"only right","expected":[[],[],["a","b"],{},{"a":4,"b":0},{},0,6,[],[]],"passed":true},{"actual":[[],[],[],{},{},{},0,0,[],[]],"check":"empty","expected":[[],[],[],{},{},{},0,0,[],[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed panes\", \"actual\": [[\"a\", \"b\"], [\"c\"], [\"d\", \"e\"], {\"a\": 0, \"b\": 2}, {\"d\": 6, \"e\": 0}, {\"c\": -3}, 5, 10, [\"b\"], [\"d\"]], \"expected\": [[\"a\", \"b\"], [\"c\"], [\"d\", \"e\"], {\"a\": 0, \"b\": 2}, {\"d\": 6, \"e\": 0}, {\"c\": -3}, 5, 10, [\"b\"], [\"d\"]], \"passed\": true}, {\"check\": \"overlap priority\", \"actual\": [[\"a\", \"b\"], [], [\"c\"], {\"a\": 0, \"b\": 2}, {\"c\": 0}, {}, 6, 8, [\"b\"], [\"c\"]], \"expected\": [[\"a\", \"b\"], [], [\"c\"], {\"a\": 0, \"b\": 2}, {\"c\": 0}, {}, 6, 8, [\"b\"], [\"c\"]], \"passed\": true}, {\"check\": \"hidden pins\", \"actual\": [[\"a\"], [\"c\"], [\"b\"], {\"a\": 0}, {\"b\": 0}, {\"c\": -2}, 2, 4, [\"a\"], [\"b\"]], \"expected\": [[], [\"c\"], [], {}, {}, {\"c\": -2}, 0, 0, [], []], \"passed\": false}, {\"check\": \"only left\", \"actual\": [[\"a\", \"b\"], [], [], {\"a\": 0, \"b\": 2}, {}, {}, 6, 0, [], []], \"expected\": [[\"a\", \"b\"], [], [], {\"a\": 0, \"b\": 2}, {}, {}, 6, 0, [], []], \"passed\": true}, {\"check\": \"only right\", \"actual\": [[], [], [\"a\", \"b\"], {}, {\"a\": 4, \"b\": 0}, {}, 0, 6, [], []], \"expected\": [[], [], [\"a\", \"b\"], {}, {\"a\": 4, \"b\": 0}, {}, 0, 6, [], []], \"passed\": true}, {\"check\": \"empty\", \"actual\": [[], [], [], {}, {}, {}, 0, 0, [], []], \"expected\": [[], [], [], {}, {}, {}, 0, 0, [], []], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.85,"exit_code":0,"observations":[{"actual":[["a","b"],["c"],["d","e"],{"a":0,"b":2},{"d":6,"e":0},{"c":-3},5,10,["b"],["d"]],"check":"mixed panes","expected":[["a","b"],["c"],["d","e"],{"a":0,"b":2},{"d":6,"e":0},{"c":-3},5,10,["b"],["d"]],"passed":true},{"actual":[["a","b"],[],["c"],{"a":0,"b":2},{"c":0},{},6,8,["b"],["c"]],"check":"overlap priority","expected":[["a","b"],[],["c"],{"a":0,"b":2},{"c":0},{},6,8,["b"],["c"]],"passed":true},{"actual":[[],["c"],[],{},{},{"c":-2},0,0,[],[]],"check":"hidden pins","expected":[[],["c"],[],{},{},{"c":-2},0,0,[],[]],"passed":true},{"actual":[["a","b"],[],[],{"a":0,"b":2},{},{},6,0,[],[]],"check":"only left","expected":[["a","b"],[],[],{"a":0,"b":2},{},{},6,0,[],[]],"passed":true},{"actual":[[],[],["a","b"],{},{"a":4,"b":0},{},0,6,[],[]],"check":"only right","expected":[[],[],["a","b"],{},{"a":4,"b":0},{},0,6,[],[]],"passed":true},{"actual":[[],[],[],{},{},{},0,0,[],[]],"check":"empty","expected":[[],[],[],{},{},{},0,0,[],[]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed panes\", \"actual\": [[\"a\", \"b\"], [\"c\"], [\"d\", \"e\"], {\"a\": 0, \"b\": 2}, {\"d\": 6, \"e\": 0}, {\"c\": -3}, 5, 10, [\"b\"], [\"d\"]], \"expected\": [[\"a\", \"b\"], [\"c\"], [\"d\", \"e\"], {\"a\": 0, \"b\": 2}, {\"d\": 6, \"e\": 0}, {\"c\": -3}, 5, 10, [\"b\"], [\"d\"]], \"passed\": true}, {\"check\": \"overlap priority\", \"actual\": [[\"a\", \"b\"], [], [\"c\"], {\"a\": 0, \"b\": 2}, {\"c\": 0}, {}, 6, 8, [\"b\"], [\"c\"]], \"expected\": [[\"a\", \"b\"], [], [\"c\"], {\"a\": 0, \"b\": 2}, {\"c\": 0}, {}, 6, 8, [\"b\"], [\"c\"]], \"passed\": true}, {\"check\": \"hidden pins\", \"actual\": [[], [\"c\"], [], {}, {}, {\"c\": -2}, 0, 0, [], []], \"expected\": [[], [\"c\"], [], {}, {}, {\"c\": -2}, 0, 0, [], []], \"passed\": true}, {\"check\": \"only left\", \"actual\": [[\"a\", \"b\"], [], [], {\"a\": 0, \"b\": 2}, {}, {}, 6, 0, [], []], \"expected\": [[\"a\", \"b\"], [], [], {\"a\": 0, \"b\": 2}, {}, {}, 6, 0, [], []], \"passed\": true}, {\"check\": \"only right\", \"actual\": [[], [], [\"a\", \"b\"], {}, {\"a\": 4, \"b\": 0}, {}, 0, 6, [], []], \"expected\": [[], [], [\"a\", \"b\"], {}, {\"a\": 4, \"b\": 0}, {}, 0, 6, [], []], \"passed\": true}, {\"check\": \"empty\", \"actual\": [[], [], [], {}, {}, {}, 0, 0, [], []], \"expected\": [[], [], [], {}, {}, {}, 0, 0, [], []], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}