{"abstract":"The tab workspace reports an incorrect new pin count.","category":"Tab interfaces","checks":6,"contract":"Unpin restores a tab after the remaining pin prefix at its saved unpinned rank, clamps rank to the current normal partition and restores surviving group membership.","evaluation_group":"s3-tabs-unpin-restoration","failed_approach":"The partial repair 0 still violates a workspace boundary or normal case.","family":"s3-tab-interfaces-unpin-restoration-new-pin-count","id":"FA-36056","implementations":{"attempt":{"sha256":"304abf59c907f17e7ef8b36aeeb41be6b80a92b0ed3db066a85d4fc2e4542602","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = [t for t in x['pins'] if t!=x['unpin']]\n    r1 = min(x['rank'],len(x['normal']))\n    r2 = len(x['pins'])-1+min(x['rank'],len(x['normal']))\n    r3 = x['normal'][:min(x['rank'],len(x['normal']))]+[x['unpin']]+x['normal'][min(x['rank'],len(x['normal'])):]\n    r4 = x['saved_group'] if x['saved_group'] in x['groups'] else None\n    r5 = 0\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: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 3, 4, ['a', 'b', 'c', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': [], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c'], 'g', 1])], 2: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 4, 5, ['a', 'b', 'c', 'extra0', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 1, 2, ['extra0', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0'], 'g', 1])], 3: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 5, 6, ['a', 'b', 'c', 'extra0', 'extra1', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1'], 'g', 1])], 4: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 6, 7, ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1])], 5: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 7, 8, ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1])]}\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":"2de8050647226188073d53c571d3999dfb6dda0a8f03496395fb4c09f8a65a4e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = [t for t in x['pins'] if t!=x['unpin']]\n    r1 = min(x['rank'],len(x['normal']))\n    r2 = len(x['pins'])-1+min(x['rank'],len(x['normal']))\n    r3 = x['normal'][:min(x['rank'],len(x['normal']))]+[x['unpin']]+x['normal'][min(x['rank'],len(x['normal'])):]\n    r4 = x['saved_group'] if x['saved_group'] in x['groups'] else None\n    r5 = len(x['pins'])\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: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 3, 4, ['a', 'b', 'c', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': [], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c'], 'g', 1])], 2: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 4, 5, ['a', 'b', 'c', 'extra0', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 1, 2, ['extra0', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0'], 'g', 1])], 3: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 5, 6, ['a', 'b', 'c', 'extra0', 'extra1', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1'], 'g', 1])], 4: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 6, 7, ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1])], 5: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 7, 8, ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1])]}\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":"8448d4219d7dddba55403fee9e8f51f14d563a6823c1cec56288ebed8a6b6345","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = [t for t in x['pins'] if t!=x['unpin']]\n    r1 = min(x['rank'],len(x['normal']))\n    r2 = len(x['pins'])-1+min(x['rank'],len(x['normal']))\n    r3 = x['normal'][:min(x['rank'],len(x['normal']))]+[x['unpin']]+x['normal'][min(x['rank'],len(x['normal'])):]\n    r4 = x['saved_group'] if x['saved_group'] in x['groups'] else None\n    r5 = len(x['pins'])-1\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: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 3, 4, ['a', 'b', 'c', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': [], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c'], 'g', 1])], 2: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 4, 5, ['a', 'b', 'c', 'extra0', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 1, 2, ['extra0', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0'], 'g', 1])], 3: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 5, 6, ['a', 'b', 'c', 'extra0', 'extra1', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1'], 'g', 1])], 4: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 6, 7, ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p', 'extra2'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1', 'extra2'], 'g', 1])], 5: [({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 0, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 0, 1, ['p', 'a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 9, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 7, 8, ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3', 'p'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['q'], 2, 3, ['extra0', 'extra1', 'p', 'extra2', 'extra3'], 'g', 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'p', 'rank': 2, 'saved_group': 'g', 'groups': ['h']}, [['q'], 2, 3, ['a', 'b', 'p', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], None, 1]), ({'pins': ['p', 'q'], 'normal': ['a', 'b', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'unpin': 'q', 'rank': 2, 'saved_group': 'g', 'groups': ['g', 'h']}, [['p'], 2, 3, ['a', 'b', 'q', 'c', 'extra0', 'extra1', 'extra2', 'extra3'], 'g', 1])]}\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-unpin-restoration-new-pin-count","generated_at":"2026-09-29T14:42:47.501680+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: len(x['pins'])-1.","root_cause":"The new pin count decision uses len(x['pins']) instead of len(x['pins'])-1.","sha256":"cfeb84406e479f84002251b024e4f305bab099cf18bf9b6a836c7a432863bd0f","title":"Unpin restoration: new pin count · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.394,"exit_code":1,"observations":[{"actual":[["q"],2,3,["a","b","p","c"],"g",0],"check":"workspace regression 0","expected":[["q"],2,3,["a","b","p","c"],"g",1],"passed":false},{"actual":[["q"],0,1,["p","a","b","c"],"g",0],"check":"workspace regression 1","expected":[["q"],0,1,["p","a","b","c"],"g",1],"passed":false},{"actual":[["q"],3,4,["a","b","c","p"],"g",0],"check":"workspace regression 2","expected":[["q"],3,4,["a","b","c","p"],"g",1],"passed":false},{"actual":[["q"],0,1,["p"],"g",0],"check":"workspace regression 3","expected":[["q"],0,1,["p"],"g",1],"passed":false},{"actual":[["q"],2,3,["a","b","p","c"],null,0],"check":"workspace regression 4","expected":[["q"],2,3,["a","b","p","c"],null,1],"passed":false},{"actual":[["p"],2,3,["a","b","q","c"],"g",0],"check":"workspace regression 5","expected":[["p"],2,3,["a","b","q","c"],"g",1],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], \"g\", 0], \"expected\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [[\"q\"], 0, 1, [\"p\", \"a\", \"b\", \"c\"], \"g\", 0], \"expected\": [[\"q\"], 0, 1, [\"p\", \"a\", \"b\", \"c\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [[\"q\"], 3, 4, [\"a\", \"b\", \"c\", \"p\"], \"g\", 0], \"expected\": [[\"q\"], 3, 4, [\"a\", \"b\", \"c\", \"p\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 3\", \"actual\": [[\"q\"], 0, 1, [\"p\"], \"g\", 0], \"expected\": [[\"q\"], 0, 1, [\"p\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], null, 0], \"expected\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], null, 1], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [[\"p\"], 2, 3, [\"a\", \"b\", \"q\", \"c\"], \"g\", 0], \"expected\": [[\"p\"], 2, 3, [\"a\", \"b\", \"q\", \"c\"], \"g\", 1], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.512,"exit_code":1,"observations":[{"actual":[["q"],2,3,["a","b","p","c"],"g",2],"check":"workspace regression 0","expected":[["q"],2,3,["a","b","p","c"],"g",1],"passed":false},{"actual":[["q"],0,1,["p","a","b","c"],"g",2],"check":"workspace regression 1","expected":[["q"],0,1,["p","a","b","c"],"g",1],"passed":false},{"actual":[["q"],3,4,["a","b","c","p"],"g",2],"check":"workspace regression 2","expected":[["q"],3,4,["a","b","c","p"],"g",1],"passed":false},{"actual":[["q"],0,1,["p"],"g",2],"check":"workspace regression 3","expected":[["q"],0,1,["p"],"g",1],"passed":false},{"actual":[["q"],2,3,["a","b","p","c"],null,2],"check":"workspace regression 4","expected":[["q"],2,3,["a","b","p","c"],null,1],"passed":false},{"actual":[["p"],2,3,["a","b","q","c"],"g",2],"check":"workspace regression 5","expected":[["p"],2,3,["a","b","q","c"],"g",1],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], \"g\", 2], \"expected\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [[\"q\"], 0, 1, [\"p\", \"a\", \"b\", \"c\"], \"g\", 2], \"expected\": [[\"q\"], 0, 1, [\"p\", \"a\", \"b\", \"c\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [[\"q\"], 3, 4, [\"a\", \"b\", \"c\", \"p\"], \"g\", 2], \"expected\": [[\"q\"], 3, 4, [\"a\", \"b\", \"c\", \"p\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 3\", \"actual\": [[\"q\"], 0, 1, [\"p\"], \"g\", 2], \"expected\": [[\"q\"], 0, 1, [\"p\"], \"g\", 1], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], null, 2], \"expected\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], null, 1], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [[\"p\"], 2, 3, [\"a\", \"b\", \"q\", \"c\"], \"g\", 2], \"expected\": [[\"p\"], 2, 3, [\"a\", \"b\", \"q\", \"c\"], \"g\", 1], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.948,"exit_code":0,"observations":[{"actual":[["q"],2,3,["a","b","p","c"],"g",1],"check":"workspace regression 0","expected":[["q"],2,3,["a","b","p","c"],"g",1],"passed":true},{"actual":[["q"],0,1,["p","a","b","c"],"g",1],"check":"workspace regression 1","expected":[["q"],0,1,["p","a","b","c"],"g",1],"passed":true},{"actual":[["q"],3,4,["a","b","c","p"],"g",1],"check":"workspace regression 2","expected":[["q"],3,4,["a","b","c","p"],"g",1],"passed":true},{"actual":[["q"],0,1,["p"],"g",1],"check":"workspace regression 3","expected":[["q"],0,1,["p"],"g",1],"passed":true},{"actual":[["q"],2,3,["a","b","p","c"],null,1],"check":"workspace regression 4","expected":[["q"],2,3,["a","b","p","c"],null,1],"passed":true},{"actual":[["p"],2,3,["a","b","q","c"],"g",1],"check":"workspace regression 5","expected":[["p"],2,3,["a","b","q","c"],"g",1],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], \"g\", 1], \"expected\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], \"g\", 1], \"passed\": true}, {\"check\": \"workspace regression 1\", \"actual\": [[\"q\"], 0, 1, [\"p\", \"a\", \"b\", \"c\"], \"g\", 1], \"expected\": [[\"q\"], 0, 1, [\"p\", \"a\", \"b\", \"c\"], \"g\", 1], \"passed\": true}, {\"check\": \"workspace regression 2\", \"actual\": [[\"q\"], 3, 4, [\"a\", \"b\", \"c\", \"p\"], \"g\", 1], \"expected\": [[\"q\"], 3, 4, [\"a\", \"b\", \"c\", \"p\"], \"g\", 1], \"passed\": true}, {\"check\": \"workspace regression 3\", \"actual\": [[\"q\"], 0, 1, [\"p\"], \"g\", 1], \"expected\": [[\"q\"], 0, 1, [\"p\"], \"g\", 1], \"passed\": true}, {\"check\": \"workspace regression 4\", \"actual\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], null, 1], \"expected\": [[\"q\"], 2, 3, [\"a\", \"b\", \"p\", \"c\"], null, 1], \"passed\": true}, {\"check\": \"workspace regression 5\", \"actual\": [[\"p\"], 2, 3, [\"a\", \"b\", \"q\", \"c\"], \"g\", 1], \"expected\": [[\"p\"], 2, 3, [\"a\", \"b\", \"q\", \"c\"], \"g\", 1], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}