FAILURE MAP
← Case archive

FA-38031 / Table interactions / Open access

Table column resize transaction: resize end draft · case 01

The table resize end draft result violates the stipulated table column resize transaction contract.

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

ROOT CAUSE

The resize end draft decision uses "if event=='end':\n current[c]=state.get('draft',state['base'])" instead of "if event=='end':\n current[c]=proposed".

VERIFIED REPAIR

Apply the complete resize end draft rule: if event=='end': current[c]=proposed.

Unsuccessful approach: The attempted repair "if event=='end':\n current[c]=state['base']" still loses a required part of the table contract.

Case contract

A table resize snapshots its starting width and pointer, applies cumulative drag displacement from that snapshot with RTL inversion and bounds, supports live/deferred drawing, rolls back cancel, commits the final pointer displacement, and persists only changed widths.

Why this case matters

An offline table UI model isolates table column resize transaction, 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(state, event, pointer, delta, widths, constraints, rtl, live):
    out=dict(state); current=dict(widths)
    if event=='start':
        out={'pointer':pointer,'column':state['column'],'base':widths[state['column']],'draft':widths[state['column']]}
        return {'state':out,'widths':current,'persist':None}
    if state.get('pointer')!=pointer: return {'state':out,'widths':current,'persist':None}
    c=state['column']; low,high=constraints[c]
    proposed=max(low,min(high,state['base']+(-delta if rtl else delta)))
    if event=='move':
        out['draft']=proposed
        if live: current[c]=proposed
        return {'state':out,'widths':current,'persist':None}
    if event=='cancel':
        current[c]=state['base']; return {'state':{},'widths':current,'persist':None}
    if event=='end':
        current[c]=state.get('draft',state['base'])
        return {'state':{},'widths':current,'persist':(c,proposed) if proposed!=state['base'] else None}
    return {'state':out,'widths':current,'persist':None}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*1,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 2:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*2,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 20, 'draft': 20}, 'widths': {'a': 20, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 3:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*3,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 30, 'draft': 30}, 'widths': {'a': 30, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 4:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*4,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 40, 'draft': 40}, 'widths': {'a': 40, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 5:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*5,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 50, 'draft': 50}, 'widths': {'a': 50, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

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
fresh drag snapshot{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10, 'b': 9}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10, 'b': 9}}Passed
live move absolute delta{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 15, 'pointer': 7}, 'widths': {'a': 15, 'b': 9}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 15, 'pointer': 7}, 'widths': {'a': 15, 'b': 9}}Passed
deferred rtl move{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 5, 'pointer': 7}, 'widths': {'a': 10}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 5, 'pointer': 7}, 'widths': {'a': 10}}Passed
other pointer{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10}}Passed
cancel live{'persist': None, 'state': {}, 'widths': {'a': 10}}{'persist': None, 'state': {}, 'widths': {'a': 10}}Passed
end latest delta{'persist': ['a', 50], 'state': {}, 'widths': {'a': 15}}{'persist': ['a', 50], 'state': {}, 'widths': {'a': 50}}Failed
end shrink{'persist': ['a', 8], 'state': {}, 'widths': {'a': 10}}{'persist': ['a', 8], 'state': {}, 'widths': {'a': 8}}Failed
noop end{'persist': None, 'state': {}, 'widths': {'a': 10}}{'persist': None, 'state': {}, 'widths': {'a': 10}}Passed

SHA-256 / 685b5b4be45ee32f1f96b0774ca0b6be69e6d153ecc95f630fb7adef3097bd64

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(state, event, pointer, delta, widths, constraints, rtl, live):
    out=dict(state); current=dict(widths)
    if event=='start':
        out={'pointer':pointer,'column':state['column'],'base':widths[state['column']],'draft':widths[state['column']]}
        return {'state':out,'widths':current,'persist':None}
    if state.get('pointer')!=pointer: return {'state':out,'widths':current,'persist':None}
    c=state['column']; low,high=constraints[c]
    proposed=max(low,min(high,state['base']+(-delta if rtl else delta)))
    if event=='move':
        out['draft']=proposed
        if live: current[c]=proposed
        return {'state':out,'widths':current,'persist':None}
    if event=='cancel':
        current[c]=state['base']; return {'state':{},'widths':current,'persist':None}
    if event=='end':
        current[c]=state['base']
        return {'state':{},'widths':current,'persist':(c,proposed) if proposed!=state['base'] else None}
    return {'state':out,'widths':current,'persist':None}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*1,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 2:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*2,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 20, 'draft': 20}, 'widths': {'a': 20, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 3:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*3,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 30, 'draft': 30}, 'widths': {'a': 30, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 4:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*4,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 40, 'draft': 40}, 'widths': {'a': 40, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 5:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*5,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 50, 'draft': 50}, 'widths': {'a': 50, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

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
fresh drag snapshot{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10, 'b': 9}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10, 'b': 9}}Passed
live move absolute delta{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 15, 'pointer': 7}, 'widths': {'a': 15, 'b': 9}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 15, 'pointer': 7}, 'widths': {'a': 15, 'b': 9}}Passed
deferred rtl move{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 5, 'pointer': 7}, 'widths': {'a': 10}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 5, 'pointer': 7}, 'widths': {'a': 10}}Passed
other pointer{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10}}Passed
cancel live{'persist': None, 'state': {}, 'widths': {'a': 10}}{'persist': None, 'state': {}, 'widths': {'a': 10}}Passed
end latest delta{'persist': ['a', 50], 'state': {}, 'widths': {'a': 10}}{'persist': ['a', 50], 'state': {}, 'widths': {'a': 50}}Failed
end shrink{'persist': ['a', 8], 'state': {}, 'widths': {'a': 10}}{'persist': ['a', 8], 'state': {}, 'widths': {'a': 8}}Failed
noop end{'persist': None, 'state': {}, 'widths': {'a': 10}}{'persist': None, 'state': {}, 'widths': {'a': 10}}Passed

SHA-256 / c27624167f7bdf81b6435f8a8087a8fe93556468ee882bc0b6a587883227776e

3 / The verified repair

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

N = 1
observations = []
def solve(state, event, pointer, delta, widths, constraints, rtl, live):
    out=dict(state); current=dict(widths)
    if event=='start':
        out={'pointer':pointer,'column':state['column'],'base':widths[state['column']],'draft':widths[state['column']]}
        return {'state':out,'widths':current,'persist':None}
    if state.get('pointer')!=pointer: return {'state':out,'widths':current,'persist':None}
    c=state['column']; low,high=constraints[c]
    proposed=max(low,min(high,state['base']+(-delta if rtl else delta)))
    if event=='move':
        out['draft']=proposed
        if live: current[c]=proposed
        return {'state':out,'widths':current,'persist':None}
    if event=='cancel':
        current[c]=state['base']; return {'state':{},'widths':current,'persist':None}
    if event=='end':
        current[c]=proposed
        return {'state':{},'widths':current,'persist':(c,proposed) if proposed!=state['base'] else None}
    return {'state':out,'widths':current,'persist':None}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*1,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 2:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*2,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 20, 'draft': 20}, 'widths': {'a': 20, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 3:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*3,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 30, 'draft': 30}, 'widths': {'a': 30, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 4:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*4,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 40, 'draft': 40}, 'widths': {'a': 40, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

if N == 5:
    check('fresh drag snapshot', solve({'column':'a','base':1,'draft':2}, 'start', 7, 0, {'a':10*5,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 50, 'draft': 50}, 'widths': {'a': 50, 'b': 9}, 'persist': None})
    check('live move absolute delta', solve({'pointer':7,'column':'a','base':10,'draft':13}, 'move', 7, 5, {'a':13,'b':9}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 15}, 'widths': {'a': 15, 'b': 9}, 'persist': None})
    check('deferred rtl move', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'move', 7, 20, {'a':10}, {'a':(5,50)}, True, False), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 5}, 'widths': {'a': 10}, 'persist': None})
    check('other pointer', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 8, 20, {'a':10}, {'a':(5,50)}, False, True), {'state': {'pointer': 7, 'column': 'a', 'base': 10, 'draft': 10}, 'widths': {'a': 10}, 'persist': None})
    check('cancel live', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'cancel', 7, 5, {'a':15}, {'a':(5,50)}, False, True), {'state': {}, 'widths': {'a': 10}, 'persist': None})
    check('end latest delta', solve({'pointer':7,'column':'a','base':10,'draft':15}, 'end', 7, 70, {'a':15}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 50}, 'persist': ('a', 50)})
    check('end shrink', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, -2, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 8}, 'persist': ('a', 8)})
    check('noop end', solve({'pointer':7,'column':'a','base':10,'draft':10}, 'end', 7, 0, {'a':10}, {'a':(5,50)}, False, False), {'state': {}, 'widths': {'a': 10}, 'persist': None})

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
fresh drag snapshot{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10, 'b': 9}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10, 'b': 9}}Passed
live move absolute delta{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 15, 'pointer': 7}, 'widths': {'a': 15, 'b': 9}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 15, 'pointer': 7}, 'widths': {'a': 15, 'b': 9}}Passed
deferred rtl move{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 5, 'pointer': 7}, 'widths': {'a': 10}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 5, 'pointer': 7}, 'widths': {'a': 10}}Passed
other pointer{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10}}{'persist': None, 'state': {'base': 10, 'column': 'a', 'draft': 10, 'pointer': 7}, 'widths': {'a': 10}}Passed
cancel live{'persist': None, 'state': {}, 'widths': {'a': 10}}{'persist': None, 'state': {}, 'widths': {'a': 10}}Passed
end latest delta{'persist': ['a', 50], 'state': {}, 'widths': {'a': 50}}{'persist': ['a', 50], 'state': {}, 'widths': {'a': 50}}Passed
end shrink{'persist': ['a', 8], 'state': {}, 'widths': {'a': 8}}{'persist': ['a', 8], 'state': {}, 'widths': {'a': 8}}Passed
noop end{'persist': None, 'state': {}, 'widths': {'a': 10}}{'persist': None, 'state': {}, 'widths': {'a': 10}}Passed

SHA-256 / e50cc1f1603bf899ec1d5b8377bf2e2a387554d4135d32ba38472daaed1abc09

Verification & scope

Resize bounds are ordered and the column exists; nonstart events carry a well-formed captured drag snapshot. 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:07.120905+00:00.

Case digest / 8e87b70c0d2afbc0db40a8838f333bde89d88c35fe263fb52a9a7d098f5b3817