FAILURE MAP
← Case archive

FA-36891 / Table interactions / Open access

Pinned table panes: visibility before pinning · case 01

The table visibility before pinning result violates the stipulated pinned table panes contract.

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

ROOT CAUSE

The visibility before pinning decision uses 'True' instead of 'c not in hidden'.

VERIFIED REPAIR

Apply the complete visibility before pinning rule: c not in hidden.

Unsuccessful approach: The attempted repair 'c not in hidden[:1]' still loses a required part of the table contract.

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

Why this case matters

An offline table UI model isolates pinned table panes, 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(ids, left, right, hidden, widths, scroll):
    visible = [c for c in ids if True]
    l = [c for c in visible if c in left]
    r = [c for c in visible if c in right and c not in left]
    m = [c for c in visible if c not in left and c not in right]
    lo = {c: sum(widths[x] for x in l[:i]) for i,c in enumerate(l)}
    ro = {c: sum(widths[x] for x in r[i+1:]) for i,c in enumerate(r)}
    mo = {c: sum(widths[x] for x in m[:i]) - scroll for i,c in enumerate(m)}
    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 []]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 2:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 3:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 4:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 5:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

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
mixed panes[['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']][['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']]Passed
overlap priority[['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']][['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']]Passed
hidden pins[['a'], ['c'], ['b'], {'a': 0}, {'b': 0}, {'c': -2}, 2, 4, ['a'], ['b']][[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []]Failed
only left[['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []][['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []]Passed
only right[[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []][[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []]Passed
empty[[], [], [], {}, {}, {}, 0, 0, [], []][[], [], [], {}, {}, {}, 0, 0, [], []]Passed

SHA-256 / 80e4e4d3368543a1c8947fa96776a15c682101cc7591b0d40936f3f18acccc72

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(ids, left, right, hidden, widths, scroll):
    visible = [c for c in ids if c not in hidden[:1]]
    l = [c for c in visible if c in left]
    r = [c for c in visible if c in right and c not in left]
    m = [c for c in visible if c not in left and c not in right]
    lo = {c: sum(widths[x] for x in l[:i]) for i,c in enumerate(l)}
    ro = {c: sum(widths[x] for x in r[i+1:]) for i,c in enumerate(r)}
    mo = {c: sum(widths[x] for x in m[:i]) - scroll for i,c in enumerate(m)}
    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 []]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 2:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 3:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 4:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 5:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

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
mixed panes[['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']][['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']]Passed
overlap priority[['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']][['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']]Passed
hidden pins[[], ['c'], ['b'], {}, {'b': 0}, {'c': -2}, 0, 4, [], ['b']][[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []]Failed
only left[['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []][['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []]Passed
only right[[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []][[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []]Passed
empty[[], [], [], {}, {}, {}, 0, 0, [], []][[], [], [], {}, {}, {}, 0, 0, [], []]Passed

SHA-256 / 1eda16d981208ac7a88e7b74cfe2d355e378dc004e4b67cd645fa4e853bd105a

3 / The verified repair

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

N = 1
observations = []
def solve(ids, left, right, hidden, widths, scroll):
    visible = [c for c in ids if c not in hidden]
    l = [c for c in visible if c in left]
    r = [c for c in visible if c in right and c not in left]
    m = [c for c in visible if c not in left and c not in right]
    lo = {c: sum(widths[x] for x in l[:i]) for i,c in enumerate(l)}
    ro = {c: sum(widths[x] for x in r[i+1:]) for i,c in enumerate(r)}
    mo = {c: sum(widths[x] for x in m[:i]) - scroll for i,c in enumerate(m)}
    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 []]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 2:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 3:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 4:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

if N == 5:
    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']])
    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']])
    check('hidden pins', solve(['a','b','c'], ['a'], ['b'], ['a','b'], {'a':2,'b':4,'c':8}, 2), [[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []])
    check('only left', solve(['a','b'], ['a','b'], [], [], {'a':2,'b':4}, 0), [['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []])
    check('only right', solve(['a','b'], [], ['a','b'], [], {'a':2,'b':4}, 0), [[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []])
    check('empty', solve([], [], [], [], {}, 0), [[], [], [], {}, {}, {}, 0, 0, [], []])

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
mixed panes[['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']][['a', 'b'], ['c'], ['d', 'e'], {'a': 0, 'b': 2}, {'d': 6, 'e': 0}, {'c': -3}, 5, 10, ['b'], ['d']]Passed
overlap priority[['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']][['a', 'b'], [], ['c'], {'a': 0, 'b': 2}, {'c': 0}, {}, 6, 8, ['b'], ['c']]Passed
hidden pins[[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []][[], ['c'], [], {}, {}, {'c': -2}, 0, 0, [], []]Passed
only left[['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []][['a', 'b'], [], [], {'a': 0, 'b': 2}, {}, {}, 6, 0, [], []]Passed
only right[[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []][[], [], ['a', 'b'], {}, {'a': 4, 'b': 0}, {}, 0, 6, [], []]Passed
empty[[], [], [], {}, {}, {}, 0, 0, [], []][[], [], [], {}, {}, {}, 0, 0, [], []]Passed

SHA-256 / 8b16da6eb8b26adf36e1442f1eaab7e6cc11f6ccbeae17d19fa3592f1604f5c4

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:42:55.798564+00:00.

Case digest / b1da7f0e9a4db0098860ba56890459823e25b55052d0510f8d025552cae0e76c