FA-38421 / Tree accessibility / Open access
Hierarchical checkbox cascade: Empty or unloaded branch reports fully checked · case 01
Empty or unloaded branch reports fully checked produces the wrong hierarchical widget state in a regression fixture.
ROOT CAUSE
The checkbox-cascade contract is violated at `bool(write) and count==len(write) and not d['unknown']` by replacing it with `count==len(write) and not d['unknown']`.
VERIFIED REPAIR
Restore `bool(write) and count==len(write) and not d['unknown']` at this fault site while retaining the other tree state decisions.
Unsuccessful approach: The partial repair `bool(write) and count==len(write)` 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 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=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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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'], 'true', [], False] | [['outside', 'c0', 'c1'], 'false', [], False] | Failed |
| disabled only | [['outside', 'c0', 'c1'], 'true', [], False] | [['outside', 'c0', 'c1'], 'false', [], False] | Failed |
| protected checked | [['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True] | [['c0', 'c1', 'c2'], 'true', ['c0', 'c2'], True] | Passed |
SHA-256 / 4c64a173a4d372458d9a7f9ebe7b4cd0fce848c864ef0a88ce9417c7819a3b59
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=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)
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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'], 'true', ['c2'], True] | [['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 / ff0af89673f3d313852cc692c87db1ddbca4f3158a574f95d3a9f89197964478
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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:11.006193+00:00.
Case digest / 6c083fd060115e0fe7e31d08ba7592973b40abc9a782b7bc128deb8a0700b321