FAILURE MAP
← Case archive

FA-38396 / Tree accessibility / Open access

Hierarchical checkbox cascade: Partial branch toggles toward unchecked · case 01

Partial branch toggles toward unchecked produces the wrong hierarchical widget state in a regression fixture.

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

ROOT CAUSE

The checkbox-cascade contract is violated at `not all(x in checked for x in write) if write else False` by replacing it with `not any(x in checked for x in write) if write else False`.

VERIFIED REPAIR

Restore `not all(x in checked for x in write) if write else False` at this fault site while retaining the other tree state decisions.

Unsuccessful approach: The partial repair `all(x in checked for x in write) if write else False` still violates a boundary or preservation case.

Case contract

Descendants and leaves are supplied for one branch, without cycles. Toggle writable leaves only. Preserve disabled and unrelated checks; derive parent state from writable leaves; unknown children force mixed unless no leaves are checked.

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):
    leaves=d['leaves']; disabled=set(d['disabled']); checked=set(d['checked'])
    write=[x for x in leaves if x not in disabled]
    target=not any(x in checked for x in write) if write else False
    keep=checked-set(write)
    changed=set(write) if target else set()
    after=keep|changed
    count=sum(x in after for x in write)
    complete=bool(write) and count==len(write) and not d['unknown']
    mixed=count>0 and not complete
    state='true' if complete else ('mixed' if mixed else 'false')
    order=[x for x in d['all'] if x in after]
    changed_ids=[x for x in write if (x in checked)!=(x in after)]
    return [order,state,changed_ids,target]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('partial', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['c0', 'c2'], 'true', ['c0', 'c2'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True])], 2: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3'], 'true', ['c2', 'c3'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['c0', 'c2', 'c3'], 'true', ['c0', 'c2', 'c3'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3'], 'mixed', ['c2', 'c3'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3'], 'true', ['c0', 'c2', 'c3'], True])], 3: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'true', ['c2', 'c3', 'c4'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4'], 'true', ['c0', 'c2', 'c3', 'c4'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'mixed', ['c2', 'c3', 'c4'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4'], 'true', ['c0', 'c2', 'c3', 'c4'], True])], 4: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'true', ['c2', 'c3', 'c4', 'c5'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4', 'c5'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4', 'c5'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'mixed', ['c2', 'c3', 'c4', 'c5'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5'], True])], 5: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c2', 'c3', 'c4', 'c5', 'c6'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'mixed', ['c2', 'c3', 'c4', 'c5', 'c6'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 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
partial[['outside', 'c1'], 'false', ['c0'], False][['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True]Failed
all checked[['outside', 'c1'], 'false', ['c0', 'c2'], False][['outside', 'c1'], 'false', ['c0', 'c2'], False]Passed
none checked[['c0', 'c2'], 'true', ['c0', 'c2'], True][['c0', 'c2'], 'true', ['c0', 'c2'], True]Passed
unknown descendants[['outside', 'c1'], 'false', ['c0'], False][['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True]Failed
empty branch[['outside', 'c0', 'c1'], 'false', [], False][['outside', 'c0', 'c1'], 'false', [], False]Passed
disabled only[['outside', 'c0', 'c1'], 'false', [], False][['outside', 'c0', 'c1'], 'false', [], False]Passed
protected checked[['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True][['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True]Passed

SHA-256 / 8f527ccb26d3059d3231b7fc9915a02fc2a8c66438ae3aa7f68f2c0370db81a3

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(d):
    leaves=d['leaves']; disabled=set(d['disabled']); checked=set(d['checked'])
    write=[x for x in leaves if x not in disabled]
    target=all(x in checked for x in write) if write else False
    keep=checked-set(write)
    changed=set(write) if target else set()
    after=keep|changed
    count=sum(x in after for x in write)
    complete=bool(write) and count==len(write) and not d['unknown']
    mixed=count>0 and not complete
    state='true' if complete else ('mixed' if mixed else 'false')
    order=[x for x in d['all'] if x in after]
    changed_ids=[x for x in write if (x in checked)!=(x in after)]
    return [order,state,changed_ids,target]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('partial', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['c0', 'c2'], 'true', ['c0', 'c2'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True])], 2: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3'], 'true', ['c2', 'c3'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['c0', 'c2', 'c3'], 'true', ['c0', 'c2', 'c3'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3'], 'mixed', ['c2', 'c3'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3'], 'true', ['c0', 'c2', 'c3'], True])], 3: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'true', ['c2', 'c3', 'c4'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4'], 'true', ['c0', 'c2', 'c3', 'c4'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'mixed', ['c2', 'c3', 'c4'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4'], 'true', ['c0', 'c2', 'c3', 'c4'], True])], 4: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'true', ['c2', 'c3', 'c4', 'c5'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4', 'c5'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4', 'c5'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'mixed', ['c2', 'c3', 'c4', 'c5'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5'], True])], 5: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c2', 'c3', 'c4', 'c5', 'c6'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'mixed', ['c2', 'c3', 'c4', 'c5', 'c6'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 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
partial[['outside', 'c1'], 'false', ['c0'], False][['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True]Failed
all checked[['outside', 'c0', 'c1', 'c2'], 'true', [], True][['outside', 'c1'], 'false', ['c0', 'c2'], False]Failed
none checked[[], 'false', [], False][['c0', 'c2'], 'true', ['c0', 'c2'], True]Failed
unknown descendants[['outside', 'c1'], 'false', ['c0'], False][['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True]Failed
empty branch[['outside', 'c0', 'c1'], 'false', [], False][['outside', 'c0', 'c1'], 'false', [], False]Passed
disabled only[['outside', 'c0', 'c1'], 'false', [], False][['outside', 'c0', 'c1'], 'false', [], False]Passed
protected checked[['c1'], 'false', [], False][['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True]Failed

SHA-256 / 5a1bdfde0d4afed1c898f4c5cd3a827419a27bec725935260630fab6b91f2e13

3 / The verified repair

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

N = 1
observations = []
def solve(d):
    leaves=d['leaves']; disabled=set(d['disabled']); checked=set(d['checked'])
    write=[x for x in leaves if x not in disabled]
    target=not all(x in checked for x in write) if write else False
    keep=checked-set(write)
    changed=set(write) if target else set()
    after=keep|changed
    count=sum(x in after for x in write)
    complete=bool(write) and count==len(write) and not d['unknown']
    mixed=count>0 and not complete
    state='true' if complete else ('mixed' if mixed else 'false')
    order=[x for x in d['all'] if x in after]
    changed_ids=[x for x in write if (x in checked)!=(x in after)]
    return [order,state,changed_ids,target]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('partial', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['c0', 'c2'], 'true', ['c0', 'c2'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2'], 'unknown': False}, [['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True])], 2: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3'], 'true', ['c2', 'c3'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['c0', 'c2', 'c3'], 'true', ['c0', 'c2', 'c3'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3'], 'mixed', ['c2', 'c3'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3'], 'true', ['c0', 'c2', 'c3'], True])], 3: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'true', ['c2', 'c3', 'c4'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4'], 'true', ['c0', 'c2', 'c3', 'c4'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'mixed', ['c2', 'c3', 'c4'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4'], 'true', ['c0', 'c2', 'c3', 'c4'], True])], 4: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'true', ['c2', 'c3', 'c4', 'c5'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4', 'c5'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4', 'c5'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'mixed', ['c2', 'c3', 'c4', 'c5'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4', 'c5'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5'], True])], 5: [('partial', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c2', 'c3', 'c4', 'c5', 'c6'], True]), ('all checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c1'], 'false', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], False]), ('none checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': [], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], True]), ('unknown descendants', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': True}, [['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'mixed', ['c2', 'c3', 'c4', 'c5', 'c6'], True]), ('empty branch', {'leaves': [], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('disabled only', {'leaves': ['c1'], 'disabled': ['c1'], 'checked': ['outside', 'c0', 'c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['outside', 'c0', 'c1'], 'false', [], False]), ('protected checked', {'leaves': ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'disabled': ['c1'], 'checked': ['c1'], 'all': ['outside', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'unknown': False}, [['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'], 'true', ['c0', 'c2', 'c3', 'c4', 'c5', 'c6'], 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
partial[['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True][['outside', 'c0', 'c1', 'c2'], 'true', ['c2'], True]Passed
all checked[['outside', 'c1'], 'false', ['c0', 'c2'], False][['outside', 'c1'], 'false', ['c0', 'c2'], False]Passed
none checked[['c0', 'c2'], 'true', ['c0', 'c2'], True][['c0', 'c2'], 'true', ['c0', 'c2'], True]Passed
unknown descendants[['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True][['outside', 'c0', 'c1', 'c2'], 'mixed', ['c2'], True]Passed
empty branch[['outside', 'c0', 'c1'], 'false', [], False][['outside', 'c0', 'c1'], 'false', [], False]Passed
disabled only[['outside', 'c0', 'c1'], 'false', [], False][['outside', 'c0', 'c1'], 'false', [], False]Passed
protected checked[['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True][['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True]Passed

SHA-256 / c4e4142aa33888abaa448461dc7b62f7dcef6a75472347c675c9cae0bf20b5f7

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

Case digest / 85a94988da76bb6ef7213266e5ff889ab7c0666fd84272c7c39e73d5d88b1171