{"abstract":"A five in hand_b is evaluated instead of reported invalid.","category":"Poker hand evaluation","checks":8,"contract":"Input: [hand_a, hand_b], five cards each from a 36-card deck (ranks 6-A). Short-deck ranking: straight flush > quads > flush > full house > straight > trips > two pair > pair > high card. A-6-7-8-9 is the lowest straight (nine high). A card below 6 in either hand makes the result \"invalid\". Return 1, -1, 0 or \"invalid\".","evaluation_group":"w2-poker_hand_evaluation-short-deck-comparator","failed_approach":"Validating only the second hand misses invalid cards in the first.","family":"w2-poker_hand_evaluation-short-deck-comparator-invalid-rank-scope","id":"FA-82221","implementations":{"attempt":{"sha256":"42ad50fdc04ac2740024b0f70115480dbb333e68dac5387f12be332f7d341c32","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport collections\nN = 1\nobservations = []\ndef solve(x):\n    R='6789TJQKA'\n    for c in x[1]:\n        if c[0] not in R: return 'invalid'\n    def key(h):\n        vals=sorted((R.index(c[0])+6 for c in h), reverse=True)\n        cnt=collections.Counter(vals)\n        order=sorted(cnt, key=lambda v:(cnt[v],v), reverse=True)\n        shape=sorted(cnt.values(), reverse=True)\n        flush=len({c[1] for c in h})==1\n        low=vals==[14,9,8,7,6]\n        straight=len(cnt)==5 and (vals[0]-vals[4]==4 or low)\n        if straight: order=[9 if low else vals[0]]\n        if straight and flush: return (8,order)\n        if shape==[4,1]: return (7,order)\n        if flush: return (6,vals)\n        if shape==[3,2]: return (5,order)\n        if straight: return (4,order)\n        if shape==[3,1,1]: return (3,order)\n        if shape==[2,2,1]: return (2,order)\n        if shape==[2,1,1,1]: return (1,order)\n        return (0,vals)\n    a,b=key(x[0]),key(x[1])\n    return (a>b)-(a<b)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1)],\n [('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1),\n  ('pair vs pair kicker', [['Kh', 'Kd', 'Qc', '7s', '6h'], ['Ks', 'Kc', 'Jc', 'Ts', '9h']], 1),\n  ('tie straights', [['6h', '7d', '8c', '9s', 'Th'], ['6c', '7h', '8d', '9h', 'Tc']], 0),\n  ('quads beat flush', [['9h', '9d', '9c', '9s', '6h'], ['6d', '8d', 'Td', 'Jd', 'Ad']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('pair vs pair kicker', [['Kh', 'Kd', 'Qc', '7s', '6h'], ['Ks', 'Kc', 'Jc', 'Ts', '9h']], 1),\n  ('tie straights', [['6h', '7d', '8c', '9s', 'Th'], ['6c', '7h', '8d', '9h', 'Tc']], 0),\n  ('quads beat flush', [['9h', '9d', '9c', '9s', '6h'], ['6d', '8d', 'Td', 'Jd', 'Ad']], 1),\n  ('trips vs two pair', [['7h', '7d', '7c', 'As', 'Kh'], ['Ah', 'Ad', 'Kc', 'Ks', 'Qh']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('trips vs two pair', [['7h', '7d', '7c', 'As', 'Kh'], ['Ah', 'Ad', 'Kc', 'Ks', 'Qh']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1)]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"26c5bc95287cf7d3a4889ec9b2a4dc98dd4744741e59fc1ac03072999290f35e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport collections\nN = 1\nobservations = []\ndef solve(x):\n    R='6789TJQKA'\n    for c in x[0]:\n        if c[0] not in R: return 'invalid'\n    def key(h):\n        vals=sorted((R.index(c[0])+6 for c in h), reverse=True)\n        cnt=collections.Counter(vals)\n        order=sorted(cnt, key=lambda v:(cnt[v],v), reverse=True)\n        shape=sorted(cnt.values(), reverse=True)\n        flush=len({c[1] for c in h})==1\n        low=vals==[14,9,8,7,6]\n        straight=len(cnt)==5 and (vals[0]-vals[4]==4 or low)\n        if straight: order=[9 if low else vals[0]]\n        if straight and flush: return (8,order)\n        if shape==[4,1]: return (7,order)\n        if flush: return (6,vals)\n        if shape==[3,2]: return (5,order)\n        if straight: return (4,order)\n        if shape==[3,1,1]: return (3,order)\n        if shape==[2,2,1]: return (2,order)\n        if shape==[2,1,1,1]: return (1,order)\n        return (0,vals)\n    a,b=key(x[0]),key(x[1])\n    return (a>b)-(a<b)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1)],\n [('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1),\n  ('pair vs pair kicker', [['Kh', 'Kd', 'Qc', '7s', '6h'], ['Ks', 'Kc', 'Jc', 'Ts', '9h']], 1),\n  ('tie straights', [['6h', '7d', '8c', '9s', 'Th'], ['6c', '7h', '8d', '9h', 'Tc']], 0),\n  ('quads beat flush', [['9h', '9d', '9c', '9s', '6h'], ['6d', '8d', 'Td', 'Jd', 'Ad']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('pair vs pair kicker', [['Kh', 'Kd', 'Qc', '7s', '6h'], ['Ks', 'Kc', 'Jc', 'Ts', '9h']], 1),\n  ('tie straights', [['6h', '7d', '8c', '9s', 'Th'], ['6c', '7h', '8d', '9h', 'Tc']], 0),\n  ('quads beat flush', [['9h', '9d', '9c', '9s', '6h'], ['6d', '8d', 'Td', 'Jd', 'Ad']], 1),\n  ('trips vs two pair', [['7h', '7d', '7c', 'As', 'Kh'], ['Ah', 'Ad', 'Kc', 'Ks', 'Qh']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('trips vs two pair', [['7h', '7d', '7c', 'As', 'Kh'], ['Ah', 'Ad', 'Kc', 'Ks', 'Qh']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1)]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"2673dd4f1118913c77dda344db522bb1e4ea32bc69ec465764ef65c2fea9c09c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport collections\nN = 1\nobservations = []\ndef solve(x):\n    R='6789TJQKA'\n    for c in x[0]+x[1]:\n        if c[0] not in R: return 'invalid'\n    def key(h):\n        vals=sorted((R.index(c[0])+6 for c in h), reverse=True)\n        cnt=collections.Counter(vals)\n        order=sorted(cnt, key=lambda v:(cnt[v],v), reverse=True)\n        shape=sorted(cnt.values(), reverse=True)\n        flush=len({c[1] for c in h})==1\n        low=vals==[14,9,8,7,6]\n        straight=len(cnt)==5 and (vals[0]-vals[4]==4 or low)\n        if straight: order=[9 if low else vals[0]]\n        if straight and flush: return (8,order)\n        if shape==[4,1]: return (7,order)\n        if flush: return (6,vals)\n        if shape==[3,2]: return (5,order)\n        if straight: return (4,order)\n        if shape==[3,1,1]: return (3,order)\n        if shape==[2,2,1]: return (2,order)\n        if shape==[2,1,1,1]: return (1,order)\n        return (0,vals)\n    a,b=key(x[0]),key(x[1])\n    return (a>b)-(a<b)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1)],\n [('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1),\n  ('pair vs pair kicker', [['Kh', 'Kd', 'Qc', '7s', '6h'], ['Ks', 'Kc', 'Jc', 'Ts', '9h']], 1),\n  ('tie straights', [['6h', '7d', '8c', '9s', 'Th'], ['6c', '7h', '8d', '9h', 'Tc']], 0),\n  ('quads beat flush', [['9h', '9d', '9c', '9s', '6h'], ['6d', '8d', 'Td', 'Jd', 'Ad']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('pair vs pair kicker', [['Kh', 'Kd', 'Qc', '7s', '6h'], ['Ks', 'Kc', 'Jc', 'Ts', '9h']], 1),\n  ('tie straights', [['6h', '7d', '8c', '9s', 'Th'], ['6c', '7h', '8d', '9h', 'Tc']], 0),\n  ('quads beat flush', [['9h', '9d', '9c', '9s', '6h'], ['6d', '8d', 'Td', 'Jd', 'Ad']], 1),\n  ('trips vs two pair', [['7h', '7d', '7c', 'As', 'Kh'], ['Ah', 'Ad', 'Kc', 'Ks', 'Qh']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('trips vs two pair', [['7h', '7d', '7c', 'As', 'Kh'], ['Ah', 'Ad', 'Kc', 'Ks', 'Qh']], 1)],\n [('flush beats full house', [['6h', '9h', 'Jh', 'Qh', 'Ah'], ['Kh', 'Kd', 'Kc', '7s', '7h']], 1),\n  ('full house loses to flush', [['Ks', 'Kd', 'Kc', '7s', '7c'], ['6d', '8d', 'Td', 'Jd', 'Qd']],\n   -1),\n  ('short wheel is a straight', [['Ah', '6d', '7c', '8s', '9h'], ['Qh', 'Qd', 'Qc', '7s', '6h']],\n   1),\n  ('short wheel vs six-ten', [['Ah', '6d', '7c', '8s', '9h'], ['6h', '7d', '8c', '9s', 'Th']], -1),\n  ('jack-nine gap not a straight', [['Jh', '6d', '7c', '8s', '9h'], ['Ah', 'Ad', '7s', '8h', 'Tc']],\n   -1),\n  ('low card in hand b', [['Ah', 'Kd', 'Qc', 'Js', '9h'], ['5h', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('low card in hand a', [['2h', 'Kd', 'Qc', 'Js', '9h'], ['Th', '6d', '7c', '8s', '9s']],\n   'invalid'),\n  ('broadway vs short wheel', [['Th', 'Jd', 'Qc', 'Ks', 'Ah'], ['Ad', '6c', '7d', '8h', '9c']], 1)]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"A deterministic toy model with an explicitly stated contract; card strings are rank+suit (for example \"As\", \"Td\"); no claim of conformance to any casino or tournament rulebook. 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":"w2-poker_hand_evaluation-short-deck-comparator-invalid-rank-scope","generated_at":"2026-09-29T14:50:10.149868+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Short-deck tables reuse full-deck evaluators and must patch exactly these rules.","repair":"Validate every card in both hands.","root_cause":"Only the first hand is validated against the short rank set.","sha256":"18b287bc25074c43fa02ae82a8e726506e28cb3b4c31bd7b72b78df3ebbca315","title":"Stripped-deck check skips the second hand · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.648,"exit_code":1,"observations":[{"actual":1,"check":"flush beats full house","expected":1,"passed":true},{"actual":-1,"check":"full house loses to flush","expected":-1,"passed":true},{"actual":1,"check":"short wheel is a straight","expected":1,"passed":true},{"actual":-1,"check":"short wheel vs six-ten","expected":-1,"passed":true},{"actual":-1,"check":"jack-nine gap not a straight","expected":-1,"passed":true},{"actual":"invalid","check":"low card in hand b","expected":"invalid","passed":true},{"actual":"error:ValueError","check":"low card in hand a","expected":"invalid","passed":false},{"actual":1,"check":"broadway vs short wheel","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"flush beats full house\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"full house loses to flush\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"short wheel is a straight\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"short wheel vs six-ten\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"jack-nine gap not a straight\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"low card in hand b\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"low card in hand a\", \"actual\": \"error:ValueError\", \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"broadway vs short wheel\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.187,"exit_code":1,"observations":[{"actual":1,"check":"flush beats full house","expected":1,"passed":true},{"actual":-1,"check":"full house loses to flush","expected":-1,"passed":true},{"actual":1,"check":"short wheel is a straight","expected":1,"passed":true},{"actual":-1,"check":"short wheel vs six-ten","expected":-1,"passed":true},{"actual":-1,"check":"jack-nine gap not a straight","expected":-1,"passed":true},{"actual":"error:ValueError","check":"low card in hand b","expected":"invalid","passed":false},{"actual":"invalid","check":"low card in hand a","expected":"invalid","passed":true},{"actual":1,"check":"broadway vs short wheel","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"flush beats full house\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"full house loses to flush\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"short wheel is a straight\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"short wheel vs six-ten\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"jack-nine gap not a straight\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"low card in hand b\", \"actual\": \"error:ValueError\", \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"low card in hand a\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"broadway vs short wheel\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.822,"exit_code":0,"observations":[{"actual":1,"check":"flush beats full house","expected":1,"passed":true},{"actual":-1,"check":"full house loses to flush","expected":-1,"passed":true},{"actual":1,"check":"short wheel is a straight","expected":1,"passed":true},{"actual":-1,"check":"short wheel vs six-ten","expected":-1,"passed":true},{"actual":-1,"check":"jack-nine gap not a straight","expected":-1,"passed":true},{"actual":"invalid","check":"low card in hand b","expected":"invalid","passed":true},{"actual":"invalid","check":"low card in hand a","expected":"invalid","passed":true},{"actual":1,"check":"broadway vs short wheel","expected":1,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"flush beats full house\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"full house loses to flush\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"short wheel is a straight\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"short wheel vs six-ten\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"jack-nine gap not a straight\", \"actual\": -1, \"expected\": -1, \"passed\": true}, {\"check\": \"low card in hand b\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"low card in hand a\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"broadway vs short wheel\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}