FA-39491 / Tree accessibility / Open access
Exclusive sibling branch expansion: Exclusive expand accepts leaf or disabled row · case 01
Exclusive expand accepts leaf or disabled row produces the wrong hierarchical widget state in a regression fixture.
ROOT CAUSE
The exclusive-branches contract is violated at `d['target'] in d['branches'] and d['target'] not in d['disabled']` by replacing it with `d['target'] not in d['disabled']`.
VERIFIED REPAIR
Restore `d['target'] in d['branches'] and d['target'] not in d['disabled']` at this fault site while retaining the other tree state decisions.
Unsuccessful approach: The partial repair `d['target'] in d['branches']` still violates a boundary or preservation case.
Case contract
Expanding a branch in exclusive mode closes its sibling branches and their descendants, but leaves ancestor and unrelated branch expansion intact. Expansion of disabled or leaf nodes is ignored. Focus within a newly closed sibling moves to that sibling root. Manual expansion survives later mode-off operation. Report whether pre-operation focus was a terminal row as provenance.
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):
allowed=d['target'] not in d['disabled']
siblings=[x for x in d['branches'] if x!=d['target'] and d['parents'].get(x)==d['parents'].get(d['target'])]
closed_roots=set(siblings) if allowed and d['exclusive'] else set()
closed={x for x in d['open'] if x in closed_roots or any(a in closed_roots for a in d['ancestors'].get(x,[]))}
expanded=(set(d['open'])-closed)|({d['target']} if allowed else set())
focusroot=next((a for a in d['ancestors'].get(d['focus'],[]) if a in closed_roots),None)
focus=focusroot if focusroot is not None else d['focus']
changed=sorted(expanded^set(d['open']))
state={x:x in expanded for x in d['branches']}
leaf_focus=d['focus'] not in d['branches']
return [sorted(expanded),focus,changed,state,leaf_focus]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False}, True])], 2: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False}, True])], 3: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False}, True])], 4: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2', 'v3'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False, 'v3': False}, True])], 5: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2', 'v3', 'v4'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False, 'v3': False, 'v4': False}, True])]}
for label, data, expected in cases[N]:
check(label, solve(data), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| close sibling | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | Passed |
| mode off | [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| disabled target | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| leaf target | [['c'], 'r', ['b', 'bb', 'c', 'q', 'r'], {'a': False, 'b': False, 'bb': False, 'q': False, 'r': False}, True] | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Failed |
| unrelated focus | [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False] | [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False] | Passed |
| already open target | [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | Passed |
| deeper varying sibling | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True] | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True] | Passed |
SHA-256 / 6627cf3f8d87145eaa7256debf6485a4be817c702b19106ed7db3c02a45a8dbb
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
allowed=d['target'] in d['branches']
siblings=[x for x in d['branches'] if x!=d['target'] and d['parents'].get(x)==d['parents'].get(d['target'])]
closed_roots=set(siblings) if allowed and d['exclusive'] else set()
closed={x for x in d['open'] if x in closed_roots or any(a in closed_roots for a in d['ancestors'].get(x,[]))}
expanded=(set(d['open'])-closed)|({d['target']} if allowed else set())
focusroot=next((a for a in d['ancestors'].get(d['focus'],[]) if a in closed_roots),None)
focus=focusroot if focusroot is not None else d['focus']
changed=sorted(expanded^set(d['open']))
state={x:x in expanded for x in d['branches']}
leaf_focus=d['focus'] not in d['branches']
return [sorted(expanded),focus,changed,state,leaf_focus]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False}, True])], 2: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False}, True])], 3: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False}, True])], 4: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2', 'v3'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False, 'v3': False}, True])], 5: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2', 'v3', 'v4'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False, 'v3': False, 'v4': False}, True])]}
for label, data, expected in cases[N]:
check(label, solve(data), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| close sibling | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | Passed |
| mode off | [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| disabled target | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Failed |
| leaf target | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| unrelated focus | [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False] | [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False] | Passed |
| already open target | [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | Passed |
| deeper varying sibling | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True] | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True] | Passed |
SHA-256 / 80b347b562d7fb8bc572db4d569ea7b03b86b0bff1734ce9628173e1d0ee7be9
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
allowed=d['target'] in d['branches'] and d['target'] not in d['disabled']
siblings=[x for x in d['branches'] if x!=d['target'] and d['parents'].get(x)==d['parents'].get(d['target'])]
closed_roots=set(siblings) if allowed and d['exclusive'] else set()
closed={x for x in d['open'] if x in closed_roots or any(a in closed_roots for a in d['ancestors'].get(x,[]))}
expanded=(set(d['open'])-closed)|({d['target']} if allowed else set())
focusroot=next((a for a in d['ancestors'].get(d['focus'],[]) if a in closed_roots),None)
focus=focusroot if focusroot is not None else d['focus']
changed=sorted(expanded^set(d['open']))
state={x:x in expanded for x in d['branches']}
leaf_focus=d['focus'] not in d['branches']
return [sorted(expanded),focus,changed,state,leaf_focus]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {1: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False}, True])], 2: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False}, True])], 3: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False}, True])], 4: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2', 'v3'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False, 'v3': False}, True])], 5: [('close sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('mode off', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': False, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'r': True, 'a': True, 'b': True, 'bb': True, 'q': True}, True]), ('disabled target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': ['a'], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('leaf target', {'target': 'c', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['b', 'bb', 'q', 'r'], 'c', [], {'r': True, 'a': False, 'b': True, 'bb': True, 'q': True}, True]), ('unrelated focus', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'q'}, [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, False]), ('already open target', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'a', 'b', 'bb', 'q', 'aa'], 'ancestors': {'aa': ['r', 'a'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True}, True]), ('deeper varying sibling', {'target': 'a', 'branches': ['r', 'a', 'b', 'bb', 'q', 'v0', 'v1', 'v2', 'v3', 'v4'], 'disabled': [], 'parents': {'r': None, 'a': 'r', 'b': 'r', 'bb': 'b', 'q': None}, 'exclusive': True, 'open': ['r', 'b', 'bb', 'q'], 'ancestors': {'a': ['r'], 'b': ['r'], 'bb': ['r', 'b'], 'c': ['r', 'b', 'bb']}, 'focus': 'c'}, [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'r': True, 'a': True, 'b': False, 'bb': False, 'q': True, 'v0': False, 'v1': False, 'v2': False, 'v3': False, 'v4': False}, True])]}
for label, data, expected in cases[N]:
check(label, solve(data), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| close sibling | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | Passed |
| mode off | [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| disabled target | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| leaf target | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | [['b', 'bb', 'q', 'r'], 'c', [], {'a': False, 'b': True, 'bb': True, 'q': True, 'r': True}, True] | Passed |
| unrelated focus | [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False] | [['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False] | Passed |
| already open target | [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | [['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True] | Passed |
| deeper varying sibling | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True] | [['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True] | Passed |
SHA-256 / a5f43ab0262919cfe1b29bff17775e988182052958bffa2e229249cd0883e49e
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:21.742677+00:00.
Case digest / 96208fe7024291f9ebf04350b1551075a64f107a3817fd2d750863fdd7b53476