{"abstract":"Rejected rename leaks draft text into accessible label produces the wrong hierarchical widget state in a regression fixture.","category":"Tree accessibility","checks":8,"contract":"Rename completion is applied only to the same row incarnation and edit session. Empty trimmed labels are rejected, duplicate sibling labels are rejected case-insensitively, and failure leaves editing active. Successful rename preserves expansion/selection and restores focus to the renamed row only when editing owned focus.","evaluation_group":"s3-tree-rename-branch","failed_approach":"The partial repair `if accepted: labels[d['row']]=d['text']` still violates a boundary or preservation case.","family":"s3-tree_accessibility-rename-branch-07","id":"FA-39021","implementations":{"attempt":{"sha256":"8e74e41472a178b58d269513fdb585a532d67695cc5af0ad3ec6a332d1ccd832","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    current=d['session']==d['reply_session'] and d['incarnation']==d['reply_incarnation']\n    label=d['text'].strip()\n    nonempty=bool(label)\n    duplicate=any(x!=d['row'] and name.casefold()==label.casefold() for x,name in d['siblings'])\n    accepted=current and nonempty and not duplicate and d['server_ok']\n    labels=dict(d['labels'])\n    if accepted: labels[d['row']]=d['text']\n    editing=None if accepted else d['editing']\n    error=None if accepted else ('invalid' if current and (not nonempty or duplicate) else d['error'])\n    focus=d['row'] if accepted and d['focus']==d['editor'] else d['focus']\n    return [labels,editing,error,focus,d['expanded'],d['selected']]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('rename', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 1', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 1, 'reply_session': 0, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 3, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 1', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 2: [('rename', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 2', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 2, 'reply_session': 1, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 4, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 2', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 3: [('rename', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 3', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 3, 'reply_session': 2, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 5, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 3', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 4: [('rename', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 4', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 4, 'reply_session': 3, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 6, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 4', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 5: [('rename', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 5', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 5, 'reply_session': 4, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 7, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 5', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])]}\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":"481eca2a17cab188d780bf898534f0cd4f21acf350dae344d4d184813af46874","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    current=d['session']==d['reply_session'] and d['incarnation']==d['reply_incarnation']\n    label=d['text'].strip()\n    nonempty=bool(label)\n    duplicate=any(x!=d['row'] and name.casefold()==label.casefold() for x,name in d['siblings'])\n    accepted=current and nonempty and not duplicate and d['server_ok']\n    labels=dict(d['labels'])\n    if current: labels[d['row']]=label\n    editing=None if accepted else d['editing']\n    error=None if accepted else ('invalid' if current and (not nonempty or duplicate) else d['error'])\n    focus=d['row'] if accepted and d['focus']==d['editor'] else d['focus']\n    return [labels,editing,error,focus,d['expanded'],d['selected']]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('rename', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 1', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 1, 'reply_session': 0, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 3, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 1', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 2: [('rename', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 2', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 2, 'reply_session': 1, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 4, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 2', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 3: [('rename', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 3', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 3, 'reply_session': 2, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 5, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 3', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 4: [('rename', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 4', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 4, 'reply_session': 3, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 6, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 4', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 5: [('rename', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 5', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 5, 'reply_session': 4, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 7, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 5', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])]}\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":"0661e439fff3a505d8c077cc26cad98eba13fbdf91f2b43bb19a154d2968b832","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    current=d['session']==d['reply_session'] and d['incarnation']==d['reply_incarnation']\n    label=d['text'].strip()\n    nonempty=bool(label)\n    duplicate=any(x!=d['row'] and name.casefold()==label.casefold() for x,name in d['siblings'])\n    accepted=current and nonempty and not duplicate and d['server_ok']\n    labels=dict(d['labels'])\n    if accepted: labels[d['row']]=label\n    editing=None if accepted else d['editing']\n    error=None if accepted else ('invalid' if current and (not nonempty or duplicate) else d['error'])\n    focus=d['row'] if accepted and d['focus']==d['editor'] else d['focus']\n    return [labels,editing,error,focus,d['expanded'],d['selected']]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {1: [('rename', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 1', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 1, 'reply_session': 0, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 3, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 1, 'reply_session': 1, 'incarnation': 4, 'reply_incarnation': 4, 'text': ' New 1  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 1', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 2: [('rename', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 2', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 2, 'reply_session': 1, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 4, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 2, 'reply_session': 2, 'incarnation': 5, 'reply_incarnation': 5, 'text': ' New 2  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 2', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 3: [('rename', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 3', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 3, 'reply_session': 2, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 5, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 3, 'reply_session': 3, 'incarnation': 6, 'reply_incarnation': 6, 'text': ' New 3  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 3', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 4: [('rename', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 4', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 4, 'reply_session': 3, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 6, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 4, 'reply_session': 4, 'incarnation': 7, 'reply_incarnation': 7, 'text': ' New 4  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 4', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])], 5: [('rename', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 5', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('stale session', {'session': 5, 'reply_session': 4, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('recycled row', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 7, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('empty draft', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': '   ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('collision', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' taken ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'invalid', 'editor:b', ['b'], ['a']]), ('unchanged label', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': 'Old', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, None, None, 'b', ['b'], ['a']]), ('server failure', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': False, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'editor:b', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'b', 'old', 'editor:b', ['b'], ['a']]), ('outside focus', {'session': 5, 'reply_session': 5, 'incarnation': 8, 'reply_incarnation': 8, 'text': ' New 5  ', 'row': 'b', 'siblings': [['b', 'Old'], ['a', 'Taken']], 'server_ok': True, 'labels': {'a': 'Taken', 'b': 'Old', 'q': 'Other'}, 'editing': 'b', 'error': 'old', 'focus': 'q', 'editor': 'editor:b', 'expanded': ['b'], 'selected': ['a']}, [{'a': 'Taken', 'b': 'New 5', 'q': 'Other'}, None, None, 'q', ['b'], ['a']])]}\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-rename-branch-07","generated_at":"2026-09-29T14:43:17.113784+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 `if accepted: labels[d['row']]=label` at this fault site while retaining the other tree state decisions.","root_cause":"The rename-branch contract is violated at `if accepted: labels[d['row']]=label` by replacing it with `if current: labels[d['row']]=label`.","sha256":"94e218a6f92785d78f6092efe51d3be3ab55dd11ec986caa7955a9db7264d457","title":"Inline branch rename transaction: Rejected rename leaks draft text into accessible label · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.423,"exit_code":1,"observations":[{"actual":[{"a":"Taken","b":" New 1  ","q":"Other"},null,null,"b",["b"],["a"]],"check":"rename","expected":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"b",["b"],["a"]],"passed":false},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"stale session","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"recycled row","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"check":"empty draft","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"check":"collision","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},null,null,"b",["b"],["a"]],"check":"unchanged label","expected":[{"a":"Taken","b":"Old","q":"Other"},null,null,"b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"server failure","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":" New 1  ","q":"Other"},null,null,"q",["b"],["a"]],"check":"outside focus","expected":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"q",["b"],["a"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"rename\", \"actual\": [{\"a\": \"Taken\", \"b\": \" New 1  \", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"passed\": false}, {\"check\": \"stale session\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"recycled row\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"empty draft\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"collision\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"unchanged label\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"server failure\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"outside focus\", \"actual\": [{\"a\": \"Taken\", \"b\": \" New 1  \", \"q\": \"Other\"}, null, null, \"q\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"q\", [\"b\"], [\"a\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.817,"exit_code":1,"observations":[{"actual":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"b",["b"],["a"]],"check":"rename","expected":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"stale session","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"recycled row","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"check":"empty draft","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"passed":false},{"actual":[{"a":"Taken","b":"taken","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"check":"collision","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"passed":false},{"actual":[{"a":"Taken","b":"Old","q":"Other"},null,null,"b",["b"],["a"]],"check":"unchanged label","expected":[{"a":"Taken","b":"Old","q":"Other"},null,null,"b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"New 1","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"server failure","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":false},{"actual":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"q",["b"],["a"]],"check":"outside focus","expected":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"q",["b"],["a"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"rename\", \"actual\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"stale session\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"recycled row\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"empty draft\", \"actual\": [{\"a\": \"Taken\", \"b\": \"\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": false}, {\"check\": \"collision\", \"actual\": [{\"a\": \"Taken\", \"b\": \"taken\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": false}, {\"check\": \"unchanged label\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"server failure\", \"actual\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": false}, {\"check\": \"outside focus\", \"actual\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"q\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"q\", [\"b\"], [\"a\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.436,"exit_code":0,"observations":[{"actual":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"b",["b"],["a"]],"check":"rename","expected":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"stale session","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"recycled row","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"check":"empty draft","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"check":"collision","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","invalid","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},null,null,"b",["b"],["a"]],"check":"unchanged label","expected":[{"a":"Taken","b":"Old","q":"Other"},null,null,"b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"check":"server failure","expected":[{"a":"Taken","b":"Old","q":"Other"},"b","old","editor:b",["b"],["a"]],"passed":true},{"actual":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"q",["b"],["a"]],"check":"outside focus","expected":[{"a":"Taken","b":"New 1","q":"Other"},null,null,"q",["b"],["a"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"rename\", \"actual\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"stale session\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"recycled row\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"empty draft\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"collision\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"invalid\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"unchanged label\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, null, null, \"b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"server failure\", \"actual\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"Old\", \"q\": \"Other\"}, \"b\", \"old\", \"editor:b\", [\"b\"], [\"a\"]], \"passed\": true}, {\"check\": \"outside focus\", \"actual\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"q\", [\"b\"], [\"a\"]], \"expected\": [{\"a\": \"Taken\", \"b\": \"New 1\", \"q\": \"Other\"}, null, null, \"q\", [\"b\"], [\"a\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}