FA-39141 / Tree accessibility / Open access
Treegrid rectangular cell range: Cell range crosses another hierarchy level · case 01
Cell range crosses another hierarchy level produces the wrong hierarchical widget state in a regression fixture.
ROOT CAUSE
The treegrid-range contract is violated at `d['parents'][x]==d['parents'][d['anchor_row']]` by replacing it with `True`.
VERIFIED REPAIR
Restore `d['parents'][x]==d['parents'][d['anchor_row']]` at this fault site while retaining the other tree state decisions.
Unsuccessful approach: The partial repair `x in [d['anchor_row'],d['target_row']]` 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 True]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| rectangle | [['a:name', 'a:x', 'a:y', 'child:name', 'child:x', 'child: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']] | Failed |
| reverse rows | [['a:name', 'a:x', 'a:y', 'child:name', 'child:x', 'child: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']] | Failed |
| reverse cols | [['a:name', 'a:x', 'a:y', 'child:name', 'child:x', 'child: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']] | Failed |
| additive | [['a:name', 'a:x', 'a:y', 'child:name', 'child:x', 'child: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']] | Failed |
| single cell | [[], 'c:x', ['c', 'x']] | [[], 'c:x', ['c', 'x']] | Passed |
| narrow column | [['a:x', 'child:x', 'd:x'], 'd:x', ['a', 'x']] | [['a:x', 'd:x'], 'd:x', ['a', 'x']] | Failed |
SHA-256 / 2dad686c6e26b742c63714c67e027dd63fdc3e0232f9f8fb932693ecc2ffc499
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 x in [d['anchor_row'],d['target_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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| rectangle | [['a:name', 'a:x', 'a: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']] | Failed |
| reverse rows | [['a:name', 'a:x', 'a: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']] | Failed |
| reverse cols | [['a:name', 'a:x', 'a: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']] | Failed |
| additive | [['a:name', 'a:x', 'a: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']] | Failed |
| 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 / 6438ce6ec8ddfc9ef32e3e907bb3eedd42df933248c30c32f470b9a6c21629b7
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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.268013+00:00.
Case digest / c5880e7e7cd9f29c350f837800b2dd4237d08927aa8adcdd5e139aa77663aa8e