{"abstract":"A-2-3-4-5 fails to qualify for low and loses to 7-5-4-3-2.","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.","contract_signature":"x","evaluation_group":"w2-poker_hand_evaluation-eight-or-better-low","failed_approach":"Shifting every rank down by one makes the ace 13 and still leaves it the highest card.","family":"w2-poker_hand_evaluation-eight-or-better-low-ace-valued-low","id":"FA-81906","implementations":{"attempt":{"sha256":"c1611583f57a1dc1df97a5fc4238d3959b11797bdc54de2edd673334d40f29e1","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({R.index(c[0])+1 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  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '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 [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, '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  ('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  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a'),\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  ('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')]]\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":"b0bd7d205bc1188de8b1d2a2df56cbcb0401d2ff42505a5fd26eb0997c31dabb","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({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  ('six-high straight low',\n   {'a': ['2h', '3d', '4c', '5s', '6h'], 'b': ['7c', '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 [('wheel is best low', {'a': ['Ah', '2d', '3c', '4s', '5h'], 'b': ['2h', '3d', '4c', '5s', '7h']},\n   'a'),\n  ('compare from top card',\n   {'a': ['7h', '6d', '5c', '2s', 'Ah'], 'b': ['7c', '4d', '3d', '2c', 'Ad']}, 'b'),\n  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, '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  ('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  ('straight still counts as low',\n   {'a': ['Ah', '2h', '3h', '4h', '5h'], 'b': ['6c', '4d', '3d', '2c', 'Ad']}, 'a'),\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  ('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')]]\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-ace-valued-low","generated_at":"2026-09-29T14:50:07.276695+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.","root_cause":"The low evaluator reuses the high-hand rank table, so the ace is worth 14.","sha256":"e4e9fbe038d5418a649a774b1f8acad815943bdb56c4b05cb4b9609b4b085224","title":"Ace counted high kills the wheel low · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.545,"exit_code":1,"observations":[{"actual":"b","check":"wheel is best low","expected":"a","passed":false},{"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":"a","check":"nine low misses","expected":"none","passed":false},{"actual":"none","check":"compare from top card","expected":"b","passed":false},{"actual":"b","check":"sum trap","expected":"b","passed":true},{"actual":"a","check":"six-high straight low","expected":"a","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wheel is best low\", \"actual\": \"b\", \"expected\": \"a\", \"passed\": false}, {\"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\": \"a\", \"expected\": \"none\", \"passed\": false}, {\"check\": \"compare from top card\", \"actual\": \"none\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"sum trap\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"six-high straight low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.332,"exit_code":1,"observations":[{"actual":"b","check":"wheel is best low","expected":"a","passed":false},{"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":"none","check":"compare from top card","expected":"b","passed":false},{"actual":"b","check":"sum trap","expected":"b","passed":true},{"actual":"a","check":"six-high straight low","expected":"a","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wheel is best low\", \"actual\": \"b\", \"expected\": \"a\", \"passed\": false}, {\"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\": \"none\", \"expected\": \"b\", \"passed\": false}, {\"check\": \"sum trap\", \"actual\": \"b\", \"expected\": \"b\", \"passed\": true}, {\"check\": \"six-high straight low\", \"actual\": \"a\", \"expected\": \"a\", \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}