{"abstract":"The tab workspace reports an incorrect left comparison binding.","category":"Tab interfaces","checks":7,"contract":"A comparison tab binds ordered left/right document revisions, labels the direction, permits edits only on editable right side and handles same-document different-revision comparisons.","evaluation_group":"s3-tabs-comparison-tab-pair","failed_approach":"The partial repair [x['left'],x['left_rev']] still violates a workspace boundary or normal case.","family":"s3-tab-interfaces-comparison-tab-pair-left-comparison-binding","id":"FA-36301","implementations":{"attempt":{"sha256":"8e8b415d38c006f8e01ea75940f4b6df48becaf3b90e4af81680e2d45425531f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = [x['left'],x['left_rev']]\n    r1 = [x['left'],x['left_rev']] if x['swapped'] else [x['right'],x['right_rev']]\n    r2 = (x['right']+' → '+x['left']) if x['swapped'] else (x['left']+' → '+x['right'])\n    r3 = [x['left'],x['left_rev'],x['right'],x['right_rev']]\n    r4 = x['right_editable'] and not x['swapped']\n    r5 = x['left']==x['right'] and x['left_rev']==x['right_rev']\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: [({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 2], ['b', 4], 'a \\u2192 b', ['a', 2, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': True}, [['b', 4], ['a', 2], 'b \\u2192 a', ['a', 2, 'b', 4], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': False, 'swapped': False}, [['a', 2], ['b', 4], 'a \\u2192 b', ['a', 2, 'b', 4], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 2], ['a', 4], 'a \\u2192 a', ['a', 2, 'a', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 2, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 2], 'a \\u2192 b', ['a', 4, 'b', 2], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 4], 'a \\u2192 b', ['a', 0, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 4], 'a \\u2192 b', ['a', 4, 'b', 4], True, False])], 2: [({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 8], 'a \\u2192 b', ['a', 4, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': True}, [['b', 8], ['a', 4], 'b \\u2192 a', ['a', 4, 'b', 8], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': False, 'swapped': False}, [['a', 4], ['b', 8], 'a \\u2192 b', ['a', 4, 'b', 8], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 4], ['a', 8], 'a \\u2192 a', ['a', 4, 'a', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 4], 'a \\u2192 b', ['a', 8, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 8], 'a \\u2192 b', ['a', 0, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 8], 'a \\u2192 b', ['a', 8, 'b', 8], True, False])], 3: [({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 6], ['b', 12], 'a \\u2192 b', ['a', 6, 'b', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': True}, [['b', 12], ['a', 6], 'b \\u2192 a', ['a', 6, 'b', 12], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': False, 'swapped': False}, [['a', 6], ['b', 12], 'a \\u2192 b', ['a', 6, 'b', 12], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 6], ['a', 12], 'a \\u2192 a', ['a', 6, 'a', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 12, 'right_rev': 6, 'right_editable': True, 'swapped': False}, [['a', 12], ['b', 6], 'a \\u2192 b', ['a', 12, 'b', 6], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 12], 'a \\u2192 b', ['a', 0, 'b', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 12, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 12], ['b', 12], 'a \\u2192 b', ['a', 12, 'b', 12], True, False])], 4: [({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 16], 'a \\u2192 b', ['a', 8, 'b', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': True}, [['b', 16], ['a', 8], 'b \\u2192 a', ['a', 8, 'b', 16], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': False, 'swapped': False}, [['a', 8], ['b', 16], 'a \\u2192 b', ['a', 8, 'b', 16], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 8], ['a', 16], 'a \\u2192 a', ['a', 8, 'a', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 16, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 16], ['b', 8], 'a \\u2192 b', ['a', 16, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 16], 'a \\u2192 b', ['a', 0, 'b', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 16, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 16], ['b', 16], 'a \\u2192 b', ['a', 16, 'b', 16], True, False])], 5: [({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 10], ['b', 20], 'a \\u2192 b', ['a', 10, 'b', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': True}, [['b', 20], ['a', 10], 'b \\u2192 a', ['a', 10, 'b', 20], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': False, 'swapped': False}, [['a', 10], ['b', 20], 'a \\u2192 b', ['a', 10, 'b', 20], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 10], ['a', 20], 'a \\u2192 a', ['a', 10, 'a', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 20, 'right_rev': 10, 'right_editable': True, 'swapped': False}, [['a', 20], ['b', 10], 'a \\u2192 b', ['a', 20, 'b', 10], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 20], 'a \\u2192 b', ['a', 0, 'b', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 20, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 20], ['b', 20], 'a \\u2192 b', ['a', 20, 'b', 20], True, False])]}\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":"57b4c549e85cb3163bde17a57c5e4d4537fe51ea2ffe8f8a80a74405dd5536cf","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = [x['left'],x['right_rev']]\n    r1 = [x['left'],x['left_rev']] if x['swapped'] else [x['right'],x['right_rev']]\n    r2 = (x['right']+' → '+x['left']) if x['swapped'] else (x['left']+' → '+x['right'])\n    r3 = [x['left'],x['left_rev'],x['right'],x['right_rev']]\n    r4 = x['right_editable'] and not x['swapped']\n    r5 = x['left']==x['right'] and x['left_rev']==x['right_rev']\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: [({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 2], ['b', 4], 'a \\u2192 b', ['a', 2, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': True}, [['b', 4], ['a', 2], 'b \\u2192 a', ['a', 2, 'b', 4], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': False, 'swapped': False}, [['a', 2], ['b', 4], 'a \\u2192 b', ['a', 2, 'b', 4], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 2], ['a', 4], 'a \\u2192 a', ['a', 2, 'a', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 2, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 2], 'a \\u2192 b', ['a', 4, 'b', 2], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 4], 'a \\u2192 b', ['a', 0, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 4], 'a \\u2192 b', ['a', 4, 'b', 4], True, False])], 2: [({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 8], 'a \\u2192 b', ['a', 4, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': True}, [['b', 8], ['a', 4], 'b \\u2192 a', ['a', 4, 'b', 8], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': False, 'swapped': False}, [['a', 4], ['b', 8], 'a \\u2192 b', ['a', 4, 'b', 8], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 4], ['a', 8], 'a \\u2192 a', ['a', 4, 'a', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 4], 'a \\u2192 b', ['a', 8, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 8], 'a \\u2192 b', ['a', 0, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 8], 'a \\u2192 b', ['a', 8, 'b', 8], True, False])], 3: [({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 6], ['b', 12], 'a \\u2192 b', ['a', 6, 'b', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': True}, [['b', 12], ['a', 6], 'b \\u2192 a', ['a', 6, 'b', 12], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': False, 'swapped': False}, [['a', 6], ['b', 12], 'a \\u2192 b', ['a', 6, 'b', 12], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 6], ['a', 12], 'a \\u2192 a', ['a', 6, 'a', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 12, 'right_rev': 6, 'right_editable': True, 'swapped': False}, [['a', 12], ['b', 6], 'a \\u2192 b', ['a', 12, 'b', 6], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 12], 'a \\u2192 b', ['a', 0, 'b', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 12, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 12], ['b', 12], 'a \\u2192 b', ['a', 12, 'b', 12], True, False])], 4: [({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 16], 'a \\u2192 b', ['a', 8, 'b', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': True}, [['b', 16], ['a', 8], 'b \\u2192 a', ['a', 8, 'b', 16], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': False, 'swapped': False}, [['a', 8], ['b', 16], 'a \\u2192 b', ['a', 8, 'b', 16], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 8], ['a', 16], 'a \\u2192 a', ['a', 8, 'a', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 16, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 16], ['b', 8], 'a \\u2192 b', ['a', 16, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 16], 'a \\u2192 b', ['a', 0, 'b', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 16, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 16], ['b', 16], 'a \\u2192 b', ['a', 16, 'b', 16], True, False])], 5: [({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 10], ['b', 20], 'a \\u2192 b', ['a', 10, 'b', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': True}, [['b', 20], ['a', 10], 'b \\u2192 a', ['a', 10, 'b', 20], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': False, 'swapped': False}, [['a', 10], ['b', 20], 'a \\u2192 b', ['a', 10, 'b', 20], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 10], ['a', 20], 'a \\u2192 a', ['a', 10, 'a', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 20, 'right_rev': 10, 'right_editable': True, 'swapped': False}, [['a', 20], ['b', 10], 'a \\u2192 b', ['a', 20, 'b', 10], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 20], 'a \\u2192 b', ['a', 0, 'b', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 20, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 20], ['b', 20], 'a \\u2192 b', ['a', 20, 'b', 20], True, False])]}\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":"286da32003ac5c391168c84ffca3eba1cf449165fd2ee6ccb0e17063e464f5f7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = [x['right'],x['right_rev']] if x['swapped'] else [x['left'],x['left_rev']]\n    r1 = [x['left'],x['left_rev']] if x['swapped'] else [x['right'],x['right_rev']]\n    r2 = (x['right']+' → '+x['left']) if x['swapped'] else (x['left']+' → '+x['right'])\n    r3 = [x['left'],x['left_rev'],x['right'],x['right_rev']]\n    r4 = x['right_editable'] and not x['swapped']\n    r5 = x['left']==x['right'] and x['left_rev']==x['right_rev']\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: [({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 2], ['b', 4], 'a \\u2192 b', ['a', 2, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': True}, [['b', 4], ['a', 2], 'b \\u2192 a', ['a', 2, 'b', 4], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 2, 'right_rev': 4, 'right_editable': False, 'swapped': False}, [['a', 2], ['b', 4], 'a \\u2192 b', ['a', 2, 'b', 4], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 2, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 2], ['a', 4], 'a \\u2192 a', ['a', 2, 'a', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 2, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 2], 'a \\u2192 b', ['a', 4, 'b', 2], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 4], 'a \\u2192 b', ['a', 0, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 4], 'a \\u2192 b', ['a', 4, 'b', 4], True, False])], 2: [({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 4], ['b', 8], 'a \\u2192 b', ['a', 4, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': True}, [['b', 8], ['a', 4], 'b \\u2192 a', ['a', 4, 'b', 8], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 4, 'right_rev': 8, 'right_editable': False, 'swapped': False}, [['a', 4], ['b', 8], 'a \\u2192 b', ['a', 4, 'b', 8], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 4, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 4], ['a', 8], 'a \\u2192 a', ['a', 4, 'a', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 4, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 4], 'a \\u2192 b', ['a', 8, 'b', 4], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 8], 'a \\u2192 b', ['a', 0, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 8], 'a \\u2192 b', ['a', 8, 'b', 8], True, False])], 3: [({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 6], ['b', 12], 'a \\u2192 b', ['a', 6, 'b', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': True}, [['b', 12], ['a', 6], 'b \\u2192 a', ['a', 6, 'b', 12], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 6, 'right_rev': 12, 'right_editable': False, 'swapped': False}, [['a', 6], ['b', 12], 'a \\u2192 b', ['a', 6, 'b', 12], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 6, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 6], ['a', 12], 'a \\u2192 a', ['a', 6, 'a', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 12, 'right_rev': 6, 'right_editable': True, 'swapped': False}, [['a', 12], ['b', 6], 'a \\u2192 b', ['a', 12, 'b', 6], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 12], 'a \\u2192 b', ['a', 0, 'b', 12], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 12, 'right_rev': 12, 'right_editable': True, 'swapped': False}, [['a', 12], ['b', 12], 'a \\u2192 b', ['a', 12, 'b', 12], True, False])], 4: [({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 8], ['b', 16], 'a \\u2192 b', ['a', 8, 'b', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': True}, [['b', 16], ['a', 8], 'b \\u2192 a', ['a', 8, 'b', 16], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 8, 'right_rev': 16, 'right_editable': False, 'swapped': False}, [['a', 8], ['b', 16], 'a \\u2192 b', ['a', 8, 'b', 16], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 8, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 8], ['a', 16], 'a \\u2192 a', ['a', 8, 'a', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 16, 'right_rev': 8, 'right_editable': True, 'swapped': False}, [['a', 16], ['b', 8], 'a \\u2192 b', ['a', 16, 'b', 8], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 16], 'a \\u2192 b', ['a', 0, 'b', 16], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 16, 'right_rev': 16, 'right_editable': True, 'swapped': False}, [['a', 16], ['b', 16], 'a \\u2192 b', ['a', 16, 'b', 16], True, False])], 5: [({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 10], ['b', 20], 'a \\u2192 b', ['a', 10, 'b', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': True}, [['b', 20], ['a', 10], 'b \\u2192 a', ['a', 10, 'b', 20], False, False]), ({'left': 'a', 'right': 'b', 'left_rev': 10, 'right_rev': 20, 'right_editable': False, 'swapped': False}, [['a', 10], ['b', 20], 'a \\u2192 b', ['a', 10, 'b', 20], False, False]), ({'left': 'a', 'right': 'a', 'left_rev': 10, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 10], ['a', 20], 'a \\u2192 a', ['a', 10, 'a', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 20, 'right_rev': 10, 'right_editable': True, 'swapped': False}, [['a', 20], ['b', 10], 'a \\u2192 b', ['a', 20, 'b', 10], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 0, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 0], ['b', 20], 'a \\u2192 b', ['a', 0, 'b', 20], True, False]), ({'left': 'a', 'right': 'b', 'left_rev': 20, 'right_rev': 20, 'right_editable': True, 'swapped': False}, [['a', 20], ['b', 20], 'a \\u2192 b', ['a', 20, 'b', 20], True, False])]}\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-comparison-tab-pair-left-comparison-binding","generated_at":"2026-09-29T14:42:49.935907+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: [x['right'],x['right_rev']] if x['swapped'] else [x['left'],x['left_rev']].","root_cause":"The left comparison binding decision uses [x['left'],x['right_rev']] instead of [x['right'],x['right_rev']] if x['swapped'] else [x['left'],x['left_rev']].","sha256":"c45b2eb058ee70ad4f9e4d55be4bdcc42225b1e6f48d0b9b7dc86aa8abd3b673","title":"Comparison tab pair: left comparison binding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.297,"exit_code":1,"observations":[{"actual":[["a",2],["b",4],"a → b",["a",2,"b",4],true,false],"check":"workspace regression 0","expected":[["a",2],["b",4],"a → b",["a",2,"b",4],true,false],"passed":true},{"actual":[["a",2],["a",2],"b → a",["a",2,"b",4],false,false],"check":"workspace regression 1","expected":[["b",4],["a",2],"b → a",["a",2,"b",4],false,false],"passed":false},{"actual":[["a",2],["b",4],"a → b",["a",2,"b",4],false,false],"check":"workspace regression 2","expected":[["a",2],["b",4],"a → b",["a",2,"b",4],false,false],"passed":true},{"actual":[["a",2],["a",4],"a → a",["a",2,"a",4],true,false],"check":"workspace regression 3","expected":[["a",2],["a",4],"a → a",["a",2,"a",4],true,false],"passed":true},{"actual":[["a",4],["b",2],"a → b",["a",4,"b",2],true,false],"check":"workspace regression 4","expected":[["a",4],["b",2],"a → b",["a",4,"b",2],true,false],"passed":true},{"actual":[["a",0],["b",4],"a → b",["a",0,"b",4],true,false],"check":"workspace regression 5","expected":[["a",0],["b",4],"a → b",["a",0,"b",4],true,false],"passed":true},{"actual":[["a",4],["b",4],"a → b",["a",4,"b",4],true,false],"check":"workspace regression 6","expected":[["a",4],["b",4],"a → b",["a",4,"b",4],true,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], true, false], \"expected\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], true, false], \"passed\": true}, {\"check\": \"workspace regression 1\", \"actual\": [[\"a\", 2], [\"a\", 2], \"b → a\", [\"a\", 2, \"b\", 4], false, false], \"expected\": [[\"b\", 4], [\"a\", 2], \"b → a\", [\"a\", 2, \"b\", 4], false, false], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], false, false], \"expected\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], false, false], \"passed\": true}, {\"check\": \"workspace regression 3\", \"actual\": [[\"a\", 2], [\"a\", 4], \"a → a\", [\"a\", 2, \"a\", 4], true, false], \"expected\": [[\"a\", 2], [\"a\", 4], \"a → a\", [\"a\", 2, \"a\", 4], true, false], \"passed\": true}, {\"check\": \"workspace regression 4\", \"actual\": [[\"a\", 4], [\"b\", 2], \"a → b\", [\"a\", 4, \"b\", 2], true, false], \"expected\": [[\"a\", 4], [\"b\", 2], \"a → b\", [\"a\", 4, \"b\", 2], true, false], \"passed\": true}, {\"check\": \"workspace regression 5\", \"actual\": [[\"a\", 0], [\"b\", 4], \"a → b\", [\"a\", 0, \"b\", 4], true, false], \"expected\": [[\"a\", 0], [\"b\", 4], \"a → b\", [\"a\", 0, \"b\", 4], true, false], \"passed\": true}, {\"check\": \"workspace regression 6\", \"actual\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 4, \"b\", 4], true, false], \"expected\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 4, \"b\", 4], true, false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.671,"exit_code":1,"observations":[{"actual":[["a",4],["b",4],"a → b",["a",2,"b",4],true,false],"check":"workspace regression 0","expected":[["a",2],["b",4],"a → b",["a",2,"b",4],true,false],"passed":false},{"actual":[["a",4],["a",2],"b → a",["a",2,"b",4],false,false],"check":"workspace regression 1","expected":[["b",4],["a",2],"b → a",["a",2,"b",4],false,false],"passed":false},{"actual":[["a",4],["b",4],"a → b",["a",2,"b",4],false,false],"check":"workspace regression 2","expected":[["a",2],["b",4],"a → b",["a",2,"b",4],false,false],"passed":false},{"actual":[["a",4],["a",4],"a → a",["a",2,"a",4],true,false],"check":"workspace regression 3","expected":[["a",2],["a",4],"a → a",["a",2,"a",4],true,false],"passed":false},{"actual":[["a",2],["b",2],"a → b",["a",4,"b",2],true,false],"check":"workspace regression 4","expected":[["a",4],["b",2],"a → b",["a",4,"b",2],true,false],"passed":false},{"actual":[["a",4],["b",4],"a → b",["a",0,"b",4],true,false],"check":"workspace regression 5","expected":[["a",0],["b",4],"a → b",["a",0,"b",4],true,false],"passed":false},{"actual":[["a",4],["b",4],"a → b",["a",4,"b",4],true,false],"check":"workspace regression 6","expected":[["a",4],["b",4],"a → b",["a",4,"b",4],true,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], true, false], \"expected\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], true, false], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [[\"a\", 4], [\"a\", 2], \"b → a\", [\"a\", 2, \"b\", 4], false, false], \"expected\": [[\"b\", 4], [\"a\", 2], \"b → a\", [\"a\", 2, \"b\", 4], false, false], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], false, false], \"expected\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], false, false], \"passed\": false}, {\"check\": \"workspace regression 3\", \"actual\": [[\"a\", 4], [\"a\", 4], \"a → a\", [\"a\", 2, \"a\", 4], true, false], \"expected\": [[\"a\", 2], [\"a\", 4], \"a → a\", [\"a\", 2, \"a\", 4], true, false], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [[\"a\", 2], [\"b\", 2], \"a → b\", [\"a\", 4, \"b\", 2], true, false], \"expected\": [[\"a\", 4], [\"b\", 2], \"a → b\", [\"a\", 4, \"b\", 2], true, false], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 0, \"b\", 4], true, false], \"expected\": [[\"a\", 0], [\"b\", 4], \"a → b\", [\"a\", 0, \"b\", 4], true, false], \"passed\": false}, {\"check\": \"workspace regression 6\", \"actual\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 4, \"b\", 4], true, false], \"expected\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 4, \"b\", 4], true, false], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.054,"exit_code":0,"observations":[{"actual":[["a",2],["b",4],"a → b",["a",2,"b",4],true,false],"check":"workspace regression 0","expected":[["a",2],["b",4],"a → b",["a",2,"b",4],true,false],"passed":true},{"actual":[["b",4],["a",2],"b → a",["a",2,"b",4],false,false],"check":"workspace regression 1","expected":[["b",4],["a",2],"b → a",["a",2,"b",4],false,false],"passed":true},{"actual":[["a",2],["b",4],"a → b",["a",2,"b",4],false,false],"check":"workspace regression 2","expected":[["a",2],["b",4],"a → b",["a",2,"b",4],false,false],"passed":true},{"actual":[["a",2],["a",4],"a → a",["a",2,"a",4],true,false],"check":"workspace regression 3","expected":[["a",2],["a",4],"a → a",["a",2,"a",4],true,false],"passed":true},{"actual":[["a",4],["b",2],"a → b",["a",4,"b",2],true,false],"check":"workspace regression 4","expected":[["a",4],["b",2],"a → b",["a",4,"b",2],true,false],"passed":true},{"actual":[["a",0],["b",4],"a → b",["a",0,"b",4],true,false],"check":"workspace regression 5","expected":[["a",0],["b",4],"a → b",["a",0,"b",4],true,false],"passed":true},{"actual":[["a",4],["b",4],"a → b",["a",4,"b",4],true,false],"check":"workspace regression 6","expected":[["a",4],["b",4],"a → b",["a",4,"b",4],true,false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], true, false], \"expected\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], true, false], \"passed\": true}, {\"check\": \"workspace regression 1\", \"actual\": [[\"b\", 4], [\"a\", 2], \"b → a\", [\"a\", 2, \"b\", 4], false, false], \"expected\": [[\"b\", 4], [\"a\", 2], \"b → a\", [\"a\", 2, \"b\", 4], false, false], \"passed\": true}, {\"check\": \"workspace regression 2\", \"actual\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], false, false], \"expected\": [[\"a\", 2], [\"b\", 4], \"a → b\", [\"a\", 2, \"b\", 4], false, false], \"passed\": true}, {\"check\": \"workspace regression 3\", \"actual\": [[\"a\", 2], [\"a\", 4], \"a → a\", [\"a\", 2, \"a\", 4], true, false], \"expected\": [[\"a\", 2], [\"a\", 4], \"a → a\", [\"a\", 2, \"a\", 4], true, false], \"passed\": true}, {\"check\": \"workspace regression 4\", \"actual\": [[\"a\", 4], [\"b\", 2], \"a → b\", [\"a\", 4, \"b\", 2], true, false], \"expected\": [[\"a\", 4], [\"b\", 2], \"a → b\", [\"a\", 4, \"b\", 2], true, false], \"passed\": true}, {\"check\": \"workspace regression 5\", \"actual\": [[\"a\", 0], [\"b\", 4], \"a → b\", [\"a\", 0, \"b\", 4], true, false], \"expected\": [[\"a\", 0], [\"b\", 4], \"a → b\", [\"a\", 0, \"b\", 4], true, false], \"passed\": true}, {\"check\": \"workspace regression 6\", \"actual\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 4, \"b\", 4], true, false], \"expected\": [[\"a\", 4], [\"b\", 4], \"a → b\", [\"a\", 4, \"b\", 4], true, false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}