{"abstract":"The tab workspace reports an incorrect lock toggle preserves other locks.","category":"Tab interfaces","checks":6,"contract":"Locked tabs forbid replacement and close commands but permit selection, scrolling and explicit duplication. Lock badges and command predicates are attached to view identity.","evaluation_group":"s3-tabs-locked-tab-policy","failed_approach":"The partial repair [x['target']] still violates a workspace boundary or normal case.","family":"s3-tab-interfaces-locked-tab-policy-lock-toggle-preserves-other-locks","id":"FA-36756","implementations":{"attempt":{"sha256":"20fd66480ff6af51f455f37e9a746a151795af1de2c39db05ac6ce4f44fc14c9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = x['target'] not in x['locked']\n    r1 = [x['target']]\n    r2 = x['target']\n    r3 = x['view'] in x['locked']\n    r4 = x['duplicate']\n    r5 = [t for t in x['locked'] if t!=x['duplicate']]\n    return [r0,r1,r2,r3,r4,r5]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'b'], 'b', True, 'd', ['a', 'c']]), ({'locked': [], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a'], 'a', False, 'd', []]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c'], 'a', False, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']])], 2: [({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'b'], 'b', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'a'], 'a', False, 'd', ['extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', False, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']])], 3: [({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'a'], 'a', False, 'd', ['extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']])], 4: [({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'extra2', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'extra2', 'a'], 'a', False, 'd', ['extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']])], 5: [({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'extra2', 'extra3', 'a'], 'a', False, 'd', ['extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']])]}\nfor i, (inputs, expected) in enumerate(fixtures[N]):\n    check(\"workspace regression \"+str(i), solve(inputs), 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":"2b02b99358ff6c5f0ae9c0ddd0f19b972d25632c2a13e377fc27a412258ce39b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = x['target'] not in x['locked']\n    r1 = [] if x['target'] in x['locked'] else [x['target']]\n    r2 = x['target']\n    r3 = x['view'] in x['locked']\n    r4 = x['duplicate']\n    r5 = [t for t in x['locked'] if t!=x['duplicate']]\n    return [r0,r1,r2,r3,r4,r5]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'b'], 'b', True, 'd', ['a', 'c']]), ({'locked': [], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a'], 'a', False, 'd', []]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c'], 'a', False, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']])], 2: [({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'b'], 'b', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'a'], 'a', False, 'd', ['extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', False, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']])], 3: [({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'a'], 'a', False, 'd', ['extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']])], 4: [({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'extra2', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'extra2', 'a'], 'a', False, 'd', ['extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']])], 5: [({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'extra2', 'extra3', 'a'], 'a', False, 'd', ['extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']])]}\nfor i, (inputs, expected) in enumerate(fixtures[N]):\n    check(\"workspace regression \"+str(i), solve(inputs), 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":"2ce22d9bd836b0532abadcd9a96b19a00e5c383bf1a9c6d16108ea09e3865ccc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = x['target'] not in x['locked']\n    r1 = [t for t in x['locked'] if t!=x['target']] if x['target'] in x['locked'] else x['locked']+[x['target']]\n    r2 = x['target']\n    r3 = x['view'] in x['locked']\n    r4 = x['duplicate']\n    r5 = [t for t in x['locked'] if t!=x['duplicate']]\n    return [r0,r1,r2,r3,r4,r5]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'b'], 'b', True, 'd', ['a', 'c']]), ({'locked': [], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a'], 'a', False, 'd', []]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c'], 'a', False, 'd', ['a', 'c']]), ({'locked': ['a', 'c'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c'], 'a', True, 'd', ['a', 'c']])], 2: [({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'b'], 'b', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'a'], 'a', False, 'd', ['extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', False, 'd', ['a', 'c', 'extra0']]), ({'locked': ['a', 'c', 'extra0'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0'], 'a', True, 'd', ['a', 'c', 'extra0']])], 3: [({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'a'], 'a', False, 'd', ['extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1']]), ({'locked': ['a', 'c', 'extra0', 'extra1'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1']])], 4: [({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'extra2', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'extra2', 'a'], 'a', False, 'd', ['extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2']])], 5: [({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'b', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3', 'b'], 'b', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [True, ['extra0', 'extra1', 'extra2', 'extra3', 'a'], 'a', False, 'd', ['extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': [], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'b', 'dirty': ['a'], 'view': 'b', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', False, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']]), ({'locked': ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'target': 'a', 'selected': 'a', 'dirty': ['a'], 'view': 'a', 'duplicate': 'd'}, [False, ['c', 'extra0', 'extra1', 'extra2', 'extra3'], 'a', True, 'd', ['a', 'c', 'extra0', 'extra1', 'extra2', 'extra3']])]}\nfor i, (inputs, expected) in enumerate(fixtures[N]):\n    check(\"workspace regression \"+str(i), solve(inputs), 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":"Finite stipulated workspace snapshots only. Independent result fields describe observable obligations, not a full UI runtime. 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-tab-interfaces-locked-tab-policy-lock-toggle-preserves-other-locks","generated_at":"2026-09-29T14:42:54.489847+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline tab/panel workspace behavior; no browser or desktop framework is emulated.","repair":"Use the stipulated workspace rule: [t for t in x['locked'] if t!=x['target']] if x['target'] in x['locked'] else x['locked']+[x['target']].","root_cause":"The lock toggle preserves other locks decision uses [] if x['target'] in x['locked'] else [x['target']] instead of [t for t in x['locked'] if t!=x['target']] if x['target'] in x['locked'] else x['locked']+[x['target']].","sha256":"43639311b216968d77a8aa6b0ef114cb566d38a669db714650461de102fc21b0","title":"Locked tab policy: lock toggle preserves other locks · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.003,"exit_code":1,"observations":[{"actual":[false,["a"],"a",true,"d",["a","c"]],"check":"workspace regression 0","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[true,["b"],"b",true,"d",["a","c"]],"check":"workspace regression 1","expected":[true,["a","c","b"],"b",true,"d",["a","c"]],"passed":false},{"actual":[true,["a"],"a",false,"d",[]],"check":"workspace regression 2","expected":[true,["a"],"a",false,"d",[]],"passed":true},{"actual":[false,["a"],"a",true,"d",["a","c"]],"check":"workspace regression 3","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[false,["a"],"a",false,"d",["a","c"]],"check":"workspace regression 4","expected":[false,["c"],"a",false,"d",["a","c"]],"passed":false},{"actual":[false,["a"],"a",true,"d",["a","c"]],"check":"workspace regression 5","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [false, [\"a\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [true, [\"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"expected\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [true, [\"a\"], \"a\", false, \"d\", []], \"expected\": [true, [\"a\"], \"a\", false, \"d\", []], \"passed\": true}, {\"check\": \"workspace regression 3\", \"actual\": [false, [\"a\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [false, [\"a\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [false, [\"a\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.731,"exit_code":1,"observations":[{"actual":[false,[],"a",true,"d",["a","c"]],"check":"workspace regression 0","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[true,["b"],"b",true,"d",["a","c"]],"check":"workspace regression 1","expected":[true,["a","c","b"],"b",true,"d",["a","c"]],"passed":false},{"actual":[true,["a"],"a",false,"d",[]],"check":"workspace regression 2","expected":[true,["a"],"a",false,"d",[]],"passed":true},{"actual":[false,[],"a",true,"d",["a","c"]],"check":"workspace regression 3","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[false,[],"a",false,"d",["a","c"]],"check":"workspace regression 4","expected":[false,["c"],"a",false,"d",["a","c"]],"passed":false},{"actual":[false,[],"a",true,"d",["a","c"]],"check":"workspace regression 5","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [false, [], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [true, [\"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"expected\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [true, [\"a\"], \"a\", false, \"d\", []], \"expected\": [true, [\"a\"], \"a\", false, \"d\", []], \"passed\": true}, {\"check\": \"workspace regression 3\", \"actual\": [false, [], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [false, [], \"a\", false, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [false, [], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.481,"exit_code":0,"observations":[{"actual":[false,["c"],"a",true,"d",["a","c"]],"check":"workspace regression 0","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":true},{"actual":[true,["a","c","b"],"b",true,"d",["a","c"]],"check":"workspace regression 1","expected":[true,["a","c","b"],"b",true,"d",["a","c"]],"passed":true},{"actual":[true,["a"],"a",false,"d",[]],"check":"workspace regression 2","expected":[true,["a"],"a",false,"d",[]],"passed":true},{"actual":[false,["c"],"a",true,"d",["a","c"]],"check":"workspace regression 3","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":true},{"actual":[false,["c"],"a",false,"d",["a","c"]],"check":"workspace regression 4","expected":[false,["c"],"a",false,"d",["a","c"]],"passed":true},{"actual":[false,["c"],"a",true,"d",["a","c"]],"check":"workspace regression 5","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": true}, {\"check\": \"workspace regression 1\", \"actual\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"expected\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"passed\": true}, {\"check\": \"workspace regression 2\", \"actual\": [true, [\"a\"], \"a\", false, \"d\", []], \"expected\": [true, [\"a\"], \"a\", false, \"d\", []], \"passed\": true}, {\"check\": \"workspace regression 3\", \"actual\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": true}, {\"check\": \"workspace regression 4\", \"actual\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"passed\": true}, {\"check\": \"workspace regression 5\", \"actual\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}