{"abstract":"Completed drag continues hover expansion produces the wrong hierarchical widget state in a regression fixture.","category":"Tree accessibility","checks":10,"contract":"Hover expansion processing occurs only after dwell on a legal branch. Already user-open branches must not acquire hover ownership. Leaving or changing target resets the timer. A drag generation prevents old timers expanding a later drag. Auto-opened branches close on cancelled drag but user-open branches remain.","evaluation_group":"s3-tree-drag-hover","failed_approach":"The partial repair `trigger=eligible and elapsed>=d['dwell'] and d['cancelled']` still violates a boundary or preservation case.","family":"s3-tree_accessibility-drag-hover-06","id":"FA-39366","implementations":{"attempt":{"sha256":"a08dfee38f81bef2bb6cc846609730c16b5613056e2385380e8d140ceb761ebd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    same=d['target']==d['previous_target'] and d['drag']==d['timer_drag']\n    since=d['since'] if same else d['now']\n    eligible=d['target'] in d['branches'] and d['target'] not in d['closure'] and d['legal']\n    elapsed=max(0,d['now']-since)\n    trigger=eligible and elapsed>=d['dwell'] and d['cancelled']\n    auto=set(d['auto'])\n    if trigger and d['target'] not in d['user_open']: auto.add(d['target'])\n    if not d['active'] and d['cancelled']: auto.clear()\n    expanded=sorted(set(d['user_open'])|auto)\n    timer=[d['target'],since,d['drag']] if eligible and d['active'] and not trigger else None\n    return [expanded,sorted(auto),timer,trigger]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 10, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 1], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 11, 1], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 0, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 11, 1], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 9, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 1], False])], 2: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 11, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 2], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 12, 2], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 1, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 12, 2], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 9, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 2], False])], 3: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 12, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 3], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 13, 3], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 2, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 13, 3], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 9, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 3], False])], 4: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 13, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 4], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 14, 4], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 3, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 14, 4], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 9, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 4], False])], 5: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 14, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 5], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 15, 5], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 4, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 15, 5], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 9, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 5], False])]}\nfor label, data, expected in cases[N]:\n    check(label, solve(data), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"ef053558c9d60bf79c54dcf2a2f7317ae9265632dd9ed626c5ff822f9e40c387","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    same=d['target']==d['previous_target'] and d['drag']==d['timer_drag']\n    since=d['since'] if same else d['now']\n    eligible=d['target'] in d['branches'] and d['target'] not in d['closure'] and d['legal']\n    elapsed=max(0,d['now']-since)\n    trigger=eligible and elapsed>=d['dwell']\n    auto=set(d['auto'])\n    if trigger and d['target'] not in d['user_open']: auto.add(d['target'])\n    if not d['active'] and d['cancelled']: auto.clear()\n    expanded=sorted(set(d['user_open'])|auto)\n    timer=[d['target'],since,d['drag']] if eligible and d['active'] and not trigger else None\n    return [expanded,sorted(auto),timer,trigger]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 10, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 1], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 11, 1], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 0, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 11, 1], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 9, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 1], False])], 2: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 11, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 2], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 12, 2], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 1, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 12, 2], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 9, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 2], False])], 3: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 12, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 3], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 13, 3], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 2, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 13, 3], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 9, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 3], False])], 4: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 13, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 4], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 14, 4], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 3, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 14, 4], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 9, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 4], False])], 5: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 14, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 5], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 15, 5], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 4, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 15, 5], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 9, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 5], False])]}\nfor label, data, expected in cases[N]:\n    check(label, solve(data), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"39d4502213c47e1b1c79370afae6db7bcaa0ed739d59a62cac9e4c98f9d7b812","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    same=d['target']==d['previous_target'] and d['drag']==d['timer_drag']\n    since=d['since'] if same else d['now']\n    eligible=d['target'] in d['branches'] and d['target'] not in d['closure'] and d['legal']\n    elapsed=max(0,d['now']-since)\n    trigger=eligible and elapsed>=d['dwell'] and d['active']\n    auto=set(d['auto'])\n    if trigger and d['target'] not in d['user_open']: auto.add(d['target'])\n    if not d['active'] and d['cancelled']: auto.clear()\n    expanded=sorted(set(d['user_open'])|auto)\n    timer=[d['target'],since,d['drag']] if eligible and d['active'] and not trigger else None\n    return [expanded,sorted(auto),timer,trigger]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 10, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 1], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 11, 1], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 0, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 11, 1], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 11, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 1, 'timer_drag': 1, 'since': 10, 'now': 9, 'dwell': 1, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 1], False])], 2: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 11, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 2], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 12, 2], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 1, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 12, 2], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 12, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 2, 'timer_drag': 2, 'since': 10, 'now': 9, 'dwell': 2, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 2], False])], 3: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 12, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 3], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 13, 3], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 2, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 13, 3], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 13, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 3, 'timer_drag': 3, 'since': 10, 'now': 9, 'dwell': 3, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 3], False])], 4: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 13, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 4], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 14, 4], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 3, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 14, 4], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 14, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 4, 'timer_drag': 4, 'since': 10, 'now': 9, 'dwell': 4, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 4], False])], 5: [('at deadline', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'b', 'r'], ['a', 'b'], None, True]), ('before deadline', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 14, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 5], False]), ('changed target', {'target': 'b', 'previous_target': 'a', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 15, 5], False]), ('new drag', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 4, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 15, 5], False]), ('illegal descendant', {'target': 'c', 'previous_target': 'c', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b', 'c'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('permission denied', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': False, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('cancelled', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': True}, [['r'], [], None, False]), ('committed drop', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': False, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], None, False]), ('user opened', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 15, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r', 'b'], 'cancelled': False}, [['a', 'b', 'r'], ['a'], None, True]), ('negative elapsed', {'target': 'b', 'previous_target': 'b', 'drag': 5, 'timer_drag': 5, 'since': 10, 'now': 9, 'dwell': 5, 'branches': ['a', 'b'], 'closure': ['s', 'c'], 'legal': True, 'active': True, 'auto': ['a'], 'user_open': ['r'], 'cancelled': False}, [['a', 'r'], ['a'], ['b', 10, 5], False])]}\nfor label, data, expected in cases[N]:\n    check(label, solve(data), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Synthetic deterministic hierarchical-widget data contract; not an implementation of a browser accessibility tree. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-tree_accessibility-drag-hover-06","generated_at":"2026-09-29T14:43:20.509256+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline executable model of a hierarchical accessibility interaction; inputs are bounded and valid as stipulated. No browser, assistive technology, or normative ARIA conformance is claimed.","repair":"Restore `trigger=eligible and elapsed>=d['dwell'] and d['active']` at this fault site while retaining the other tree state decisions.","root_cause":"The drag-hover contract is violated at `trigger=eligible and elapsed>=d['dwell'] and d['active']` by replacing it with `trigger=eligible and elapsed>=d['dwell']`.","sha256":"36d72590d583978131dc6463eeae2ee7d773d123b2e56fdc18da1a28c0265920","title":"Hierarchical drag hover expansion timer: Completed drag continues hover expansion · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.872,"exit_code":1,"observations":[{"actual":[["a","r"],["a"],["b",10,1],false],"check":"at deadline","expected":[["a","b","r"],["a","b"],null,true],"passed":false},{"actual":[["a","r"],["a"],["b",10,1],false],"check":"before deadline","expected":[["a","r"],["a"],["b",10,1],false],"passed":true},{"actual":[["a","r"],["a"],["b",11,1],false],"check":"changed target","expected":[["a","r"],["a"],["b",11,1],false],"passed":true},{"actual":[["a","r"],["a"],["b",11,1],false],"check":"new drag","expected":[["a","r"],["a"],["b",11,1],false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"illegal descendant","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"permission denied","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["r"],[],null,true],"check":"cancelled","expected":[["r"],[],null,false],"passed":false},{"actual":[["a","r"],["a"],null,false],"check":"committed drop","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["a","b","r"],["a"],["b",10,1],false],"check":"user opened","expected":[["a","b","r"],["a"],null,true],"passed":false},{"actual":[["a","r"],["a"],["b",10,1],false],"check":"negative elapsed","expected":[["a","r"],["a"],["b",10,1],false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"at deadline\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"b\", \"r\"], [\"a\", \"b\"], null, true], \"passed\": false}, {\"check\": \"before deadline\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"passed\": true}, {\"check\": \"changed target\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"passed\": true}, {\"check\": \"new drag\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"passed\": true}, {\"check\": \"illegal descendant\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"permission denied\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"cancelled\", \"actual\": [[\"r\"], [], null, true], \"expected\": [[\"r\"], [], null, false], \"passed\": false}, {\"check\": \"committed drop\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"user opened\", \"actual\": [[\"a\", \"b\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"b\", \"r\"], [\"a\"], null, true], \"passed\": false}, {\"check\": \"negative elapsed\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.955,"exit_code":1,"observations":[{"actual":[["a","b","r"],["a","b"],null,true],"check":"at deadline","expected":[["a","b","r"],["a","b"],null,true],"passed":true},{"actual":[["a","r"],["a"],["b",10,1],false],"check":"before deadline","expected":[["a","r"],["a"],["b",10,1],false],"passed":true},{"actual":[["a","r"],["a"],["b",11,1],false],"check":"changed target","expected":[["a","r"],["a"],["b",11,1],false],"passed":true},{"actual":[["a","r"],["a"],["b",11,1],false],"check":"new drag","expected":[["a","r"],["a"],["b",11,1],false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"illegal descendant","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"permission denied","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["r"],[],null,true],"check":"cancelled","expected":[["r"],[],null,false],"passed":false},{"actual":[["a","b","r"],["a","b"],null,true],"check":"committed drop","expected":[["a","r"],["a"],null,false],"passed":false},{"actual":[["a","b","r"],["a"],null,true],"check":"user opened","expected":[["a","b","r"],["a"],null,true],"passed":true},{"actual":[["a","r"],["a"],["b",10,1],false],"check":"negative elapsed","expected":[["a","r"],["a"],["b",10,1],false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"at deadline\", \"actual\": [[\"a\", \"b\", \"r\"], [\"a\", \"b\"], null, true], \"expected\": [[\"a\", \"b\", \"r\"], [\"a\", \"b\"], null, true], \"passed\": true}, {\"check\": \"before deadline\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"passed\": true}, {\"check\": \"changed target\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"passed\": true}, {\"check\": \"new drag\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"passed\": true}, {\"check\": \"illegal descendant\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"permission denied\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"cancelled\", \"actual\": [[\"r\"], [], null, true], \"expected\": [[\"r\"], [], null, false], \"passed\": false}, {\"check\": \"committed drop\", \"actual\": [[\"a\", \"b\", \"r\"], [\"a\", \"b\"], null, true], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": false}, {\"check\": \"user opened\", \"actual\": [[\"a\", \"b\", \"r\"], [\"a\"], null, true], \"expected\": [[\"a\", \"b\", \"r\"], [\"a\"], null, true], \"passed\": true}, {\"check\": \"negative elapsed\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.701,"exit_code":0,"observations":[{"actual":[["a","b","r"],["a","b"],null,true],"check":"at deadline","expected":[["a","b","r"],["a","b"],null,true],"passed":true},{"actual":[["a","r"],["a"],["b",10,1],false],"check":"before deadline","expected":[["a","r"],["a"],["b",10,1],false],"passed":true},{"actual":[["a","r"],["a"],["b",11,1],false],"check":"changed target","expected":[["a","r"],["a"],["b",11,1],false],"passed":true},{"actual":[["a","r"],["a"],["b",11,1],false],"check":"new drag","expected":[["a","r"],["a"],["b",11,1],false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"illegal descendant","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"permission denied","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["r"],[],null,false],"check":"cancelled","expected":[["r"],[],null,false],"passed":true},{"actual":[["a","r"],["a"],null,false],"check":"committed drop","expected":[["a","r"],["a"],null,false],"passed":true},{"actual":[["a","b","r"],["a"],null,true],"check":"user opened","expected":[["a","b","r"],["a"],null,true],"passed":true},{"actual":[["a","r"],["a"],["b",10,1],false],"check":"negative elapsed","expected":[["a","r"],["a"],["b",10,1],false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"at deadline\", \"actual\": [[\"a\", \"b\", \"r\"], [\"a\", \"b\"], null, true], \"expected\": [[\"a\", \"b\", \"r\"], [\"a\", \"b\"], null, true], \"passed\": true}, {\"check\": \"before deadline\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"passed\": true}, {\"check\": \"changed target\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"passed\": true}, {\"check\": \"new drag\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 11, 1], false], \"passed\": true}, {\"check\": \"illegal descendant\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"permission denied\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"cancelled\", \"actual\": [[\"r\"], [], null, false], \"expected\": [[\"r\"], [], null, false], \"passed\": true}, {\"check\": \"committed drop\", \"actual\": [[\"a\", \"r\"], [\"a\"], null, false], \"expected\": [[\"a\", \"r\"], [\"a\"], null, false], \"passed\": true}, {\"check\": \"user opened\", \"actual\": [[\"a\", \"b\", \"r\"], [\"a\"], null, true], \"expected\": [[\"a\", \"b\", \"r\"], [\"a\"], null, true], \"passed\": true}, {\"check\": \"negative elapsed\", \"actual\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"expected\": [[\"a\", \"r\"], [\"a\"], [\"b\", 10, 1], false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}