{"abstract":"After a declared suit, eights of other suits are refused.","category":"Card game rule engines","checks":8,"contract":"Input [card, top_card, declared_suit_or_None]. Eights are always playable. When the top card is an 8 with a declared suit, only that suit (or an 8) may follow. Otherwise match suit or rank. Return a bool.","evaluation_group":"w2-card-game-rule-engines-crazy-eights","failed_approach":"Removing the wild rule refuses eights whenever suit and rank differ.","family":"w2-card-game-rule-engines-crazy-eights-wild-eight-priority","id":"FA-83506","implementations":{"attempt":{"sha256":"a072657877b51d2984645f42a1be921acde14a504020b99722c44b4de49c2612","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    card, top, declared = x\n    if top[0] == '8' and declared:\n        return card[1] == declared\n    return card[1] == top[1] or card[0] == top[0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[['8C', '8D', 'S'], True], [['7H', '8C', 'C'], False], [['8C', '8S', 'S'], True], [['JD', '8S', None], False], [['8S', '8H', 'S'], True], [['TS', '3H', None], False], [['8S', '8D', 'H'], True], [['8S', '3H', None], True]], [[['8C', 'JD', None], True], [['6H', 'TC', None], False], [['KC', '6H', None], False], [['2D', '3C', None], False], [['8C', '4D', None], True], [['7C', 'QC', None], True], [['8C', '8C', 'H'], True], [['8D', '8H', 'H'], True]], [[['JH', '7C', None], False], [['JS', '8C', 'C'], False], [['3C', '8H', None], False], [['6C', '8S', 'C'], True], [['AH', 'TC', None], False], [['KH', '8H', 'H'], True], [['8H', '8C', 'C'], True], [['8S', '8H', 'H'], True]], [[['TC', '8C', 'D'], False], [['2H', '2C', None], True], [['6S', '4D', None], False], [['2S', '8C', 'S'], True], [['AC', '8D', 'S'], False], [['8C', '8C', 'H'], True], [['8S', '8H', 'H'], True], [['8H', '6C', None], True]], [[['AC', '4D', None], False], [['JD', '8C', 'H'], False], [['8C', 'AC', None], True], [['8H', '8D', 'C'], True], [['8H', 'TC', None], True], [['TC', '9D', None], False], [['8S', '4C', None], True], [['8S', '8S', 'D'], True]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"playable case %d\" % i, solve(args), 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":"154465d09f35bb803f275593e231c5bdc0b3add17ab3a6febed10baee1509780","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    card, top, declared = x\n    if top[0] == '8' and declared:\n        return card[1] == declared\n    if card[0] == '8':\n        return True\n    return card[1] == top[1] or card[0] == top[0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[['8C', '8D', 'S'], True], [['7H', '8C', 'C'], False], [['8C', '8S', 'S'], True], [['JD', '8S', None], False], [['8S', '8H', 'S'], True], [['TS', '3H', None], False], [['8S', '8D', 'H'], True], [['8S', '3H', None], True]], [[['8C', 'JD', None], True], [['6H', 'TC', None], False], [['KC', '6H', None], False], [['2D', '3C', None], False], [['8C', '4D', None], True], [['7C', 'QC', None], True], [['8C', '8C', 'H'], True], [['8D', '8H', 'H'], True]], [[['JH', '7C', None], False], [['JS', '8C', 'C'], False], [['3C', '8H', None], False], [['6C', '8S', 'C'], True], [['AH', 'TC', None], False], [['KH', '8H', 'H'], True], [['8H', '8C', 'C'], True], [['8S', '8H', 'H'], True]], [[['TC', '8C', 'D'], False], [['2H', '2C', None], True], [['6S', '4D', None], False], [['2S', '8C', 'S'], True], [['AC', '8D', 'S'], False], [['8C', '8C', 'H'], True], [['8S', '8H', 'H'], True], [['8H', '6C', None], True]], [[['AC', '4D', None], False], [['JD', '8C', 'H'], False], [['8C', 'AC', None], True], [['8H', '8D', 'C'], True], [['8H', 'TC', None], True], [['TC', '9D', None], False], [['8S', '4C', None], True], [['8S', '8S', 'D'], True]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"playable case %d\" % i, solve(args), 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":"a62db6f0b8c19e04797e5a8d271434edb9a36a46042738a937e6e6bed408fd67","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    card, top, declared = x\n    if card[0] == '8':\n        return True\n    if top[0] == '8' and declared:\n        return card[1] == declared\n    return card[1] == top[1] or card[0] == top[0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[['8C', '8D', 'S'], True], [['7H', '8C', 'C'], False], [['8C', '8S', 'S'], True], [['JD', '8S', None], False], [['8S', '8H', 'S'], True], [['TS', '3H', None], False], [['8S', '8D', 'H'], True], [['8S', '3H', None], True]], [[['8C', 'JD', None], True], [['6H', 'TC', None], False], [['KC', '6H', None], False], [['2D', '3C', None], False], [['8C', '4D', None], True], [['7C', 'QC', None], True], [['8C', '8C', 'H'], True], [['8D', '8H', 'H'], True]], [[['JH', '7C', None], False], [['JS', '8C', 'C'], False], [['3C', '8H', None], False], [['6C', '8S', 'C'], True], [['AH', 'TC', None], False], [['KH', '8H', 'H'], True], [['8H', '8C', 'C'], True], [['8S', '8H', 'H'], True]], [[['TC', '8C', 'D'], False], [['2H', '2C', None], True], [['6S', '4D', None], False], [['2S', '8C', 'S'], True], [['AC', '8D', 'S'], False], [['8C', '8C', 'H'], True], [['8S', '8H', 'H'], True], [['8H', '6C', None], True]], [[['AC', '4D', None], False], [['JD', '8C', 'H'], False], [['8C', 'AC', None], True], [['8H', '8D', 'C'], True], [['8H', 'TC', None], True], [['TC', '9D', None], False], [['8S', '4C', None], True], [['8S', '8S', 'D'], True]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"playable case %d\" % i, solve(args), 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 bounded toy rule contract stated explicitly in the contract field; cards are two-character codes (rank, suit). Not a complete implementation of any published rulebook or casino table rules. 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-card-game-rule-engines-crazy-eights-wild-eight-priority","generated_at":"2026-09-29T14:50:22.142059+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Card-game engines, scoring apps and online tables apply this rule automatically on every hand.","repair":"Eights are playable before any other test.","root_cause":"The declared-suit test runs before the wild-eight rule.","sha256":"7808b1f196a9aef30291ab3f1f9eec1646030297fd612d02ab87cd877d14a9da","title":"An eight cannot be played on a declared suit · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.422,"exit_code":1,"observations":[{"actual":false,"check":"playable case 0","expected":true,"passed":false},{"actual":false,"check":"playable case 1","expected":false,"passed":true},{"actual":false,"check":"playable case 2","expected":true,"passed":false},{"actual":false,"check":"playable case 3","expected":false,"passed":true},{"actual":true,"check":"playable case 4","expected":true,"passed":true},{"actual":false,"check":"playable case 5","expected":false,"passed":true},{"actual":false,"check":"playable case 6","expected":true,"passed":false},{"actual":false,"check":"playable case 7","expected":true,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"playable case 0\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"playable case 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 2\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"playable case 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"playable case 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 6\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"playable case 7\", \"actual\": false, \"expected\": true, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.813,"exit_code":1,"observations":[{"actual":false,"check":"playable case 0","expected":true,"passed":false},{"actual":false,"check":"playable case 1","expected":false,"passed":true},{"actual":false,"check":"playable case 2","expected":true,"passed":false},{"actual":false,"check":"playable case 3","expected":false,"passed":true},{"actual":true,"check":"playable case 4","expected":true,"passed":true},{"actual":false,"check":"playable case 5","expected":false,"passed":true},{"actual":false,"check":"playable case 6","expected":true,"passed":false},{"actual":true,"check":"playable case 7","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"playable case 0\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"playable case 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 2\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"playable case 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"playable case 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 6\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"playable case 7\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.8,"exit_code":0,"observations":[{"actual":true,"check":"playable case 0","expected":true,"passed":true},{"actual":false,"check":"playable case 1","expected":false,"passed":true},{"actual":true,"check":"playable case 2","expected":true,"passed":true},{"actual":false,"check":"playable case 3","expected":false,"passed":true},{"actual":true,"check":"playable case 4","expected":true,"passed":true},{"actual":false,"check":"playable case 5","expected":false,"passed":true},{"actual":true,"check":"playable case 6","expected":true,"passed":true},{"actual":true,"check":"playable case 7","expected":true,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"playable case 0\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"playable case 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"playable case 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"playable case 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"playable case 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"playable case 7\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}