FA-38351 / Tree accessibility / Open access
Visible tree range selection: Inclusive target is dropped · case 01
Inclusive target is dropped produces the wrong hierarchical widget state in a regression fixture.
ROOT CAUSE
The range-selection contract is violated at `max(a,b)+1` by replacing it with `max(a,b)`.
VERIFIED REPAIR
Restore `max(a,b)+1` at this fault site while retaining the other tree state decisions.
Unsuccessful approach: The partial repair `min(a,b)+1` still violates a boundary or preservation case.
Case contract
Selectable rows are the ordered visible preorder supplied in rows; disabled rows cannot be selected. A hidden anchor falls back to focus. Preserve outside selections only for additive ranges. Report focus, anchor, ordered selection, and branch coverage.
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=d['rows']; blocked=set(d['disabled']); old=set(d['selected'])
anchor=d['anchor'] if d['anchor'] in rows else d['focus']
a=rows.index(anchor); b=rows.index(d['target'])
span=rows[min(a,b):max(a,b)]
eligible=[x for x in span if x not in blocked]
kept=old if d['additive'] else set()
selected=set(eligible)|kept
ordered=[x for x in rows if x in selected]
focus=d['target']
next_anchor=anchor
branch=[x for x in d['branch'] if x in rows and x not in blocked]
covered=bool(branch) and all(x in selected for x in branch)
return [ordered,focus,next_anchor,covered]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2'], 'c2', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'a'], 'c2', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': []}, [['z', 'c0', 'c2'], 'c2', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2'], 'c2', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 2: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'a'], 'c3', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 3: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'a'], 'c4', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 4: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'a'], 'c5', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 5: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'c6', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])]}
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 |
|---|---|---|---|
| forward | [['z', 'c0'], 'c2', 'z', True] | [['z', 'c0', 'c2'], 'c2', 'z', True] | Failed |
| reverse | [['z', 'c0', 'c2'], 'z', 'a', True] | [['z', 'c0', 'c2', 'a'], 'z', 'a', True] | Failed |
| additive | [['z', 'c0', 'a'], 'c2', 'z', True] | [['z', 'c0', 'c2', 'a'], 'c2', 'z', True] | Failed |
| hidden anchor | [['z'], 'z', 'c0', False] | [['z', 'c0'], 'z', 'c0', True] | Failed |
| empty branch | [['z', 'c0'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', False] | Failed |
| partial branch | [['z', 'c0'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', False] | Failed |
| singleton | [[], 'c0', 'c0', False] | [['c0'], 'c0', 'c0', False] | Failed |
| disabled target | [['z', 'c0'], 'c1', 'z', True] | [['z', 'c0'], 'c1', 'z', True] | Passed |
SHA-256 / 733917386e38645719031307ef7ebae2c2d60031e1f3f8ed2d4c3edfcdf53106
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
rows=d['rows']; blocked=set(d['disabled']); old=set(d['selected'])
anchor=d['anchor'] if d['anchor'] in rows else d['focus']
a=rows.index(anchor); b=rows.index(d['target'])
span=rows[min(a,b):min(a,b)+1]
eligible=[x for x in span if x not in blocked]
kept=old if d['additive'] else set()
selected=set(eligible)|kept
ordered=[x for x in rows if x in selected]
focus=d['target']
next_anchor=anchor
branch=[x for x in d['branch'] if x in rows and x not in blocked]
covered=bool(branch) and all(x in selected for x in branch)
return [ordered,focus,next_anchor,covered]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2'], 'c2', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'a'], 'c2', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': []}, [['z', 'c0', 'c2'], 'c2', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2'], 'c2', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 2: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'a'], 'c3', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 3: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'a'], 'c4', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 4: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'a'], 'c5', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 5: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'c6', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])]}
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 |
|---|---|---|---|
| forward | [['z'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', True] | Failed |
| reverse | [['z'], 'z', 'a', False] | [['z', 'c0', 'c2', 'a'], 'z', 'a', True] | Failed |
| additive | [['z', 'a'], 'c2', 'z', False] | [['z', 'c0', 'c2', 'a'], 'c2', 'z', True] | Failed |
| hidden anchor | [['z'], 'z', 'c0', False] | [['z', 'c0'], 'z', 'c0', True] | Failed |
| empty branch | [['z'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', False] | Failed |
| partial branch | [['z'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', False] | Failed |
| singleton | [['c0'], 'c0', 'c0', False] | [['c0'], 'c0', 'c0', False] | Passed |
| disabled target | [['z'], 'c1', 'z', False] | [['z', 'c0'], 'c1', 'z', True] | Failed |
SHA-256 / dee3726ca805c2d51269c53176bbc44b4a07d81343dd942027a8399ea7b5d7a2
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
rows=d['rows']; blocked=set(d['disabled']); old=set(d['selected'])
anchor=d['anchor'] if d['anchor'] in rows else d['focus']
a=rows.index(anchor); b=rows.index(d['target'])
span=rows[min(a,b):max(a,b)+1]
eligible=[x for x in span if x not in blocked]
kept=old if d['additive'] else set()
selected=set(eligible)|kept
ordered=[x for x in rows if x in selected]
focus=d['target']
next_anchor=anchor
branch=[x for x in d['branch'] if x in rows and x not in blocked]
covered=bool(branch) and all(x in selected for x in branch)
return [ordered,focus,next_anchor,covered]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2'], 'c2', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'a'], 'c2', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': []}, [['z', 'c0', 'c2'], 'c2', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c2', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2'], 'c2', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 2: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'a'], 'c3', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c3', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3'], 'c3', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 3: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'a'], 'c4', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c4', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4'], 'c4', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 4: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'a'], 'c5', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c5', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5'], 'c5', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])], 5: [('forward', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', True]), ('reverse', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'a', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'z', 'a', True]), ('additive', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': True, 'branch': ['z', 'c0']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'c6', 'z', True]), ('hidden anchor', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'hidden', 'focus': 'c0', 'target': 'z', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'z', 'c0', True]), ('empty branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': []}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', False]), ('partial branch', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c6', 'additive': False, 'branch': ['a', 'z']}, [['z', 'c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'c6', 'z', False]), ('singleton', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'c0', 'focus': 'c0', 'target': 'c0', 'additive': False, 'branch': ['z', 'c0']}, [['c0'], 'c0', 'c0', False]), ('disabled target', {'rows': ['r', 'z', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a'], 'disabled': ['c1'], 'selected': ['a'], 'anchor': 'z', 'focus': 'c0', 'target': 'c1', 'additive': False, 'branch': ['z', 'c0']}, [['z', 'c0'], 'c1', 'z', True])]}
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 |
|---|---|---|---|
| forward | [['z', 'c0', 'c2'], 'c2', 'z', True] | [['z', 'c0', 'c2'], 'c2', 'z', True] | Passed |
| reverse | [['z', 'c0', 'c2', 'a'], 'z', 'a', True] | [['z', 'c0', 'c2', 'a'], 'z', 'a', True] | Passed |
| additive | [['z', 'c0', 'c2', 'a'], 'c2', 'z', True] | [['z', 'c0', 'c2', 'a'], 'c2', 'z', True] | Passed |
| hidden anchor | [['z', 'c0'], 'z', 'c0', True] | [['z', 'c0'], 'z', 'c0', True] | Passed |
| empty branch | [['z', 'c0', 'c2'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', False] | Passed |
| partial branch | [['z', 'c0', 'c2'], 'c2', 'z', False] | [['z', 'c0', 'c2'], 'c2', 'z', False] | Passed |
| singleton | [['c0'], 'c0', 'c0', False] | [['c0'], 'c0', 'c0', False] | Passed |
| disabled target | [['z', 'c0'], 'c1', 'z', True] | [['z', 'c0'], 'c1', 'z', True] | Passed |
SHA-256 / c77297f0abf164da3e46d648eb00773bc436cc39a83df4949dabc59c65bcc9af
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:10.263988+00:00.
Case digest / 0e6eddbf468403ddb008301218d9f72f780f095974806e92c8a42e0cc51063fb