FAILURE MAP
← Case archive

FA-39166 / Tree accessibility / Open access

Treegrid rectangular cell range: Cell range spills beyond selected columns · case 01

Cell range spills beyond selected columns produces the wrong hierarchical widget state in a regression fixture.

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

ROOT CAUSE

The treegrid-range contract is violated at `for r in rowspan for c in colspan` by replacing it with `for r in rows for c in colspan`.

VERIFIED REPAIR

Restore `for r in rowspan for c in colspan` at this fault site while retaining the other tree state decisions.

Unsuccessful approach: The partial repair `for r in rowspan for c in cols` still violates a boundary or preservation case.

Case contract

A cell range spans visible rows within the anchor sibling group and visible columns; collapsed descendants and other sibling groups are excluded. Disabled rows and protected cells are skipped. Range serialization follows row-major visible order; additive range preserves prior cells.

Why this case matters

Offline executable model of a hierarchical accessibility interaction; inputs are bounded and valid as stipulated. No browser, assistive technology, or normative ARIA conformance is claimed.

1 / The failure

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

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rows for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), expected)
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
rectangle[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'v0:name', 'v0:x', 'v0:y'], 'd:y', ['a', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]Failed
reverse rows[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'v0:name', 'v0:x', 'v0:y'], 'a:y', ['d', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]Failed
reverse cols[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'v0:name', 'v0:x', 'v0:y'], 'd:name', ['a', 'y']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]Failed
additive[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail', 'v0:name', 'v0:x', 'v0:y'], 'd:y', ['a', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]Failed
single cell[['a:x', 'd:x', 'v0:x'], 'c:x', ['c', 'x']][[], 'c:x', ['c', 'x']]Failed
narrow column[['a:x', 'd:x', 'v0:x'], 'd:x', ['a', 'x']][['a:x', 'd:x'], 'd:x', ['a', 'x']]Failed

SHA-256 / f5696166d99945cff80034a71bb97f331c7892e63de460a5f4a029f7cabc670e

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in cols if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), expected)
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
rectangle[['a:name', 'a:x', 'a:y', 'a:tail', 'c:name', 'c:y', 'c:tail', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]Failed
reverse rows[['a:name', 'a:x', 'a:y', 'a:tail', 'c:name', 'c:y', 'c:tail', 'd:name', 'd:x', 'd:y', 'd:tail'], 'a:y', ['d', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]Failed
reverse cols[['a:name', 'a:x', 'a:y', 'a:tail', 'c:name', 'c:y', 'c:tail', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:name', ['a', 'y']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]Failed
additive[['a:name', 'a:x', 'a:y', 'a:tail', 'c:name', 'c:y', 'c:tail', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]Failed
single cell[['c:name', 'c:y', 'c:tail'], 'c:x', ['c', 'x']][[], 'c:x', ['c', 'x']]Failed
narrow column[['a:name', 'a:x', 'a:y', 'a:tail', 'c:name', 'c:y', 'c:tail', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:x', ['a', 'x']][['a:x', 'd:x'], 'd:x', ['a', 'x']]Failed

SHA-256 / 14312bbafab5743b3c5a30bde7364fe950a750bea2eb641fa249025038620d67

3 / The verified repair

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

N = 1
observations = []
def solve(d):
    rows=[x for x in d['rows'] if d['parents'][x]==d['parents'][d['anchor_row']]]
    a=rows.index(d['anchor_row']); b=rows.index(d['target_row'])
    rowspan=rows[min(a,b):max(a,b)+1]
    cols=[x for x in d['columns'] if x not in d['hidden']]
    c=cols.index(d['anchor_col']); e=cols.index(d['target_col'])
    colspan=cols[min(c,e):max(c,e)+1]
    cells=[r+':'+c for r in rowspan for c in colspan if r not in d['disabled'] and r+':'+c not in d['protected']]
    combined=set(cells)|(set(d['selected']) if d['additive'] else set())
    ordered=[r+':'+c for r in d['rows'] for c in cols if r+':'+c in combined]
    return [ordered,d['target_row']+':'+d['target_col'],[d['anchor_row'],d['anchor_col']]]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 2: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 3: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 4: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])], 5: [('rectangle', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]), ('reverse rows', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'd', 'target_row': 'a', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]), ('reverse cols', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'y', 'target_col': 'name', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]), ('additive', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'name', 'target_col': 'y', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': True}, [['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]), ('single cell', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'c', 'target_row': 'c', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [[], 'c:x', ['c', 'x']]), ('narrow column', {'rows': ['a', 'child', 'b', 'c', 'd', 'v0', 'v1', 'v2', 'v3', 'v4'], 'parents': {'a': 'r', 'child': 'a', 'b': 'r', 'c': 'r', 'd': 'r', 'v0': 'r', 'v1': 'r', 'v2': 'r', 'v3': 'r', 'v4': 'r'}, 'anchor_row': 'a', 'target_row': 'd', 'columns': ['name', 'h', 'x', 'y', 'tail'], 'hidden': ['h'], 'anchor_col': 'x', 'target_col': 'x', 'disabled': ['b'], 'protected': ['c:x'], 'selected': ['d:tail'], 'additive': False}, [['a:x', 'd:x'], 'd:x', ['a', 'x']])]}
for label, data, expected in cases[N]:
    check(label, solve(data), expected)
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
rectangle[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:y', ['a', 'name']]Passed
reverse rows[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'a:y', ['d', 'name']]Passed
reverse cols[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y'], 'd:name', ['a', 'y']]Passed
additive[['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']][['a:name', 'a:x', 'a:y', 'c:name', 'c:y', 'd:name', 'd:x', 'd:y', 'd:tail'], 'd:y', ['a', 'name']]Passed
single cell[[], 'c:x', ['c', 'x']][[], 'c:x', ['c', 'x']]Passed
narrow column[['a:x', 'd:x'], 'd:x', ['a', 'x']][['a:x', 'd:x'], 'd:x', ['a', 'x']]Passed

SHA-256 / 4454cd352af60b048d8b8097d7d6a5c32497426de1e40d3a7b413e569c1da6c9

Verification & scope

Synthetic deterministic hierarchical-widget data contract; not an implementation of a browser accessibility tree. 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:18.498768+00:00.

Case digest / 0d783216bc05eca0e0c5095b04ae6df8a014be780ab441f2cff546b0e7017876