FA-38656 / Tree accessibility / Open access
Accessible subtree reparent transaction: Depth shift misses descendants or changes unrelated rows · case 01
Depth shift misses descendants or changes unrelated rows produces the wrong hierarchical widget state in a regression fixture.
ROOT CAUSE
The reparent-state contract is violated at `accept and x in d['closure']` by replacing it with `accept and x==d['root']`.
VERIFIED REPAIR
Restore `accept and x in d['closure']` at this fault site while retaining the other tree state decisions.
Unsuccessful approach: The partial repair `accept` still violates a boundary or preservation case.
Case contract
The closure contains a moved subtree and the source and destination are distinct parents. Reject drops into that closure or a read-only destination. Accepted moves replace the root parent, shift every descendant level by the parent-depth delta, invalidate sibling metadata, retain ID-based selection and focus, and increment only affected parent versions.
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):
accept=d['target'] not in d['closure'] and not d['readonly']
parent=d['target'] if accept else d['old_parent']
delta=d['target_depth']+1-d['depths'][d['root']]
depths={x:(v+delta if accept and x==d['root'] else v) for x,v in d['depths'].items()}
old_children=[x for x in d['old_children'] if not(accept and x==d['root'])]
new_children=d['new_children'][:d['position']]+[d['root']]+d['new_children'][d['position']:] if accept else d['new_children']
invalid=sorted(set([d['old_parent'],d['target']])) if accept else []
versions={x:v+(1 if accept and x in invalid else 0) for x,v in d['versions'].items()}
focus=d['focus']
selected=d['selected']
expanded=sorted(set(d['expanded'])|({d['target']} if accept and d['reveal'] else set()))
return [parent,depths,old_children,new_children,invalid,versions,focus,selected,expanded]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 2: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 3: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 4: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 5: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])]}
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 |
|---|---|---|---|
| accepted | ['q', {'b': 3, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | Failed |
| descendant target | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | Passed |
| protected target | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | Passed |
| no reveal | ['q', {'b': 3, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['r']] | Failed |
| insert first | ['q', {'b': 3, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | Failed |
| insert last | ['q', {'b': 3, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'outside', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'outside', ['c', 'a'], ['q', 'r']] | Failed |
SHA-256 / 7bac7a6ed56f2734f8c450eb451acf75c24ffd658e934725148b40e4974b3fe4
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
accept=d['target'] not in d['closure'] and not d['readonly']
parent=d['target'] if accept else d['old_parent']
delta=d['target_depth']+1-d['depths'][d['root']]
depths={x:(v+delta if accept else v) for x,v in d['depths'].items()}
old_children=[x for x in d['old_children'] if not(accept and x==d['root'])]
new_children=d['new_children'][:d['position']]+[d['root']]+d['new_children'][d['position']:] if accept else d['new_children']
invalid=sorted(set([d['old_parent'],d['target']])) if accept else []
versions={x:v+(1 if accept and x in invalid else 0) for x,v in d['versions'].items()}
focus=d['focus']
selected=d['selected']
expanded=sorted(set(d['expanded'])|({d['target']} if accept and d['reveal'] else set()))
return [parent,depths,old_children,new_children,invalid,versions,focus,selected,expanded]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 2: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 3: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 4: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 5: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])]}
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 |
|---|---|---|---|
| accepted | ['q', {'b': 3, 'c': 4, 'outside': 2, 'q': 4, 'r': 2}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | Failed |
| descendant target | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | Passed |
| protected target | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | Passed |
| no reveal | ['q', {'b': 3, 'c': 4, 'outside': 2, 'q': 4, 'r': 2}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['r']] | Failed |
| insert first | ['q', {'b': 3, 'c': 4, 'outside': 2, 'q': 4, 'r': 2}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | Failed |
| insert last | ['q', {'b': 3, 'c': 4, 'outside': 2, 'q': 4, 'r': 2}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'outside', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'outside', ['c', 'a'], ['q', 'r']] | Failed |
SHA-256 / 4559eb7b1106d735dea5e1b1b009773a7fa34800ff2f1caf21f7f69ea5071a73
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
accept=d['target'] not in d['closure'] and not d['readonly']
parent=d['target'] if accept else d['old_parent']
delta=d['target_depth']+1-d['depths'][d['root']]
depths={x:(v+delta if accept and x in d['closure'] else v) for x,v in d['depths'].items()}
old_children=[x for x in d['old_children'] if not(accept and x==d['root'])]
new_children=d['new_children'][:d['position']]+[d['root']]+d['new_children'][d['position']:] if accept else d['new_children']
invalid=sorted(set([d['old_parent'],d['target']])) if accept else []
versions={x:v+(1 if accept and x in invalid else 0) for x,v in d['versions'].items()}
focus=d['focus']
selected=d['selected']
expanded=sorted(set(d['expanded'])|({d['target']} if accept and d['reveal'] else set()))
return [parent,depths,old_children,new_children,invalid,versions,focus,selected,expanded]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 2, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 2, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 3, 'c': 4, 'q': 2, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 2: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 3, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 3, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 4, 'c': 5, 'q': 3, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 3: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 4, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 4, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 5, 'c': 6, 'q': 4, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 4: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 5, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 5, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 6, 'c': 7, 'q': 5, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])], 5: [('accepted', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('descendant target', {'target': 'c', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('protected target', {'target': 'q', 'closure': ['b', 'c'], 'readonly': True, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['r', {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'r': 3, 'q': 7, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('no reveal', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 1, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': False}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['r']]), ('insert first', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 0, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'c', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'c', ['c', 'a'], ['q', 'r']]), ('insert last', {'target': 'q', 'closure': ['b', 'c'], 'readonly': False, 'root': 'b', 'old_parent': 'r', 'target_depth': 6, 'depths': {'r': 0, 'b': 1, 'c': 2, 'q': 6, 'outside': 0}, 'old_children': ['a', 'b', 'z'], 'new_children': ['x', 'y'], 'position': 2, 'versions': {'r': 3, 'q': 7, 'outside': 8}, 'focus': 'outside', 'selected': ['c', 'a'], 'expanded': ['r'], 'reveal': True}, ['q', {'r': 0, 'b': 7, 'c': 8, 'q': 6, 'outside': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'r': 4, 'q': 8, 'outside': 8}, 'outside', ['c', 'a'], ['q', 'r']])]}
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 |
|---|---|---|---|
| accepted | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | Passed |
| descendant target | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | Passed |
| protected target | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | ['r', {'b': 1, 'c': 2, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'b', 'z'], ['x', 'y'], [], {'outside': 8, 'q': 7, 'r': 3}, 'c', ['c', 'a'], ['r']] | Passed |
| no reveal | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'b', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['r']] | Passed |
| insert first | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['b', 'x', 'y'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'c', ['c', 'a'], ['q', 'r']] | Passed |
| insert last | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'outside', ['c', 'a'], ['q', 'r']] | ['q', {'b': 3, 'c': 4, 'outside': 0, 'q': 2, 'r': 0}, ['a', 'z'], ['x', 'y', 'b'], ['q', 'r'], {'outside': 8, 'q': 8, 'r': 4}, 'outside', ['c', 'a'], ['q', 'r']] | Passed |
SHA-256 / 51b16f82cbd38def432ed28c76aa5fba6728cd8babf180052b79540cd225a9fb
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:13.417104+00:00.
Case digest / 0ca60dfb9d5302122f582a674276776da57f1d679a29f0589e1f9ed3df091301