FAILURE MAP
← Case archive

FA-38366 / Tree accessibility / Open access

Visible tree range selection: Range union toggles previously selected descendants · case 01

Range union toggles previously selected descendants produces the wrong hierarchical widget state in a regression fixture.

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

ROOT CAUSE

The range-selection contract is violated at `selected=set(eligible)|kept` by replacing it with `selected=set(eligible)&kept`.

VERIFIED REPAIR

Restore `selected=set(eligible)|kept` at this fault site while retaining the other tree state decisions.

Unsuccessful approach: The partial repair `selected=set(eligible)-kept` 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)+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 fixtureActualExpectedOutcome
forward[[], 'c2', 'z', False][['z', 'c0', 'c2'], 'c2', 'z', True]Failed
reverse[[], 'z', 'a', False][['z', 'c0', 'c2', 'a'], 'z', 'a', True]Failed
additive[[], 'c2', 'z', False][['z', 'c0', 'c2', 'a'], 'c2', 'z', True]Failed
hidden anchor[[], 'z', 'c0', False][['z', 'c0'], 'z', 'c0', True]Failed
empty branch[[], 'c2', 'z', False][['z', 'c0', 'c2'], 'c2', 'z', False]Failed
partial branch[[], 'c2', 'z', False][['z', 'c0', 'c2'], 'c2', 'z', False]Failed
singleton[[], 'c0', 'c0', False][['c0'], 'c0', 'c0', False]Failed
disabled target[[], 'c1', 'z', False][['z', 'c0'], 'c1', 'z', True]Failed

SHA-256 / 0bf5b9f6ef5f237dacfd926e15b9d0cea64146f506a69878fdc8f9199bcca48f

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):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 fixtureActualExpectedOutcome
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'], 'c2', 'z', True][['z', 'c0', 'c2', 'a'], 'c2', 'z', True]Failed
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 / a77d97fbf47afe6507a4ca2c7f821ff43dc11be8173a251a5972654bace92d4b

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 fixtureActualExpectedOutcome
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.423733+00:00.

Case digest / 30918b4e0663092b66b33f273740436000d001554d7904bd7b4d1cf4aca1486b