{"abstract":"The tab workspace reports an incorrect duplicate starts unlocked.","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 [] still violates a workspace boundary or normal case.","family":"s3-tab-interfaces-locked-tab-policy-duplicate-starts-unlocked","id":"FA-36776","implementations":{"attempt":{"sha256":"6d74668455c93949d39c0ab2f467d775b15c2566ffcd97bf30c03c336ed1e7ed","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 = []\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":"b4a0c994238d39fc1283e1e75b80b037ec3ba1ff4d3241c5cad2081070c12ea2","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 = x['locked']+[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-duplicate-starts-unlocked","generated_at":"2026-09-29T14:42:54.674596+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['duplicate']].","root_cause":"The duplicate starts unlocked decision uses x['locked']+[x['duplicate']] instead of [t for t in x['locked'] if t!=x['duplicate']].","sha256":"509acbe6b4e3f021d88e68d06505c546bf50a176844195e3600925294abe299f","title":"Locked tab policy: duplicate starts unlocked · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.148,"exit_code":1,"observations":[{"actual":[false,["c"],"a",true,"d",[]],"check":"workspace regression 0","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[true,["a","c","b"],"b",true,"d",[]],"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,["c"],"a",true,"d",[]],"check":"workspace regression 3","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[false,["c"],"a",false,"d",[]],"check":"workspace regression 4","expected":[false,["c"],"a",false,"d",["a","c"]],"passed":false},{"actual":[false,["c"],"a",true,"d",[]],"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, [\"c\"], \"a\", true, \"d\", []], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", []], \"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, [\"c\"], \"a\", true, \"d\", []], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [false, [\"c\"], \"a\", false, \"d\", []], \"expected\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [false, [\"c\"], \"a\", true, \"d\", []], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.027,"exit_code":1,"observations":[{"actual":[false,["c"],"a",true,"d",["a","c","d"]],"check":"workspace regression 0","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[true,["a","c","b"],"b",true,"d",["a","c","d"]],"check":"workspace regression 1","expected":[true,["a","c","b"],"b",true,"d",["a","c"]],"passed":false},{"actual":[true,["a"],"a",false,"d",["d"]],"check":"workspace regression 2","expected":[true,["a"],"a",false,"d",[]],"passed":false},{"actual":[false,["c"],"a",true,"d",["a","c","d"]],"check":"workspace regression 3","expected":[false,["c"],"a",true,"d",["a","c"]],"passed":false},{"actual":[false,["c"],"a",false,"d",["a","c","d"]],"check":"workspace regression 4","expected":[false,["c"],"a",false,"d",["a","c"]],"passed":false},{"actual":[false,["c"],"a",true,"d",["a","c","d"]],"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, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\", \"d\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", [\"a\", \"c\", \"d\"]], \"expected\": [true, [\"a\", \"c\", \"b\"], \"b\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [true, [\"a\"], \"a\", false, \"d\", [\"d\"]], \"expected\": [true, [\"a\"], \"a\", false, \"d\", []], \"passed\": false}, {\"check\": \"workspace regression 3\", \"actual\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\", \"d\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\", \"d\"]], \"expected\": [false, [\"c\"], \"a\", false, \"d\", [\"a\", \"c\"]], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\", \"d\"]], \"expected\": [false, [\"c\"], \"a\", true, \"d\", [\"a\", \"c\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.929,"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"}