{"abstract":"8-4-3-2-A beats 7-6-5-4-3 because its card total is smaller.","category":"Poker hand evaluation","checks":8,"contract":"Input: {\"a\": five cards, \"b\": five cards}. Ace-to-five low: aces count 1, straights and flushes are ignored, any paired rank disqualifies, the highest card must be 8 or lower to qualify. Compare qualifying lows from the highest card downward; lower wins. Return \"a\", \"b\", \"tie\", or \"none\" when neither qualifies.","evaluation_group":"w2-poker_hand_evaluation-eight-or-better-low","failed_approach":"Comparing from the lowest card upward still ranks 7-6-5-2-A against 7-4-3-2-A incorrectly.","family":"w2-poker_hand_evaluation-eight-or-better-low-low-comparison-order","id":"FA-81921","implementations":{"attempt":{"sha256":"e8bbbf4c34faec6de47b6d063b3339f2b2dda33f2b0c49eb03f75a13ea643505","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    R='23456789TJQKA'\n    def low(h):\n        vals=sorted({1 if c[0]=='A' else R.index(c[0])+2 for c in h}, reverse=True)\n        if len(vals)<5: return None\n        if vals[0]>8: return None\n        return vals\n    la,lb=low(x['a']),low(x['b'])\n    if la is None and lb is None: return 'none'\n    if la is None: return 'b'\n    if lb is None: return 'a'\n    if la==lb: return 'tie'\n    return 'a' if la[::-1]<lb[::-1] else 'b'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('eight low qualifies',\n   {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['9h', '5d', '4d', '3c', '2c']}, 'a'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a')],\n [('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('flush low', {'a': ['2c', '4c', '5c', '6c', '7c'], 'b': ['8d', '6h', '5d', '4s', '2d']}, 'a'),\n  ('only b qualifies', {'a': ['Kh', 'Qd', 'Jc', 'Ts', '9h'], 'b': ['8d', '7h', '5d', '4s', '2d']},\n   'b'),\n  ('exact tie', {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['8d', '6c', '4s', '3h', '2c']}, 'tie')],\n [('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('flush low', {'a': ['2c', '4c', '5c', '6c', '7c'], 'b': ['8d', '6h', '5d', '4s', '2d']}, 'a'),\n  ('only b qualifies', {'a': ['Kh', 'Qd', 'Jc', 'Ts', '9h'], 'b': ['8d', '7h', '5d', '4s', '2d']},\n   'b'),\n  ('exact tie', {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['8d', '6c', '4s', '3h', '2c']}, 'tie'),\n  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none'),\n  ('lowest card trap', {'a': ['Kh', '5d', '4c', '3s', '2h'], 'b': ['Qh', 'Jd', 'Tc', '9s', '7c']},\n   'none'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')],\n [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none'),\n  ('lowest card trap', {'a': ['Kh', '5d', '4c', '3s', '2h'], 'b': ['Qh', 'Jd', 'Tc', '9s', '7c']},\n   'none'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')],\n [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('eight low qualifies',\n   {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['9h', '5d', '4d', '3c', '2c']}, 'a'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')]]\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":"e18ada2e58a6ae40a8c55fb283df5729fbc02ba9c2da269f10279a4fdc29c6b4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    R='23456789TJQKA'\n    def low(h):\n        vals=sorted({1 if c[0]=='A' else R.index(c[0])+2 for c in h}, reverse=True)\n        if len(vals)<5: return None\n        if vals[0]>8: return None\n        return vals\n    la,lb=low(x['a']),low(x['b'])\n    if la is None and lb is None: return 'none'\n    if la is None: return 'b'\n    if lb is None: return 'a'\n    if la==lb: return 'tie'\n    return 'a' if sum(la)<sum(lb) else 'b'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('eight low qualifies',\n   {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['9h', '5d', '4d', '3c', '2c']}, 'a'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a')],\n [('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('flush low', {'a': ['2c', '4c', '5c', '6c', '7c'], 'b': ['8d', '6h', '5d', '4s', '2d']}, 'a'),\n  ('only b qualifies', {'a': ['Kh', 'Qd', 'Jc', 'Ts', '9h'], 'b': ['8d', '7h', '5d', '4s', '2d']},\n   'b'),\n  ('exact tie', {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['8d', '6c', '4s', '3h', '2c']}, 'tie')],\n [('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('flush low', {'a': ['2c', '4c', '5c', '6c', '7c'], 'b': ['8d', '6h', '5d', '4s', '2d']}, 'a'),\n  ('only b qualifies', {'a': ['Kh', 'Qd', 'Jc', 'Ts', '9h'], 'b': ['8d', '7h', '5d', '4s', '2d']},\n   'b'),\n  ('exact tie', {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['8d', '6c', '4s', '3h', '2c']}, 'tie'),\n  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none'),\n  ('lowest card trap', {'a': ['Kh', '5d', '4c', '3s', '2h'], 'b': ['Qh', 'Jd', 'Tc', '9s', '7c']},\n   'none'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')],\n [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none'),\n  ('lowest card trap', {'a': ['Kh', '5d', '4c', '3s', '2h'], 'b': ['Qh', 'Jd', 'Tc', '9s', '7c']},\n   'none'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')],\n [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('eight low qualifies',\n   {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['9h', '5d', '4d', '3c', '2c']}, 'a'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')]]\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":"597a0dbebbeff54d461dfd70ecd32898e4f4f50dbf1a4d0e48c1187e15dcb4a1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    R='23456789TJQKA'\n    def low(h):\n        vals=sorted({1 if c[0]=='A' else R.index(c[0])+2 for c in h}, reverse=True)\n        if len(vals)<5: return None\n        if vals[0]>8: return None\n        return vals\n    la,lb=low(x['a']),low(x['b'])\n    if la is None and lb is None: return 'none'\n    if la is None: return 'b'\n    if lb is None: return 'a'\n    if la==lb: return 'tie'\n    return 'a' if la<lb else 'b'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('eight low qualifies',\n   {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['9h', '5d', '4d', '3c', '2c']}, 'a'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a')],\n [('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('flush low', {'a': ['2c', '4c', '5c', '6c', '7c'], 'b': ['8d', '6h', '5d', '4s', '2d']}, 'a'),\n  ('only b qualifies', {'a': ['Kh', 'Qd', 'Jc', 'Ts', '9h'], 'b': ['8d', '7h', '5d', '4s', '2d']},\n   'b'),\n  ('exact tie', {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['8d', '6c', '4s', '3h', '2c']}, 'tie')],\n [('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('flush low', {'a': ['2c', '4c', '5c', '6c', '7c'], 'b': ['8d', '6h', '5d', '4s', '2d']}, 'a'),\n  ('only b qualifies', {'a': ['Kh', 'Qd', 'Jc', 'Ts', '9h'], 'b': ['8d', '7h', '5d', '4s', '2d']},\n   'b'),\n  ('exact tie', {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['8d', '6c', '4s', '3h', '2c']}, 'tie'),\n  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none'),\n  ('lowest card trap', {'a': ['Kh', '5d', '4c', '3s', '2h'], 'b': ['Qh', 'Jd', 'Tc', '9s', '7c']},\n   'none'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')],\n [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none'),\n  ('lowest card trap', {'a': ['Kh', '5d', '4c', '3s', '2h'], 'b': ['Qh', 'Jd', 'Tc', '9s', '7c']},\n   'none'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')],\n [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('eight low qualifies',\n   {'a': ['8h', '6d', '4c', '3s', '2h'], 'b': ['9h', '5d', '4d', '3c', '2c']}, 'a'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\n  ('sum trap', {'a': ['8h', '3d', '2c', '4s', 'Ah'], 'b': ['7c', '6d', '5d', '4c', '3c']}, 'b'),\n  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'a'),\n  ('second card decides',\n   {'a': ['8h', '5d', '4c', '3s', '2h'], 'b': ['8d', '6c', '3d', '2c', 'Ac']}, 'a')]]\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\", \"10h\"); 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-eight-or-better-low-low-comparison-order","generated_at":"2026-09-29T14:50:07.543867+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Hi-lo split games award half the pot from this low comparison.","repair":"Compare the descending rank lists lexicographically; the lower list wins.","root_cause":"The lows are compared by the sum of card values instead of lexicographically from the top card.","sha256":"0581f0201f80defd591de1c9516a8f296fe1fbb866f5b8acfa1023ed09ea21e6","title":"Lows compared by total pips · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.424,"exit_code":1,"observations":[{"actual":"a","check":"wheel is best low","expected":"a","passed":true},{"actual":"a","check":"ace low vs eight low","expected":"b","passed":false},{"actual":"none","check":"pair disqualifies","expected":"none","passed":true},{"actual":"a","check":"eight low qualifies","expected":"a","passed":true},{"actual":"none","check":"nine low misses","expected":"none","passed":true},{"actual":"b","check":"compare from top card","expected":"b","passed":true},{"actual":"a","check":"sum trap","expected":"b","passed":false},{"actual":"a","check":"straight still counts as low","expected":"a","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wheel is best low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"ace low vs eight low\", \"actual\": \"a\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"pair disqualifies\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"eight low qualifies\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"nine low misses\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"compare from top card\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"sum trap\", \"actual\": \"a\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"straight still counts as low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.49,"exit_code":1,"observations":[{"actual":"a","check":"wheel is best low","expected":"a","passed":true},{"actual":"a","check":"ace low vs eight low","expected":"b","passed":false},{"actual":"none","check":"pair disqualifies","expected":"none","passed":true},{"actual":"a","check":"eight low qualifies","expected":"a","passed":true},{"actual":"none","check":"nine low misses","expected":"none","passed":true},{"actual":"b","check":"compare from top card","expected":"b","passed":true},{"actual":"a","check":"sum trap","expected":"b","passed":false},{"actual":"a","check":"straight still counts as low","expected":"a","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wheel is best low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"ace low vs eight low\", \"actual\": \"a\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"pair disqualifies\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"eight low qualifies\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"nine low misses\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"compare from top card\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"sum trap\", \"actual\": \"a\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"straight still counts as low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.679,"exit_code":0,"observations":[{"actual":"a","check":"wheel is best low","expected":"a","passed":true},{"actual":"b","check":"ace low vs eight low","expected":"b","passed":true},{"actual":"none","check":"pair disqualifies","expected":"none","passed":true},{"actual":"a","check":"eight low qualifies","expected":"a","passed":true},{"actual":"none","check":"nine low misses","expected":"none","passed":true},{"actual":"b","check":"compare from top card","expected":"b","passed":true},{"actual":"b","check":"sum trap","expected":"b","passed":true},{"actual":"a","check":"straight still counts as low","expected":"a","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wheel is best low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"ace low vs eight low\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"pair disqualifies\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"eight low qualifies\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"nine low misses\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"compare from top card\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"sum trap\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"straight still counts as low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}