{"abstract":"A dead king does not reduce \"AKs\" or \"AKo\" combos.","category":"Poker hand evaluation","checks":8,"contract":"Input: {\"hand\": class such as \"AKs\", \"AKo\", \"AK\" or \"QQ\", \"dead\": [known cards, rank upper-case or lower-case, suit lower-case or upper-case]}. Enumerate the concrete two-card combos of the class (suits c,d,h,s) and return how many contain no dead card.","contract_signature":"x","evaluation_group":"w2-poker_hand_evaluation-blocker-combo-enumeration","failed_approach":"Requiring both cards to be dead discards almost nothing.","family":"w2-poker_hand_evaluation-blocker-combo-enumeration-blocker-test-on-both-cards","id":"FA-82166","implementations":{"attempt":{"sha256":"9fe05133742120eb3e7dbfdb25eb605fcbef3738a67b1f8a5c3d00fc5e9511be","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    S='cdhs'\n    h=x['hand']; dead={c[0].upper()+c[1].lower() for c in x['dead']}\n    r1,r2=h[0],h[1]; suf=h[2:]\n    n=0\n    for i,s1 in enumerate(S):\n        for j,s2 in enumerate(S):\n            if r1==r2 and j<=i: continue\n            if suf=='s' and s1!=s2: continue\n            if suf=='o' and s1==s2: continue\n            if r1+s1 in dead and r2+s2 in dead: continue\n            n+=1\n    return n\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('pair one blocker', {'dead': ['Qh'], 'hand': 'QQ'}, 3),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('suited blocked king', {'dead': ['Kd'], 'hand': 'AKs'}, 3),\n  ('offsuit blocked king', {'dead': ['Kd'], 'hand': 'AKo'}, 9),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('unrelated dead', {'dead': ['2c', '7d'], 'hand': 'AKs'}, 4),\n  ('offsuit no blockers', {'dead': [], 'hand': 'T9o'}, 12)],\n [('pair one blocker', {'dead': ['Qh'], 'hand': 'QQ'}, 3),\n  ('suited blocked king', {'dead': ['Kd'], 'hand': 'AKs'}, 3),\n  ('offsuit blocked king', {'dead': ['Kd'], 'hand': 'AKo'}, 9),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('offsuit no blockers', {'dead': [], 'hand': 'T9o'}, 12)],\n [('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('offsuit blocked king', {'dead': ['Kd'], 'hand': 'AKo'}, 9),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('blocked first rank only', {'dead': ['Qs', 'Qh'], 'hand': 'KQs'}, 2)],\n [('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('unrelated dead', {'dead': ['2c', '7d'], 'hand': 'AKs'}, 4),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('blocked first rank only', {'dead': ['Qs', 'Qh'], 'hand': 'KQs'}, 2)],\n [('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('pair one blocker', {'dead': ['Qh'], 'hand': 'QQ'}, 3),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('unrelated dead', {'dead': ['2c', '7d'], 'hand': 'AKs'}, 4),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('offsuit no blockers', {'dead': [], 'hand': 'T9o'}, 12)]]\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":"eeab4279dfc67e2fa62163a83e2f762b09461bbc066ef714f12ddd1f379d0f49","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    S='cdhs'\n    h=x['hand']; dead={c[0].upper()+c[1].lower() for c in x['dead']}\n    r1,r2=h[0],h[1]; suf=h[2:]\n    n=0\n    for i,s1 in enumerate(S):\n        for j,s2 in enumerate(S):\n            if r1==r2 and j<=i: continue\n            if suf=='s' and s1!=s2: continue\n            if suf=='o' and s1==s2: continue\n            if r1+s1 in dead: continue\n            n+=1\n    return n\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('pair one blocker', {'dead': ['Qh'], 'hand': 'QQ'}, 3),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('suited blocked king', {'dead': ['Kd'], 'hand': 'AKs'}, 3),\n  ('offsuit blocked king', {'dead': ['Kd'], 'hand': 'AKo'}, 9),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('unrelated dead', {'dead': ['2c', '7d'], 'hand': 'AKs'}, 4),\n  ('offsuit no blockers', {'dead': [], 'hand': 'T9o'}, 12)],\n [('pair one blocker', {'dead': ['Qh'], 'hand': 'QQ'}, 3),\n  ('suited blocked king', {'dead': ['Kd'], 'hand': 'AKs'}, 3),\n  ('offsuit blocked king', {'dead': ['Kd'], 'hand': 'AKo'}, 9),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('offsuit no blockers', {'dead': [], 'hand': 'T9o'}, 12)],\n [('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('offsuit blocked king', {'dead': ['Kd'], 'hand': 'AKo'}, 9),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('blocked first rank only', {'dead': ['Qs', 'Qh'], 'hand': 'KQs'}, 2)],\n [('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('any ace king two blockers', {'dead': ['As', 'Kc'], 'hand': 'AK'}, 9),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('unrelated dead', {'dead': ['2c', '7d'], 'hand': 'AKs'}, 4),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('blocked first rank only', {'dead': ['Qs', 'Qh'], 'hand': 'KQs'}, 2)],\n [('pair no blockers', {'dead': [], 'hand': 'QQ'}, 6),\n  ('pair one blocker', {'dead': ['Qh'], 'hand': 'QQ'}, 3),\n  ('suited no blockers', {'dead': [], 'hand': 'AKs'}, 4),\n  ('lower-case dead', {'dead': ['ah', 'kS'], 'hand': 'AKo'}, 7),\n  ('upper-case suit dead', {'dead': ['JH'], 'hand': 'JTs'}, 3),\n  ('unrelated dead', {'dead': ['2c', '7d'], 'hand': 'AKs'}, 4),\n  ('pair two blockers', {'dead': ['9c', '9s'], 'hand': '99'}, 1),\n  ('offsuit no blockers', {'dead': [], 'hand': 'T9o'}, 12)]]\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-blocker-combo-enumeration-blocker-test-on-both-cards","generated_at":"2026-09-29T14:50:09.550902+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Blocker math decides how many value combos an opponent can still hold.","root_cause":"Only the first card of each combo is tested against the dead cards.","sha256":"70ff46b043740b3ed012d1f4737f9159c8225cdaa0805707766c4639cda5a144","title":"Blockers on the second rank are ignored · 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":39.863,"exit_code":1,"observations":[{"actual":6,"check":"pair no blockers","expected":6,"passed":true},{"actual":6,"check":"pair one blocker","expected":3,"passed":false},{"actual":4,"check":"suited no blockers","expected":4,"passed":true},{"actual":4,"check":"suited blocked king","expected":3,"passed":false},{"actual":12,"check":"offsuit blocked king","expected":9,"passed":false},{"actual":15,"check":"any ace king two blockers","expected":9,"passed":false},{"actual":4,"check":"unrelated dead","expected":4,"passed":true},{"actual":12,"check":"offsuit no blockers","expected":12,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"pair no blockers\", \"actual\": 6, \"expected\": 6, \"passed\": true}, {\"check\": \"pair one blocker\", \"actual\": 6, \"expected\": 3, \"passed\": false}, {\"check\": \"suited no blockers\", \"actual\": 4, \"expected\": 4, \"passed\": true}, {\"check\": \"suited blocked king\", \"actual\": 4, \"expected\": 3, \"passed\": false}, {\"check\": \"offsuit blocked king\", \"actual\": 12, \"expected\": 9, \"passed\": false}, {\"check\": \"any ace king two blockers\", \"actual\": 15, \"expected\": 9, \"passed\": false}, {\"check\": \"unrelated dead\", \"actual\": 4, \"expected\": 4, \"passed\": true}, {\"check\": \"offsuit no blockers\", \"actual\": 12, \"expected\": 12, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":36.746,"exit_code":1,"observations":[{"actual":6,"check":"pair no blockers","expected":6,"passed":true},{"actual":5,"check":"pair one blocker","expected":3,"passed":false},{"actual":4,"check":"suited no blockers","expected":4,"passed":true},{"actual":4,"check":"suited blocked king","expected":3,"passed":false},{"actual":12,"check":"offsuit blocked king","expected":9,"passed":false},{"actual":12,"check":"any ace king two blockers","expected":9,"passed":false},{"actual":4,"check":"unrelated dead","expected":4,"passed":true},{"actual":12,"check":"offsuit no blockers","expected":12,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"pair no blockers\", \"actual\": 6, \"expected\": 6, \"passed\": true}, {\"check\": \"pair one blocker\", \"actual\": 5, \"expected\": 3, \"passed\": false}, {\"check\": \"suited no blockers\", \"actual\": 4, \"expected\": 4, \"passed\": true}, {\"check\": \"suited blocked king\", \"actual\": 4, \"expected\": 3, \"passed\": false}, {\"check\": \"offsuit blocked king\", \"actual\": 12, \"expected\": 9, \"passed\": false}, {\"check\": \"any ace king two blockers\", \"actual\": 12, \"expected\": 9, \"passed\": false}, {\"check\": \"unrelated dead\", \"actual\": 4, \"expected\": 4, \"passed\": true}, {\"check\": \"offsuit no blockers\", \"actual\": 12, \"expected\": 12, \"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."}}