FAILURE MAP
← Case archive

FA-37716 / Table interactions / Open access

Saved table view restoration: width type · case 01

The table width type result violates the stipulated saved table view restoration contract.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The width type decision uses 'isinstance(w,int)' instead of 'isinstance(w,int) and not isinstance(w,bool)'.

VERIFIED REPAIR

Apply the complete width type rule: isinstance(w,int) and not isinstance(w,bool).

Unsuccessful approach: The attempted repair 'isinstance(w,(int,float))' still loses a required part of the table contract.

Case 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.

Why this case matters

An offline table UI model isolates saved table view restoration, including adversarial row/column relationships.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(schema, saved, version, defaults):
    ids=[c['id'] for c in schema]
    if saved.get('version')!=version: return defaults
    order=[]
    for c in saved.get('order',[]):
        if c in ids and c not in order: order.append(c)
    order += [c for c in ids if c not in order]
    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')]
    widths={c:max(1,w) for c,w in saved.get('widths',{}).items() if c in ids and isinstance(w,int)}
    pins={c:p for c,p in saved.get('pins',{}).items() if c in ids and p in ('left','right')}
    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']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 2:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 3:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 4:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 5:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
schema evolution{'density': 'comfortable', 'hidden': ['b'], 'order': ['b', 'a', 'c'], 'page_size': 25, 'pins': {'a': 'right'}, 'widths': {'a': 3, 'b': 1}}{'density': 'comfortable', 'hidden': ['b'], 'order': ['b', 'a', 'c'], 'page_size': 25, 'pins': {'a': 'right'}, 'widths': {'a': 3, 'b': 1}}Passed
old version{'density': 'normal', 'page_size': 10}{'density': 'normal', 'page_size': 10}Passed
missing version{'density': 'normal', 'page_size': 10}{'density': 'normal', 'page_size': 10}Passed
invalid values{'density': 'normal', 'hidden': [], 'order': ['a', 'b'], 'page_size': 10, 'pins': {}, 'widths': {'a': 1}}{'density': 'normal', 'hidden': [], 'order': ['a', 'b'], 'page_size': 10, 'pins': {}, 'widths': {}}Failed
negative width{'density': 'normal', 'hidden': [], 'order': ['a'], 'page_size': 50, 'pins': {'a': 'left'}, 'widths': {'a': 1}}{'density': 'normal', 'hidden': [], 'order': ['a'], 'page_size': 50, 'pins': {'a': 'left'}, 'widths': {'a': 1}}Passed
empty schema{'density': 'compact', 'hidden': [], 'order': [], 'page_size': 10, 'pins': {}, 'widths': {}}{'density': 'compact', 'hidden': [], 'order': [], 'page_size': 10, 'pins': {}, 'widths': {}}Passed

SHA-256 / 3bfdc6a535ca368d36407433665fea25228a9690474757c6f86446389700387e

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(schema, saved, version, defaults):
    ids=[c['id'] for c in schema]
    if saved.get('version')!=version: return defaults
    order=[]
    for c in saved.get('order',[]):
        if c in ids and c not in order: order.append(c)
    order += [c for c in ids if c not in order]
    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')]
    widths={c:max(1,w) for c,w in saved.get('widths',{}).items() if c in ids and isinstance(w,(int,float))}
    pins={c:p for c,p in saved.get('pins',{}).items() if c in ids and p in ('left','right')}
    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']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 2:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 3:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 4:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 5:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
schema evolution{'density': 'comfortable', 'hidden': ['b'], 'order': ['b', 'a', 'c'], 'page_size': 25, 'pins': {'a': 'right'}, 'widths': {'a': 3, 'b': 1}}{'density': 'comfortable', 'hidden': ['b'], 'order': ['b', 'a', 'c'], 'page_size': 25, 'pins': {'a': 'right'}, 'widths': {'a': 3, 'b': 1}}Passed
old version{'density': 'normal', 'page_size': 10}{'density': 'normal', 'page_size': 10}Passed
missing version{'density': 'normal', 'page_size': 10}{'density': 'normal', 'page_size': 10}Passed
invalid values{'density': 'normal', 'hidden': [], 'order': ['a', 'b'], 'page_size': 10, 'pins': {}, 'widths': {'a': 1, 'b': 2.5}}{'density': 'normal', 'hidden': [], 'order': ['a', 'b'], 'page_size': 10, 'pins': {}, 'widths': {}}Failed
negative width{'density': 'normal', 'hidden': [], 'order': ['a'], 'page_size': 50, 'pins': {'a': 'left'}, 'widths': {'a': 1}}{'density': 'normal', 'hidden': [], 'order': ['a'], 'page_size': 50, 'pins': {'a': 'left'}, 'widths': {'a': 1}}Passed
empty schema{'density': 'compact', 'hidden': [], 'order': [], 'page_size': 10, 'pins': {}, 'widths': {}}{'density': 'compact', 'hidden': [], 'order': [], 'page_size': 10, 'pins': {}, 'widths': {}}Passed

SHA-256 / 720a59c3e053aedfc25be749e6e3558e1fad6d4139966b9774c5ea9cfd67cf2a

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(schema, saved, version, defaults):
    ids=[c['id'] for c in schema]
    if saved.get('version')!=version: return defaults
    order=[]
    for c in saved.get('order',[]):
        if c in ids and c not in order: order.append(c)
    order += [c for c in ids if c not in order]
    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')]
    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)}
    pins={c:p for c,p in saved.get('pins',{}).items() if c in ids and p in ('left','right')}
    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']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 2:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 3:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 4:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

if N == 5:
    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})
    check('old version', solve([{'id':'a'}], {'version':1}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    check('missing version', solve([{'id':'a'}], {}, 2, {'density':'normal','page_size':10}), {'density': 'normal', 'page_size': 10})
    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})
    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})
    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})

print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
schema evolution{'density': 'comfortable', 'hidden': ['b'], 'order': ['b', 'a', 'c'], 'page_size': 25, 'pins': {'a': 'right'}, 'widths': {'a': 3, 'b': 1}}{'density': 'comfortable', 'hidden': ['b'], 'order': ['b', 'a', 'c'], 'page_size': 25, 'pins': {'a': 'right'}, 'widths': {'a': 3, 'b': 1}}Passed
old version{'density': 'normal', 'page_size': 10}{'density': 'normal', 'page_size': 10}Passed
missing version{'density': 'normal', 'page_size': 10}{'density': 'normal', 'page_size': 10}Passed
invalid values{'density': 'normal', 'hidden': [], 'order': ['a', 'b'], 'page_size': 10, 'pins': {}, 'widths': {}}{'density': 'normal', 'hidden': [], 'order': ['a', 'b'], 'page_size': 10, 'pins': {}, 'widths': {}}Passed
negative width{'density': 'normal', 'hidden': [], 'order': ['a'], 'page_size': 50, 'pins': {'a': 'left'}, 'widths': {'a': 1}}{'density': 'normal', 'hidden': [], 'order': ['a'], 'page_size': 50, 'pins': {'a': 'left'}, 'widths': {'a': 1}}Passed
empty schema{'density': 'compact', 'hidden': [], 'order': [], 'page_size': 10, 'pins': {}, 'widths': {}}{'density': 'compact', 'hidden': [], 'order': [], 'page_size': 10, 'pins': {}, 'widths': {}}Passed

SHA-256 / d7163c5befc0179556e3fe5e1acf225a7df86fd365167ca209e5a55f870c9ebd

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:43:03.916054+00:00.

Case digest / 91b881875699c1adf6007b3d20889fd7a1034af5439b690dece605634d89df1e