{"abstract":"An 8-6-4-3-2 low is disqualified and the pot is not split.","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":"Testing the lowest card against the threshold lets K-5-4-3-2 qualify.","family":"w2-poker_hand_evaluation-eight-or-better-low-eight-qualifier-threshold","id":"FA-81916","implementations":{"attempt":{"sha256":"fc2ed72b74c931c545a36e4640abf08bd486fcbc64e959fdae80de6609d98151","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[-1]>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 [('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\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  ('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  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none')],\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  ('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 [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\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  ('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  ('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')]]\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":"f7b97108b684af41849a122780e7af91007c79a993104b59a0d93d1899697960","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 [('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\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  ('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  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none')],\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  ('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 [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\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  ('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  ('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')]]\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":"b27a6b915460c4e91789b365e8c50d93097b75d4e72a2e159d6e60df203a7d71","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 [('ace low vs eight low',\n   {'a': ['Ah', '2d', '4c', '6s', '8h'], 'b': ['2h', '3d', '4d', '5s', '8c']}, 'b'),\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  ('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  ('trips disqualify', {'a': ['3h', '3d', '3c', '6s', '8h'], 'b': ['Kh', 'Qd', 'Jd', '9s', '8c']},\n   'none')],\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  ('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 [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('pair disqualifies', {'a': ['2h', '2d', '4c', '6s', '8h'], 'b': ['Kh', 'Qd', '4d', '5s', '8c']},\n   'none'),\n  ('nine low misses', {'a': ['9h', '5d', '4c', '3s', '2h'], 'b': ['Th', '5c', '4d', '3c', 'Ac']},\n   'none'),\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  ('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  ('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')]]\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-eight-qualifier-threshold","generated_at":"2026-09-29T14:50:07.440502+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":"Disqualify only when the highest low card exceeds 8.","root_cause":"The qualifier uses >= 8, which excludes the eight itself.","sha256":"6b509a6c663911b5486086e0e00d51745ee36b1d669362e66e75726d14b4c7c6","title":"Eight-high low rejected by the qualifier · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.514,"exit_code":1,"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":"b","check":"pair disqualifies","expected":"none","passed":false},{"actual":"a","check":"eight low qualifies","expected":"a","passed":true},{"actual":"a","check":"nine low misses","expected":"none","passed":false},{"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":false,"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\": \"b\", \"expected\": \"none\", \"passed\": false}, {\"check\": \"eight low qualifies\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"nine low misses\", \"actual\": \"a\", \"expected\": \"none\", \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":39.36,"exit_code":1,"observations":[{"actual":"a","check":"wheel is best low","expected":"a","passed":true},{"actual":"none","check":"ace low vs eight low","expected":"b","passed":false},{"actual":"none","check":"pair disqualifies","expected":"none","passed":true},{"actual":"none","check":"eight low qualifies","expected":"a","passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wheel is best low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}, {\"check\": \"ace low vs eight low\", \"actual\": \"none\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"pair disqualifies\", \"actual\": \"none\", \"expected\": \"none\", \"passed\": true}, {\"check\": \"eight low qualifies\", \"actual\": \"none\", \"expected\": \"a\", \"passed\": false}, {\"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\": false}\n"},"fixed":{"elapsed_ms":40.766,"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"}