{"abstract":"A hand holding \"10h\" and an ace is reported as a pair.","category":"Poker hand evaluation","checks":8,"contract":"Input: five cards \"Rs\" (rank may be written \"10\" for ten; suits ignored, repeated ranks allowed up to four). Each rank maps to a distinct prime (2 for deuce ... 41 for ace); the product of the five primes is factored back into rank multiplicities, and the sorted multiplicity pattern names the rank shape: four of a kind, full house, three of a kind, two pair, one pair or high card.","evaluation_group":"w2-poker_hand_evaluation-prime-product-shape","failed_approach":"Looking up the whole \"10\" token with find still returns -1 and wraps to the ace prime.","family":"w2-poker_hand_evaluation-prime-product-shape-rank-to-prime-index","id":"FA-81966","implementations":{"attempt":{"sha256":"e6ba092f233bf85fb7377c7369341ab6ce37dc439fa01692a934775e50506536","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    R='23456789TJQKA'\n    P=[2,3,5,7,11,13,17,19,23,29,31,37,41]\n    prod=1\n    for c in x:\n        prod*=P[R.find(c[:-1])]\n    exps=[]\n    for p in P:\n        e=0\n        while prod%p==0:\n            prod//=p\n            e+=1\n        if e: exps.append(e)\n    exps.sort(reverse=True)\n    names={(4,1):'four of a kind',(3,2):'full house',(3,1,1):'three of a kind',(2,2,1):'two pair',(2,1,1,1):'one pair',(1,1,1,1,1):'high card'}\n    return names[tuple(exps)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('ace with three', ['Ah', '3d', '9c', '7s', '4h'], 'high card'),\n  ('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('full house', ['Kh', 'Kd', '2c', '2s', '2h'], 'full house'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair')],\n [('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('full house', ['Kh', 'Kd', '2c', '2s', '2h'], 'full house'),\n  ('quads', ['9h', '9d', '9c', '9s', '2h'], 'four of a kind'),\n  ('two pair', ['Jh', 'Jd', '4c', '4s', 'Ah'], 'two pair'),\n  ('trips deuces', ['2h', '2d', '2c', 'Ks', 'Qh'], 'three of a kind'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('quads', ['9h', '9d', '9c', '9s', '2h'], 'four of a kind'),\n  ('two pair', ['Jh', 'Jd', '4c', '4s', 'Ah'], 'two pair'),\n  ('trips deuces', ['2h', '2d', '2c', 'Ks', 'Qh'], 'three of a kind'),\n  ('deuce and ace', ['2h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('high card low', ['2h', '3d', '5c', '7s', '9h'], 'high card'),\n  ('pair of deuces', ['2h', '2d', '5c', '7s', '9h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('deuce and ace', ['2h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('high card low', ['2h', '3d', '5c', '7s', '9h'], 'high card'),\n  ('pair of deuces', ['2h', '2d', '5c', '7s', '9h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('ace with three', ['Ah', '3d', '9c', '7s', '4h'], 'high card'),\n  ('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')]]\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":"50c3994ce1093c5273cb49de700e59bf40f3dc0584104a2149fd2df15d67feb3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    R='23456789TJQKA'\n    P=[2,3,5,7,11,13,17,19,23,29,31,37,41]\n    prod=1\n    for c in x:\n        prod*=P[R.find(c[0])]\n    exps=[]\n    for p in P:\n        e=0\n        while prod%p==0:\n            prod//=p\n            e+=1\n        if e: exps.append(e)\n    exps.sort(reverse=True)\n    names={(4,1):'four of a kind',(3,2):'full house',(3,1,1):'three of a kind',(2,2,1):'two pair',(2,1,1,1):'one pair',(1,1,1,1,1):'high card'}\n    return names[tuple(exps)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('ace with three', ['Ah', '3d', '9c', '7s', '4h'], 'high card'),\n  ('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('full house', ['Kh', 'Kd', '2c', '2s', '2h'], 'full house'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair')],\n [('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('full house', ['Kh', 'Kd', '2c', '2s', '2h'], 'full house'),\n  ('quads', ['9h', '9d', '9c', '9s', '2h'], 'four of a kind'),\n  ('two pair', ['Jh', 'Jd', '4c', '4s', 'Ah'], 'two pair'),\n  ('trips deuces', ['2h', '2d', '2c', 'Ks', 'Qh'], 'three of a kind'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('quads', ['9h', '9d', '9c', '9s', '2h'], 'four of a kind'),\n  ('two pair', ['Jh', 'Jd', '4c', '4s', 'Ah'], 'two pair'),\n  ('trips deuces', ['2h', '2d', '2c', 'Ks', 'Qh'], 'three of a kind'),\n  ('deuce and ace', ['2h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('high card low', ['2h', '3d', '5c', '7s', '9h'], 'high card'),\n  ('pair of deuces', ['2h', '2d', '5c', '7s', '9h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('deuce and ace', ['2h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('high card low', ['2h', '3d', '5c', '7s', '9h'], 'high card'),\n  ('pair of deuces', ['2h', '2d', '5c', '7s', '9h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('ace with three', ['Ah', '3d', '9c', '7s', '4h'], 'high card'),\n  ('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')]]\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":"15df0ea62b272cfef095eecbd07d23d0aeb2d18daf7d22d26c7c13bfd59520a6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    R='23456789TJQKA'\n    P=[2,3,5,7,11,13,17,19,23,29,31,37,41]\n    prod=1\n    for c in x:\n        prod*=P[R.index('T' if c[:-1]=='10' else c[:-1])]\n    exps=[]\n    for p in P:\n        e=0\n        while prod%p==0:\n            prod//=p\n            e+=1\n        if e: exps.append(e)\n    exps.sort(reverse=True)\n    names={(4,1):'four of a kind',(3,2):'full house',(3,1,1):'three of a kind',(2,2,1):'two pair',(2,1,1,1):'one pair',(1,1,1,1,1):'high card'}\n    return names[tuple(exps)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('ace with three', ['Ah', '3d', '9c', '7s', '4h'], 'high card'),\n  ('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('full house', ['Kh', 'Kd', '2c', '2s', '2h'], 'full house'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair')],\n [('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('full house', ['Kh', 'Kd', '2c', '2s', '2h'], 'full house'),\n  ('quads', ['9h', '9d', '9c', '9s', '2h'], 'four of a kind'),\n  ('two pair', ['Jh', 'Jd', '4c', '4s', 'Ah'], 'two pair'),\n  ('trips deuces', ['2h', '2d', '2c', 'Ks', 'Qh'], 'three of a kind'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('quads', ['9h', '9d', '9c', '9s', '2h'], 'four of a kind'),\n  ('two pair', ['Jh', 'Jd', '4c', '4s', 'Ah'], 'two pair'),\n  ('trips deuces', ['2h', '2d', '2c', 'Ks', 'Qh'], 'three of a kind'),\n  ('deuce and ace', ['2h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('high card low', ['2h', '3d', '5c', '7s', '9h'], 'high card'),\n  ('pair of deuces', ['2h', '2d', '5c', '7s', '9h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('deuce and ace', ['2h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('high card low', ['2h', '3d', '5c', '7s', '9h'], 'high card'),\n  ('pair of deuces', ['2h', '2d', '5c', '7s', '9h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')],\n [('ace high', ['Ah', 'Kd', '9c', '7s', '4h'], 'high card'),\n  ('pair of aces', ['Ah', 'Ad', '9c', '7s', '4h'], 'one pair'),\n  ('ace with three', ['Ah', '3d', '9c', '7s', '4h'], 'high card'),\n  ('ace with king', ['Ah', 'Kd', 'Qc', '7s', '4h'], 'high card'),\n  ('ace with seven pair', ['Ah', '7d', '7c', '2s', '4h'], 'one pair'),\n  ('ten token with ace', ['10h', 'Ad', '8c', '6s', '4h'], 'high card'),\n  ('ten token pair', ['10h', 'Td', '8c', '6s', '4h'], 'one pair'),\n  ('ten token full house', ['10h', '10d', 'Tc', '6s', '6h'], 'full house')]]\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-prime-product-shape-rank-to-prime-index","generated_at":"2026-09-29T14:50:07.674738+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Prime-product hashing is how table-driven evaluators identify non-flush rank multisets.","repair":"Normalize \"10\" to T and use a lookup that fails loudly instead of wrapping to the last table entry.","root_cause":"str.find returns -1 for the \"1\" of a \"10\" token and P[-1] is the ace prime, so the ten silently becomes an ace.","sha256":"454154c4db7dc4dc8eea2608e5dfbdc4f170fd3546d73f64d201a491f5eb0fb1","title":"Unknown ten token silently hashes as an ace · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.536,"exit_code":1,"observations":[{"actual":"high card","check":"ace high","expected":"high card","passed":true},{"actual":"one pair","check":"pair of aces","expected":"one pair","passed":true},{"actual":"high card","check":"ace with three","expected":"high card","passed":true},{"actual":"high card","check":"ace with king","expected":"high card","passed":true},{"actual":"one pair","check":"ace with seven pair","expected":"one pair","passed":true},{"actual":"full house","check":"full house","expected":"full house","passed":true},{"actual":"one pair","check":"ten token with ace","expected":"high card","passed":false},{"actual":"high card","check":"ten token pair","expected":"one pair","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ace high\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"pair of aces\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}, {\"check\": \"ace with three\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ace with king\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ace with seven pair\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}, {\"check\": \"full house\", \"actual\": \"full house\", \"expected\": \"full house\", \"passed\": true}, {\"check\": \"ten token with ace\", \"actual\": \"one pair\", \"expected\": \"high card\", \"passed\": false}, {\"check\": \"ten token pair\", \"actual\": \"high card\", \"expected\": \"one pair\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.679,"exit_code":1,"observations":[{"actual":"high card","check":"ace high","expected":"high card","passed":true},{"actual":"one pair","check":"pair of aces","expected":"one pair","passed":true},{"actual":"high card","check":"ace with three","expected":"high card","passed":true},{"actual":"high card","check":"ace with king","expected":"high card","passed":true},{"actual":"one pair","check":"ace with seven pair","expected":"one pair","passed":true},{"actual":"full house","check":"full house","expected":"full house","passed":true},{"actual":"one pair","check":"ten token with ace","expected":"high card","passed":false},{"actual":"high card","check":"ten token pair","expected":"one pair","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ace high\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"pair of aces\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}, {\"check\": \"ace with three\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ace with king\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ace with seven pair\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}, {\"check\": \"full house\", \"actual\": \"full house\", \"expected\": \"full house\", \"passed\": true}, {\"check\": \"ten token with ace\", \"actual\": \"one pair\", \"expected\": \"high card\", \"passed\": false}, {\"check\": \"ten token pair\", \"actual\": \"high card\", \"expected\": \"one pair\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.996,"exit_code":0,"observations":[{"actual":"high card","check":"ace high","expected":"high card","passed":true},{"actual":"one pair","check":"pair of aces","expected":"one pair","passed":true},{"actual":"high card","check":"ace with three","expected":"high card","passed":true},{"actual":"high card","check":"ace with king","expected":"high card","passed":true},{"actual":"one pair","check":"ace with seven pair","expected":"one pair","passed":true},{"actual":"full house","check":"full house","expected":"full house","passed":true},{"actual":"high card","check":"ten token with ace","expected":"high card","passed":true},{"actual":"one pair","check":"ten token pair","expected":"one pair","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ace high\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"pair of aces\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}, {\"check\": \"ace with three\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ace with king\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ace with seven pair\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}, {\"check\": \"full house\", \"actual\": \"full house\", \"expected\": \"full house\", \"passed\": true}, {\"check\": \"ten token with ace\", \"actual\": \"high card\", \"expected\": \"high card\", \"passed\": true}, {\"check\": \"ten token pair\", \"actual\": \"one pair\", \"expected\": \"one pair\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}