FAILURE MAP
← Case archive

FA-39511 / Tree accessibility / Open access

Exclusive sibling branch expansion: Exclusive expansion drops unrelated branches or fails to close siblings · case 01

Exclusive expansion drops unrelated branches or fails to close siblings produces the wrong hierarchical widget state in a regression fixture.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The exclusive-branches contract is violated at `(set(d['open'])-closed)|({d['target']} if allowed else set())` by replacing it with `({d['target']} if allowed else set())`.

VERIFIED REPAIR

Restore `(set(d['open'])-closed)|({d['target']} if allowed else set())` at this fault site while retaining the other tree state decisions.

Unsuccessful approach: The partial repair `set(d['open'])|({d['target']} if allowed else set())` 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'] 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=({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 fixtureActualExpectedOutcome
close sibling[['a'], 'b', ['a', 'b', 'bb', 'q', 'r'], {'a': True, 'b': False, 'bb': False, 'q': False, 'r': False}, True][['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True]Failed
mode off[['a'], 'c', ['a', 'b', 'bb', 'q', 'r'], {'a': True, 'b': False, 'bb': False, 'q': False, 'r': False}, True][['a', 'b', 'bb', 'q', 'r'], 'c', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True]Failed
disabled target[[], 'c', ['b', 'bb', '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
leaf target[[], 'c', ['b', 'bb', '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', ['a', 'b', 'bb', 'q', 'r'], {'a': True, 'b': False, 'bb': False, 'q': False, 'r': False}, False][['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False]Failed
already open target[['a'], 'b', ['aa', 'b', 'bb', 'q', 'r'], {'a': True, 'b': False, 'bb': False, 'q': False, 'r': False}, True][['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True]Failed
deeper varying sibling[['a'], 'b', ['a', 'b', 'bb', 'q', 'r'], {'a': True, 'b': False, 'bb': False, 'q': False, 'r': False, 'v0': False}, True][['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True, 'v0': False}, True]Failed

SHA-256 / 75eabdb093f3aee8ec11a6b05aa33e5809b6065af7a5ea4140ced6cfe316d7ae

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'] 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'])|({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 fixtureActualExpectedOutcome
close sibling[['a', 'b', 'bb', 'q', 'r'], 'b', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True][['a', 'q', 'r'], 'b', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True]Failed
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', 'b', 'bb', 'q', 'r'], 'q', ['a'], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, False][['a', 'q', 'r'], 'q', ['a', 'b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, False]Failed
already open target[['a', 'aa', 'b', 'bb', 'q', 'r'], 'b', [], {'a': True, 'b': True, 'bb': True, 'q': True, 'r': True}, True][['a', 'aa', 'q', 'r'], 'b', ['b', 'bb'], {'a': True, 'b': False, 'bb': False, 'q': True, 'r': True}, True]Failed
deeper varying sibling[['a', 'b', 'bb', 'q', 'r'], 'b', ['a'], {'a': True, 'b': True, 'bb': True, '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]Failed

SHA-256 / b321237cbb518c8749706ee9bdb0ed57498b0969b9b69a39bf213ee1bcfd7292

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 fixtureActualExpectedOutcome
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.868710+00:00.

Case digest / 4bf2bda196d147d34d9c4aeda038b72151e95766af7024e29ece728d386d60d1