FA-39316 / Tree accessibility / Open access
Nested tree event ownership: Unregistered row or editor command reaches tree handler · case 01
Unregistered row or editor command reaches tree handler produces the wrong hierarchical widget state in a regression fixture.
ROOT CAUSE
The nested-tree-boundary contract is violated at `owned and row in d['rows'] and not already and not editor` by replacing it with `owned and not already and not editor`.
VERIFIED REPAIR
Restore `owned and row in d['rows'] and not already and not editor` at this fault site while retaining the other tree state decisions.
Unsuccessful approach: The partial repair `owned and row in d['rows'] and not already` still violates a boundary or preservation case.
Case contract
A nested tree handles row events only for its nearest owning tree. Composed event paths may contain row editors and embedded widgets. Editing-origin keys remain with the editor; handled child-tree events do not bubble into ancestor tree commands. Disabled rows suppress activation but still permit context inspection.
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):
nearest=next((x[1] for x in d['path'] if x[0]=='tree'),None)
owned=nearest==d['tree']
row=next((x[1] for x in d['path'] if x[0]=='row'),None)
editor=any(x[0]=='editor' for x in d['path'][:next((i for i,x in enumerate(d['path']) if x[0]=='row'),len(d['path']))])
already=d['handled']
command=owned and not already and not editor
activate=command and d['event']=='activate' and row not in d['disabled']
inspect=command and d['event']=='inspect'
stop=command and (activate or inspect)
focus=row if activate else d['focus']
return [owned,row,editor,activate,inspect,stop,focus]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 2: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 3: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 4: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 5: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])]}
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 |
|---|---|---|---|
| inner activation | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, True, False, True, 'b'] | Passed |
| outer listener | [False, 'b', False, False, False, False, 'a'] | [False, 'b', False, False, False, False, 'a'] | Passed |
| editor origin | [True, 'b', True, False, False, False, 'a'] | [True, 'b', True, False, False, False, 'a'] | Passed |
| editor outside row | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, True, False, True, 'b'] | Passed |
| handled child | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| disabled activation | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| disabled inspect | [True, 'b', False, False, True, True, 'a'] | [True, 'b', False, False, True, True, 'a'] | Passed |
| unregistered row | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, False, False, False, 'a'] | Failed |
| other event | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
SHA-256 / e88d8d67e3d42d393192c12f9188a8ec424b8df92723d8883a48870e4cbf14ee
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
nearest=next((x[1] for x in d['path'] if x[0]=='tree'),None)
owned=nearest==d['tree']
row=next((x[1] for x in d['path'] if x[0]=='row'),None)
editor=any(x[0]=='editor' for x in d['path'][:next((i for i,x in enumerate(d['path']) if x[0]=='row'),len(d['path']))])
already=d['handled']
command=owned and row in d['rows'] and not already
activate=command and d['event']=='activate' and row not in d['disabled']
inspect=command and d['event']=='inspect'
stop=command and (activate or inspect)
focus=row if activate else d['focus']
return [owned,row,editor,activate,inspect,stop,focus]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 2: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 3: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 4: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 5: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])]}
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 |
|---|---|---|---|
| inner activation | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, True, False, True, 'b'] | Passed |
| outer listener | [False, 'b', False, False, False, False, 'a'] | [False, 'b', False, False, False, False, 'a'] | Passed |
| editor origin | [True, 'b', True, True, False, True, 'b'] | [True, 'b', True, False, False, False, 'a'] | Failed |
| editor outside row | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, True, False, True, 'b'] | Passed |
| handled child | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| disabled activation | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| disabled inspect | [True, 'b', False, False, True, True, 'a'] | [True, 'b', False, False, True, True, 'a'] | Passed |
| unregistered row | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| other event | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
SHA-256 / d74cef76c1481595f6490911a2fdc83197546bb8df0e13a954191092efa03b3c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
nearest=next((x[1] for x in d['path'] if x[0]=='tree'),None)
owned=nearest==d['tree']
row=next((x[1] for x in d['path'] if x[0]=='row'),None)
editor=any(x[0]=='editor' for x in d['path'][:next((i for i,x in enumerate(d['path']) if x[0]=='row'),len(d['path']))])
already=d['handled']
command=owned and row in d['rows'] and not already and not editor
activate=command and d['event']=='activate' and row not in d['disabled']
inspect=command and d['event']=='inspect'
stop=command and (activate or inspect)
focus=row if activate else d['focus']
return [owned,row,editor,activate,inspect,stop,focus]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 2: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 3: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 4: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])], 5: [('inner activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('outer listener', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'outer', 'rows': ['outerrow'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [False, 'b', False, False, False, False, 'a']), ('editor origin', {'path': [['editor', 'e'], ['row', 'b'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', True, False, False, False, 'a']), ('editor outside row', {'path': [['row', 'b'], ['editor', 'outer'], ['tree', 'inner']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, True, False, True, 'b']), ('handled child', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': True, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled activation', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'activate', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('disabled inspect', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'inspect', 'disabled': ['b'], 'focus': 'a'}, [True, 'b', False, False, True, True, 'a']), ('unregistered row', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a'], 'handled': False, 'event': 'activate', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a']), ('other event', {'path': [['row', 'b'], ['tree', 'inner'], ['row', 'outerrow'], ['tree', 'outer']], 'tree': 'inner', 'rows': ['a', 'b', 'v0', 'v1', 'v2', 'v3', 'v4'], 'handled': False, 'event': 'hover', 'disabled': [], 'focus': 'a'}, [True, 'b', False, False, False, False, 'a'])]}
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 |
|---|---|---|---|
| inner activation | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, True, False, True, 'b'] | Passed |
| outer listener | [False, 'b', False, False, False, False, 'a'] | [False, 'b', False, False, False, False, 'a'] | Passed |
| editor origin | [True, 'b', True, False, False, False, 'a'] | [True, 'b', True, False, False, False, 'a'] | Passed |
| editor outside row | [True, 'b', False, True, False, True, 'b'] | [True, 'b', False, True, False, True, 'b'] | Passed |
| handled child | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| disabled activation | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| disabled inspect | [True, 'b', False, False, True, True, 'a'] | [True, 'b', False, False, True, True, 'a'] | Passed |
| unregistered row | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
| other event | [True, 'b', False, False, False, False, 'a'] | [True, 'b', False, False, False, False, 'a'] | Passed |
SHA-256 / a90fed347b1b044763a9d370ae0b503d4aa998b1e872213b45be68647eb573bc
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:20.026962+00:00.
Case digest / da979bf29b45324c5a28333193818645e03e4ffa2409c2097cfdeba258a37a38