{"abstract":"Descendant rows survive deletion of their root produces the wrong hierarchical widget state in a regression fixture.","category":"Tree accessibility","checks":6,"contract":"Remove a supplied subtree closure atomically. Focus inside the deleted subtree recovers to surviving next sibling, previous sibling, then parent, then first root. Preserve unrelated state; clear only removed anchor, edits, expansion, selection and pending loads.","evaluation_group":"s3-tree-delete-subtree","failed_approach":"The partial repair `rows=d['rows']` still violates a boundary or preservation case.","family":"s3-tree_accessibility-delete-subtree-01","id":"FA-38591","implementations":{"attempt":{"sha256":"a632664135d89cb10ca97060599cd11e7a656dc441233dd68ee36957b10f372c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    removed=set(d['removed'])\n    rows=d['rows']\n    selected=[x for x in d['selected'] if x not in removed]\n    expanded=[x for x in d['expanded'] if x not in removed]\n    pending={x:v for x,v in d['pending'].items() if x not in removed}\n    nextrow=next((x for x in d['next'] if x in rows),None)\n    prevrow=next((x for x in reversed(d['previous']) if x in rows),None)\n    fallback=next((x for x in [nextrow,prevrow,d['parent']]+d['roots'] if x in rows),None)\n    focus=fallback if d['focus'] in removed else d['focus']\n    anchor=None if d['anchor'] in removed else d['anchor']\n    edit=None if d['edit'] in removed else d['edit']\n    return [rows,selected,expanded,pending,focus,anchor,edit]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 2: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 3: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 4: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 5: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'x', None, None])]}\nfor label, data, expected in cases[N]:\n    check(label, solve(data), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"d304f6b8157d62b7153b9ae99d89d6ac35a952afaf2f44100793f7b14d803075","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    removed=set(d['removed'])\n    rows=[x for x in d['rows'] if x!=d['removed'][0]]\n    selected=[x for x in d['selected'] if x not in removed]\n    expanded=[x for x in d['expanded'] if x not in removed]\n    pending={x:v for x,v in d['pending'].items() if x not in removed}\n    nextrow=next((x for x in d['next'] if x in rows),None)\n    prevrow=next((x for x in reversed(d['previous']) if x in rows),None)\n    fallback=next((x for x in [nextrow,prevrow,d['parent']]+d['roots'] if x in rows),None)\n    focus=fallback if d['focus'] in removed else d['focus']\n    anchor=None if d['anchor'] in removed else d['anchor']\n    edit=None if d['edit'] in removed else d['edit']\n    return [rows,selected,expanded,pending,focus,anchor,edit]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 2: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 3: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 4: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 5: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'x', None, None])]}\nfor label, data, expected in cases[N]:\n    check(label, solve(data), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"82498f6a70cf985a6fa199d162acf3231f8dfbc239a2ad301f824a695d227202","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    removed=set(d['removed'])\n    rows=[x for x in d['rows'] if x not in removed]\n    selected=[x for x in d['selected'] if x not in removed]\n    expanded=[x for x in d['expanded'] if x not in removed]\n    pending={x:v for x,v in d['pending'].items() if x not in removed}\n    nextrow=next((x for x in d['next'] if x in rows),None)\n    prevrow=next((x for x in reversed(d['previous']) if x in rows),None)\n    fallback=next((x for x in [nextrow,prevrow,d['parent']]+d['roots'] if x in rows),None)\n    focus=fallback if d['focus'] in removed else d['focus']\n    anchor=None if d['anchor'] in removed else d['anchor']\n    edit=None if d['edit'] in removed else d['edit']\n    return [rows,selected,expanded,pending,focus,anchor,edit]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 2: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 3: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 4: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3'], ['a'], ['r'], {'a': 1}, 'x', None, None])], 5: [('next recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'z', None, None]), ('previous recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'x', None, None]), ('parent recovery', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['a'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'r', None, None]), ('unrelated focus', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'previous': ['a', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'a', 'anchor': 'a', 'edit': 'a'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'a', 'a', 'a']), ('last root', {'removed': ['b', 'c'], 'rows': ['b', 'c'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': [], 'previous': [], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [[], ['a'], ['r'], {'a': 1}, None, None, None]), ('stale neighbors', {'removed': ['b', 'c'], 'rows': ['r', 'a', 'x', 'b', 'c', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], 'selected': ['a', 'c'], 'expanded': ['r', 'b'], 'pending': {'a': 1, 'c': 2}, 'next': ['c'], 'previous': ['a', 'c', 'x'], 'parent': 'r', 'roots': ['r'], 'focus': 'c', 'anchor': 'c', 'edit': 'c'}, [['r', 'a', 'x', 'z', 'q0', 'q1', 'q2', 'q3', 'q4'], ['a'], ['r'], {'a': 1}, 'x', None, None])]}\nfor label, data, expected in cases[N]:\n    check(label, solve(data), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-tree_accessibility-delete-subtree-01","generated_at":"2026-09-29T14:43:12.745974+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"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.","repair":"Restore `rows=[x for x in d['rows'] if x not in removed]` at this fault site while retaining the other tree state decisions.","root_cause":"The delete-subtree contract is violated at `rows=[x for x in d['rows'] if x not in removed]` by replacing it with `rows=[x for x in d['rows'] if x!=d['removed'][0]]`.","sha256":"a8f6c74aed8b29fe601d38015c0665cef1ec5ee6b6309aaf67ddaeea02ff98f0","title":"Subtree deletion state cleanup: Descendant rows survive deletion of their root · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.775,"exit_code":1,"observations":[{"actual":[["r","a","x","b","c","z","q0"],["a"],["r"],{"a":1},"c",null,null],"check":"next recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"z",null,null],"passed":false},{"actual":[["r","a","x","b","c","z","q0"],["a"],["r"],{"a":1},"x",null,null],"check":"previous recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"passed":false},{"actual":[["r","a","x","b","c","z","q0"],["a"],["r"],{"a":1},"r",null,null],"check":"parent recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"r",null,null],"passed":false},{"actual":[["r","a","x","b","c","z","q0"],["a"],["r"],{"a":1},"a","a","a"],"check":"unrelated focus","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"a","a","a"],"passed":false},{"actual":[["b","c"],["a"],["r"],{"a":1},null,null,null],"check":"last root","expected":[[],["a"],["r"],{"a":1},null,null,null],"passed":false},{"actual":[["r","a","x","b","c","z","q0"],["a"],["r"],{"a":1},"c",null,null],"check":"stale neighbors","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"next recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"b\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"c\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"z\", null, null], \"passed\": false}, {\"check\": \"previous recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"b\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"passed\": false}, {\"check\": \"parent recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"b\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"r\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"r\", null, null], \"passed\": false}, {\"check\": \"unrelated focus\", \"actual\": [[\"r\", \"a\", \"x\", \"b\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"a\", \"a\", \"a\"], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"a\", \"a\", \"a\"], \"passed\": false}, {\"check\": \"last root\", \"actual\": [[\"b\", \"c\"], [\"a\"], [\"r\"], {\"a\": 1}, null, null, null], \"expected\": [[], [\"a\"], [\"r\"], {\"a\": 1}, null, null, null], \"passed\": false}, {\"check\": \"stale neighbors\", \"actual\": [[\"r\", \"a\", \"x\", \"b\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"c\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.838,"exit_code":1,"observations":[{"actual":[["r","a","x","c","z","q0"],["a"],["r"],{"a":1},"c",null,null],"check":"next recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"z",null,null],"passed":false},{"actual":[["r","a","x","c","z","q0"],["a"],["r"],{"a":1},"x",null,null],"check":"previous recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"passed":false},{"actual":[["r","a","x","c","z","q0"],["a"],["r"],{"a":1},"r",null,null],"check":"parent recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"r",null,null],"passed":false},{"actual":[["r","a","x","c","z","q0"],["a"],["r"],{"a":1},"a","a","a"],"check":"unrelated focus","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"a","a","a"],"passed":false},{"actual":[["c"],["a"],["r"],{"a":1},null,null,null],"check":"last root","expected":[[],["a"],["r"],{"a":1},null,null,null],"passed":false},{"actual":[["r","a","x","c","z","q0"],["a"],["r"],{"a":1},"c",null,null],"check":"stale neighbors","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"next recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"c\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"z\", null, null], \"passed\": false}, {\"check\": \"previous recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"passed\": false}, {\"check\": \"parent recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"r\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"r\", null, null], \"passed\": false}, {\"check\": \"unrelated focus\", \"actual\": [[\"r\", \"a\", \"x\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"a\", \"a\", \"a\"], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"a\", \"a\", \"a\"], \"passed\": false}, {\"check\": \"last root\", \"actual\": [[\"c\"], [\"a\"], [\"r\"], {\"a\": 1}, null, null, null], \"expected\": [[], [\"a\"], [\"r\"], {\"a\": 1}, null, null, null], \"passed\": false}, {\"check\": \"stale neighbors\", \"actual\": [[\"r\", \"a\", \"x\", \"c\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"c\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.284,"exit_code":0,"observations":[{"actual":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"z",null,null],"check":"next recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"z",null,null],"passed":true},{"actual":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"check":"previous recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"passed":true},{"actual":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"r",null,null],"check":"parent recovery","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"r",null,null],"passed":true},{"actual":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"a","a","a"],"check":"unrelated focus","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"a","a","a"],"passed":true},{"actual":[[],["a"],["r"],{"a":1},null,null,null],"check":"last root","expected":[[],["a"],["r"],{"a":1},null,null,null],"passed":true},{"actual":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"check":"stale neighbors","expected":[["r","a","x","z","q0"],["a"],["r"],{"a":1},"x",null,null],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"next recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"z\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"z\", null, null], \"passed\": true}, {\"check\": \"previous recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"passed\": true}, {\"check\": \"parent recovery\", \"actual\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"r\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"r\", null, null], \"passed\": true}, {\"check\": \"unrelated focus\", \"actual\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"a\", \"a\", \"a\"], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"a\", \"a\", \"a\"], \"passed\": true}, {\"check\": \"last root\", \"actual\": [[], [\"a\"], [\"r\"], {\"a\": 1}, null, null, null], \"expected\": [[], [\"a\"], [\"r\"], {\"a\": 1}, null, null, null], \"passed\": true}, {\"check\": \"stale neighbors\", \"actual\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"expected\": [[\"r\", \"a\", \"x\", \"z\", \"q0\"], [\"a\"], [\"r\"], {\"a\": 1}, \"x\", null, null], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}