{"abstract":"The table unknown order column result violates the stipulated saved table view restoration contract.","category":"Table interactions","checks":6,"contract":"Restore a table view only at matching schema version; deduplicate known order, append new schema columns, keep required columns visible, accept positive-clamped integer nonboolean widths, validate pin sides/density/page-size enums, and ignore removed columns.","evaluation_group":"s3-table-interactions-view-restore","failed_approach":"The attempted repair 'c in ids' still loses a required part of the table contract.","family":"s3-table-interactions-view-restore-unknown-order-column","id":"FA-37696","implementations":{"attempt":{"sha256":"0adc77d1029caf420d2cea06385cebf28c105aaef284a427c5445e8de1acaa1a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(schema, saved, version, defaults):\n    ids=[c['id'] for c in schema]\n    if saved.get('version')!=version: return defaults\n    order=[]\n    for c in saved.get('order',[]):\n        if c in ids: order.append(c)\n    order += [c for c in ids if c not in order]\n    hidden=[c for c in order if c in saved.get('hidden',[]) and not next((x for x in schema if x['id']==c),{}).get('required')]\n    widths={c:max(1,w) for c,w in saved.get('widths',{}).items() if c in ids and isinstance(w,int) and not isinstance(w,bool)}\n    pins={c:p for c,p in saved.get('pins',{}).items() if c in ids and p in ('left','right')}\n    return {'order':order,'hidden':hidden,'widths':widths,'pins':pins,'density':saved.get('density') if saved.get('density') in ('compact','normal','comfortable') else defaults['density'],'page_size':saved.get('page_size') if saved.get('page_size') in (10,25,50) else defaults['page_size']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':1+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 3, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 2:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':2+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 4, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 3:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':3+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 5, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 4:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':4+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 6, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 5:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':5+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 7, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\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":"da2b00f47676f28f1d7c1bc5aa3ef30073055ebe4511bf2aab6588b015e26575","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(schema, saved, version, defaults):\n    ids=[c['id'] for c in schema]\n    if saved.get('version')!=version: return defaults\n    order=[]\n    for c in saved.get('order',[]):\n        if c not in order: order.append(c)\n    order += [c for c in ids if c not in order]\n    hidden=[c for c in order if c in saved.get('hidden',[]) and not next((x for x in schema if x['id']==c),{}).get('required')]\n    widths={c:max(1,w) for c,w in saved.get('widths',{}).items() if c in ids and isinstance(w,int) and not isinstance(w,bool)}\n    pins={c:p for c,p in saved.get('pins',{}).items() if c in ids and p in ('left','right')}\n    return {'order':order,'hidden':hidden,'widths':widths,'pins':pins,'density':saved.get('density') if saved.get('density') in ('compact','normal','comfortable') else defaults['density'],'page_size':saved.get('page_size') if saved.get('page_size') in (10,25,50) else defaults['page_size']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':1+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 3, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 2:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':2+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 4, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 3:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':3+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 5, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 4:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':4+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 6, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 5:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':5+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 7, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\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":"d7163c5befc0179556e3fe5e1acf225a7df86fd365167ca209e5a55f870c9ebd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(schema, saved, version, defaults):\n    ids=[c['id'] for c in schema]\n    if saved.get('version')!=version: return defaults\n    order=[]\n    for c in saved.get('order',[]):\n        if c in ids and c not in order: order.append(c)\n    order += [c for c in ids if c not in order]\n    hidden=[c for c in order if c in saved.get('hidden',[]) and not next((x for x in schema if x['id']==c),{}).get('required')]\n    widths={c:max(1,w) for c,w in saved.get('widths',{}).items() if c in ids and isinstance(w,int) and not isinstance(w,bool)}\n    pins={c:p for c,p in saved.get('pins',{}).items() if c in ids and p in ('left','right')}\n    return {'order':order,'hidden':hidden,'widths':widths,'pins':pins,'density':saved.get('density') if saved.get('density') in ('compact','normal','comfortable') else defaults['density'],'page_size':saved.get('page_size') if saved.get('page_size') in (10,25,50) else defaults['page_size']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':1+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 3, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 2:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':2+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 4, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 3:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':3+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 5, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 4:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':4+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 6, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\n\nif N == 5:\n    check('schema evolution', solve([{'id':'a','required':True},{'id':'b'},{'id':'c'}], {'version':2,'order':['b','gone','b'],'hidden':['a','b'],'widths':{'a':5+2,'b':0,'gone':8},'pins':{'a':'right','b':'middle'},'density':'comfortable','page_size':25}, 2, {'density':'normal','page_size':10}), {'order': ['b', 'a', 'c'], 'hidden': ['b'], 'widths': {'a': 7, 'b': 1}, 'pins': {'a': 'right'}, 'density': 'comfortable', 'page_size': 25})\n    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})\n    check('invalid values', solve([{'id':'a'},{'id':'b'}], {'version':2,'widths':{'a':True,'b':2.5},'density':'wild','page_size':13}, 2, {'density':'normal','page_size':10}), {'order': ['a', 'b'], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'normal', 'page_size': 10})\n    check('negative width', solve([{'id':'a'}], {'version':2,'widths':{'a':-4},'pins':{'a':'left'},'density':'normal','page_size':50}, 2, {'density':'compact','page_size':10}), {'order': ['a'], 'hidden': [], 'widths': {'a': 1}, 'pins': {'a': 'left'}, 'density': 'normal', 'page_size': 50})\n    check('empty schema', solve([], {'version':2,'order':['gone'],'hidden':['gone'],'widths':{},'pins':{'gone':'left'},'density':'compact','page_size':10}, 2, {'density':'normal','page_size':25}), {'order': [], 'hidden': [], 'widths': {}, 'pins': {}, 'density': 'compact', 'page_size': 10})\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; settings are finite Python scalar/container values with an explicitly enumerated restoration policy. 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-view-restore-unknown-order-column","generated_at":"2026-09-29T14:43:03.736503+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline table UI model isolates saved table view restoration, including adversarial row/column relationships.","repair":"Apply the complete unknown order column rule: c in ids and c not in order.","root_cause":"The unknown order column decision uses 'c not in order' instead of 'c in ids and c not in order'.","sha256":"32a3743a904af6eb75e029a086d45b8f012a20c93cc13682598941a161f7b1d9","title":"Saved table view restoration: unknown order column · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.385,"exit_code":1,"observations":[{"actual":{"density":"comfortable","hidden":["b","b"],"order":["b","b","a","c"],"page_size":25,"pins":{"a":"right"},"widths":{"a":3,"b":1}},"check":"schema evolution","expected":{"density":"comfortable","hidden":["b"],"order":["b","a","c"],"page_size":25,"pins":{"a":"right"},"widths":{"a":3,"b":1}},"passed":false},{"actual":{"density":"normal","page_size":10},"check":"old version","expected":{"density":"normal","page_size":10},"passed":true},{"actual":{"density":"normal","page_size":10},"check":"missing version","expected":{"density":"normal","page_size":10},"passed":true},{"actual":{"density":"normal","hidden":[],"order":["a","b"],"page_size":10,"pins":{},"widths":{}},"check":"invalid values","expected":{"density":"normal","hidden":[],"order":["a","b"],"page_size":10,"pins":{},"widths":{}},"passed":true},{"actual":{"density":"normal","hidden":[],"order":["a"],"page_size":50,"pins":{"a":"left"},"widths":{"a":1}},"check":"negative width","expected":{"density":"normal","hidden":[],"order":["a"],"page_size":50,"pins":{"a":"left"},"widths":{"a":1}},"passed":true},{"actual":{"density":"compact","hidden":[],"order":[],"page_size":10,"pins":{},"widths":{}},"check":"empty schema","expected":{"density":"compact","hidden":[],"order":[],"page_size":10,"pins":{},"widths":{}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"schema evolution\", \"actual\": {\"order\": [\"b\", \"b\", \"a\", \"c\"], \"hidden\": [\"b\", \"b\"], \"widths\": {\"a\": 3, \"b\": 1}, \"pins\": {\"a\": \"right\"}, \"density\": \"comfortable\", \"page_size\": 25}, \"expected\": {\"order\": [\"b\", \"a\", \"c\"], \"hidden\": [\"b\"], \"widths\": {\"a\": 3, \"b\": 1}, \"pins\": {\"a\": \"right\"}, \"density\": \"comfortable\", \"page_size\": 25}, \"passed\": false}, {\"check\": \"old version\", \"actual\": {\"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"missing version\", \"actual\": {\"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"invalid values\", \"actual\": {\"order\": [\"a\", \"b\"], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"order\": [\"a\", \"b\"], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"negative width\", \"actual\": {\"order\": [\"a\"], \"hidden\": [], \"widths\": {\"a\": 1}, \"pins\": {\"a\": \"left\"}, \"density\": \"normal\", \"page_size\": 50}, \"expected\": {\"order\": [\"a\"], \"hidden\": [], \"widths\": {\"a\": 1}, \"pins\": {\"a\": \"left\"}, \"density\": \"normal\", \"page_size\": 50}, \"passed\": true}, {\"check\": \"empty schema\", \"actual\": {\"order\": [], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"compact\", \"page_size\": 10}, \"expected\": {\"order\": [], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"compact\", \"page_size\": 10}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.698,"exit_code":1,"observations":[{"actual":{"density":"comfortable","hidden":["b"],"order":["b","gone","a","c"],"page_size":25,"pins":{"a":"right"},"widths":{"a":3,"b":1}},"check":"schema evolution","expected":{"density":"comfortable","hidden":["b"],"order":["b","a","c"],"page_size":25,"pins":{"a":"right"},"widths":{"a":3,"b":1}},"passed":false},{"actual":{"density":"normal","page_size":10},"check":"old version","expected":{"density":"normal","page_size":10},"passed":true},{"actual":{"density":"normal","page_size":10},"check":"missing version","expected":{"density":"normal","page_size":10},"passed":true},{"actual":{"density":"normal","hidden":[],"order":["a","b"],"page_size":10,"pins":{},"widths":{}},"check":"invalid values","expected":{"density":"normal","hidden":[],"order":["a","b"],"page_size":10,"pins":{},"widths":{}},"passed":true},{"actual":{"density":"normal","hidden":[],"order":["a"],"page_size":50,"pins":{"a":"left"},"widths":{"a":1}},"check":"negative width","expected":{"density":"normal","hidden":[],"order":["a"],"page_size":50,"pins":{"a":"left"},"widths":{"a":1}},"passed":true},{"actual":{"density":"compact","hidden":["gone"],"order":["gone"],"page_size":10,"pins":{},"widths":{}},"check":"empty schema","expected":{"density":"compact","hidden":[],"order":[],"page_size":10,"pins":{},"widths":{}},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"schema evolution\", \"actual\": {\"order\": [\"b\", \"gone\", \"a\", \"c\"], \"hidden\": [\"b\"], \"widths\": {\"a\": 3, \"b\": 1}, \"pins\": {\"a\": \"right\"}, \"density\": \"comfortable\", \"page_size\": 25}, \"expected\": {\"order\": [\"b\", \"a\", \"c\"], \"hidden\": [\"b\"], \"widths\": {\"a\": 3, \"b\": 1}, \"pins\": {\"a\": \"right\"}, \"density\": \"comfortable\", \"page_size\": 25}, \"passed\": false}, {\"check\": \"old version\", \"actual\": {\"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"missing version\", \"actual\": {\"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"invalid values\", \"actual\": {\"order\": [\"a\", \"b\"], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"order\": [\"a\", \"b\"], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"negative width\", \"actual\": {\"order\": [\"a\"], \"hidden\": [], \"widths\": {\"a\": 1}, \"pins\": {\"a\": \"left\"}, \"density\": \"normal\", \"page_size\": 50}, \"expected\": {\"order\": [\"a\"], \"hidden\": [], \"widths\": {\"a\": 1}, \"pins\": {\"a\": \"left\"}, \"density\": \"normal\", \"page_size\": 50}, \"passed\": true}, {\"check\": \"empty schema\", \"actual\": {\"order\": [\"gone\"], \"hidden\": [\"gone\"], \"widths\": {}, \"pins\": {}, \"density\": \"compact\", \"page_size\": 10}, \"expected\": {\"order\": [], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"compact\", \"page_size\": 10}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.616,"exit_code":0,"observations":[{"actual":{"density":"comfortable","hidden":["b"],"order":["b","a","c"],"page_size":25,"pins":{"a":"right"},"widths":{"a":3,"b":1}},"check":"schema evolution","expected":{"density":"comfortable","hidden":["b"],"order":["b","a","c"],"page_size":25,"pins":{"a":"right"},"widths":{"a":3,"b":1}},"passed":true},{"actual":{"density":"normal","page_size":10},"check":"old version","expected":{"density":"normal","page_size":10},"passed":true},{"actual":{"density":"normal","page_size":10},"check":"missing version","expected":{"density":"normal","page_size":10},"passed":true},{"actual":{"density":"normal","hidden":[],"order":["a","b"],"page_size":10,"pins":{},"widths":{}},"check":"invalid values","expected":{"density":"normal","hidden":[],"order":["a","b"],"page_size":10,"pins":{},"widths":{}},"passed":true},{"actual":{"density":"normal","hidden":[],"order":["a"],"page_size":50,"pins":{"a":"left"},"widths":{"a":1}},"check":"negative width","expected":{"density":"normal","hidden":[],"order":["a"],"page_size":50,"pins":{"a":"left"},"widths":{"a":1}},"passed":true},{"actual":{"density":"compact","hidden":[],"order":[],"page_size":10,"pins":{},"widths":{}},"check":"empty schema","expected":{"density":"compact","hidden":[],"order":[],"page_size":10,"pins":{},"widths":{}},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"schema evolution\", \"actual\": {\"order\": [\"b\", \"a\", \"c\"], \"hidden\": [\"b\"], \"widths\": {\"a\": 3, \"b\": 1}, \"pins\": {\"a\": \"right\"}, \"density\": \"comfortable\", \"page_size\": 25}, \"expected\": {\"order\": [\"b\", \"a\", \"c\"], \"hidden\": [\"b\"], \"widths\": {\"a\": 3, \"b\": 1}, \"pins\": {\"a\": \"right\"}, \"density\": \"comfortable\", \"page_size\": 25}, \"passed\": true}, {\"check\": \"old version\", \"actual\": {\"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"missing version\", \"actual\": {\"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"invalid values\", \"actual\": {\"order\": [\"a\", \"b\"], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"normal\", \"page_size\": 10}, \"expected\": {\"order\": [\"a\", \"b\"], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"normal\", \"page_size\": 10}, \"passed\": true}, {\"check\": \"negative width\", \"actual\": {\"order\": [\"a\"], \"hidden\": [], \"widths\": {\"a\": 1}, \"pins\": {\"a\": \"left\"}, \"density\": \"normal\", \"page_size\": 50}, \"expected\": {\"order\": [\"a\"], \"hidden\": [], \"widths\": {\"a\": 1}, \"pins\": {\"a\": \"left\"}, \"density\": \"normal\", \"page_size\": 50}, \"passed\": true}, {\"check\": \"empty schema\", \"actual\": {\"order\": [], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"compact\", \"page_size\": 10}, \"expected\": {\"order\": [], \"hidden\": [], \"widths\": {}, \"pins\": {}, \"density\": \"compact\", \"page_size\": 10}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}