{"abstract":"Plays of a different size are compared by rank alone.","category":"Card game rule engines","checks":8,"contract":"Input [current_combination, play]. Ranks 3 low to 2 high; suits D<C<H<S. A play is 1-3 cards of one rank. On an empty table any valid play is \"ok\"; otherwise it must have the same size and its highest card must outrank the current highest card (rank, then suit). Empty play is \"pass\". Return \"ok\", \"invalid\" or \"pass\".","evaluation_group":"w2-card-game-rule-engines-big-two","failed_approach":"Allowing larger combinations over smaller ones still breaks the same-size rule.","family":"w2-card-game-rule-engines-big-two-combination-size","id":"FA-83746","implementations":{"attempt":{"sha256":"e8591d0cd1651cc00f83e0c0abb35a54556b0ba072d309b283fe110bf4ac88dd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    cur, play = x\n    order = '3456789TJQKA2'\n    suits = 'DCHS'\n    def key(c):\n        return (order.index(c[0]), suits.index(c[1]))\n    if not play:\n        return 'pass'\n    if len(set(c[0] for c in play)) != 1 or len(play) > 3:\n        return 'invalid'\n    if not cur:\n        return 'ok'\n    if len(play) < len(cur):\n        return 'invalid'\n    if max(key(c) for c in play) > max(key(c) for c in cur):\n        return 'ok'\n    return 'invalid'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[['7S'], ['9S', '9C']], 'invalid'], [[['KC', 'KD'], ['KH', 'KS']], 'ok'], [[['8S', '8C', '8H'], ['KD', 'KC', 'KS']], 'ok'], [[['6S'], ['6H']], 'invalid'], [[['9C'], ['6S']], 'invalid'], [[[], ['3H', '3S', '3C']], 'ok'], [[['7D'], ['7S']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']], [[[['8D', '8H'], ['8S', '8D', '8H', '8C']], 'invalid'], [[['AS'], ['AH', 'AC', 'AD']], 'invalid'], [[[], ['3C']], 'ok'], [[['QD'], ['QH']], 'ok'], [[['JD', 'JS'], ['TD', 'TS', 'TC', 'TH']], 'invalid'], [[['9S', '9H'], ['8S', '8C']], 'invalid'], [[['9C'], ['TD', 'TS']], 'invalid'], [[['9C'], ['TD', 'TS']], 'invalid']], [[[['7S'], ['9S', '9C']], 'invalid'], [[['KD'], ['AH']], 'ok'], [[[], ['KS', 'KD']], 'ok'], [[['JC'], ['7C']], 'invalid'], [[['5S'], ['5H']], 'invalid'], [[['2S'], ['5D']], 'invalid'], [[['3C', '3H'], ['3S', '3D']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']], [[[['JH', 'JC'], ['JC', 'JS']], 'ok'], [[['7C'], ['2D']], 'ok'], [[['2H'], ['2H']], 'invalid'], [[['TH', 'TD'], ['8D', '2S']], 'invalid'], [[['5H', '5D'], ['JS', 'JC']], 'ok'], [[[], ['QC', 'QH']], 'ok'], [[['QH'], ['QS', 'QH', 'QC']], 'invalid'], [[['QH'], ['QS', 'QH', 'QC']], 'invalid']], [[[['7S'], ['9S', '9C']], 'invalid'], [[['3D', '3H', '3C'], ['3S', '3D', '3H', 'AC']], 'invalid'], [[['5S'], ['3S']], 'invalid'], [[['9C'], ['9C']], 'invalid'], [[['7C', '7S', '7D'], ['3D', '3S', '3C']], 'invalid'], [[['3H', '3C'], ['3D', '3C', '3S', '3H']], 'invalid'], [[[], ['5H']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"play 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":"c02f4351c34204fa44ed1f183fcec6ebcbcfad0b5c2a2be1eecc6c1e74cd0fd2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    cur, play = x\n    order = '3456789TJQKA2'\n    suits = 'DCHS'\n    def key(c):\n        return (order.index(c[0]), suits.index(c[1]))\n    if not play:\n        return 'pass'\n    if len(set(c[0] for c in play)) != 1 or len(play) > 3:\n        return 'invalid'\n    if not cur:\n        return 'ok'\n    if max(key(c) for c in play) > max(key(c) for c in cur):\n        return 'ok'\n    return 'invalid'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[['7S'], ['9S', '9C']], 'invalid'], [[['KC', 'KD'], ['KH', 'KS']], 'ok'], [[['8S', '8C', '8H'], ['KD', 'KC', 'KS']], 'ok'], [[['6S'], ['6H']], 'invalid'], [[['9C'], ['6S']], 'invalid'], [[[], ['3H', '3S', '3C']], 'ok'], [[['7D'], ['7S']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']], [[[['8D', '8H'], ['8S', '8D', '8H', '8C']], 'invalid'], [[['AS'], ['AH', 'AC', 'AD']], 'invalid'], [[[], ['3C']], 'ok'], [[['QD'], ['QH']], 'ok'], [[['JD', 'JS'], ['TD', 'TS', 'TC', 'TH']], 'invalid'], [[['9S', '9H'], ['8S', '8C']], 'invalid'], [[['9C'], ['TD', 'TS']], 'invalid'], [[['9C'], ['TD', 'TS']], 'invalid']], [[[['7S'], ['9S', '9C']], 'invalid'], [[['KD'], ['AH']], 'ok'], [[[], ['KS', 'KD']], 'ok'], [[['JC'], ['7C']], 'invalid'], [[['5S'], ['5H']], 'invalid'], [[['2S'], ['5D']], 'invalid'], [[['3C', '3H'], ['3S', '3D']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']], [[[['JH', 'JC'], ['JC', 'JS']], 'ok'], [[['7C'], ['2D']], 'ok'], [[['2H'], ['2H']], 'invalid'], [[['TH', 'TD'], ['8D', '2S']], 'invalid'], [[['5H', '5D'], ['JS', 'JC']], 'ok'], [[[], ['QC', 'QH']], 'ok'], [[['QH'], ['QS', 'QH', 'QC']], 'invalid'], [[['QH'], ['QS', 'QH', 'QC']], 'invalid']], [[[['7S'], ['9S', '9C']], 'invalid'], [[['3D', '3H', '3C'], ['3S', '3D', '3H', 'AC']], 'invalid'], [[['5S'], ['3S']], 'invalid'], [[['9C'], ['9C']], 'invalid'], [[['7C', '7S', '7D'], ['3D', '3S', '3C']], 'invalid'], [[['3H', '3C'], ['3D', '3C', '3S', '3H']], 'invalid'], [[[], ['5H']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"play 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":"91ea2439311766145b9346b2b141ecf2f12bd35a8a7021aa173cb40321c336cb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    cur, play = x\n    order = '3456789TJQKA2'\n    suits = 'DCHS'\n    def key(c):\n        return (order.index(c[0]), suits.index(c[1]))\n    if not play:\n        return 'pass'\n    if len(set(c[0] for c in play)) != 1 or len(play) > 3:\n        return 'invalid'\n    if not cur:\n        return 'ok'\n    if len(play) != len(cur):\n        return 'invalid'\n    if max(key(c) for c in play) > max(key(c) for c in cur):\n        return 'ok'\n    return 'invalid'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[['7S'], ['9S', '9C']], 'invalid'], [[['KC', 'KD'], ['KH', 'KS']], 'ok'], [[['8S', '8C', '8H'], ['KD', 'KC', 'KS']], 'ok'], [[['6S'], ['6H']], 'invalid'], [[['9C'], ['6S']], 'invalid'], [[[], ['3H', '3S', '3C']], 'ok'], [[['7D'], ['7S']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']], [[[['8D', '8H'], ['8S', '8D', '8H', '8C']], 'invalid'], [[['AS'], ['AH', 'AC', 'AD']], 'invalid'], [[[], ['3C']], 'ok'], [[['QD'], ['QH']], 'ok'], [[['JD', 'JS'], ['TD', 'TS', 'TC', 'TH']], 'invalid'], [[['9S', '9H'], ['8S', '8C']], 'invalid'], [[['9C'], ['TD', 'TS']], 'invalid'], [[['9C'], ['TD', 'TS']], 'invalid']], [[[['7S'], ['9S', '9C']], 'invalid'], [[['KD'], ['AH']], 'ok'], [[[], ['KS', 'KD']], 'ok'], [[['JC'], ['7C']], 'invalid'], [[['5S'], ['5H']], 'invalid'], [[['2S'], ['5D']], 'invalid'], [[['3C', '3H'], ['3S', '3D']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']], [[[['JH', 'JC'], ['JC', 'JS']], 'ok'], [[['7C'], ['2D']], 'ok'], [[['2H'], ['2H']], 'invalid'], [[['TH', 'TD'], ['8D', '2S']], 'invalid'], [[['5H', '5D'], ['JS', 'JC']], 'ok'], [[[], ['QC', 'QH']], 'ok'], [[['QH'], ['QS', 'QH', 'QC']], 'invalid'], [[['QH'], ['QS', 'QH', 'QC']], 'invalid']], [[[['7S'], ['9S', '9C']], 'invalid'], [[['3D', '3H', '3C'], ['3S', '3D', '3H', 'AC']], 'invalid'], [[['5S'], ['3S']], 'invalid'], [[['9C'], ['9C']], 'invalid'], [[['7C', '7S', '7D'], ['3D', '3S', '3C']], 'invalid'], [[['3H', '3C'], ['3D', '3C', '3S', '3H']], 'invalid'], [[[], ['5H']], 'ok'], [[['6S'], ['2S', '2H', '2C']], 'invalid']]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"play 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-big-two-combination-size","generated_at":"2026-09-29T14:50:24.578959+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":"A response must have the same number of cards.","root_cause":"The same-size requirement is missing.","sha256":"6fe74317ca32be1013b94514d50e5dc64e9e7687e7e2a83dee091ec79d7c2c34","title":"A single can beat a pair · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.029,"exit_code":1,"observations":[{"actual":"ok","check":"play case 0","expected":"invalid","passed":false},{"actual":"ok","check":"play case 1","expected":"ok","passed":true},{"actual":"ok","check":"play case 2","expected":"ok","passed":true},{"actual":"invalid","check":"play case 3","expected":"invalid","passed":true},{"actual":"invalid","check":"play case 4","expected":"invalid","passed":true},{"actual":"ok","check":"play case 5","expected":"ok","passed":true},{"actual":"ok","check":"play case 6","expected":"ok","passed":true},{"actual":"ok","check":"play case 7","expected":"invalid","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"play case 0\", \"actual\": \"ok\", \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"play case 1\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 2\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 3\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 4\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 5\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 6\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 7\", \"actual\": \"ok\", \"expected\": \"invalid\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.46,"exit_code":1,"observations":[{"actual":"ok","check":"play case 0","expected":"invalid","passed":false},{"actual":"ok","check":"play case 1","expected":"ok","passed":true},{"actual":"ok","check":"play case 2","expected":"ok","passed":true},{"actual":"invalid","check":"play case 3","expected":"invalid","passed":true},{"actual":"invalid","check":"play case 4","expected":"invalid","passed":true},{"actual":"ok","check":"play case 5","expected":"ok","passed":true},{"actual":"ok","check":"play case 6","expected":"ok","passed":true},{"actual":"ok","check":"play case 7","expected":"invalid","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"play case 0\", \"actual\": \"ok\", \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"play case 1\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 2\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 3\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 4\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 5\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 6\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 7\", \"actual\": \"ok\", \"expected\": \"invalid\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.832,"exit_code":0,"observations":[{"actual":"invalid","check":"play case 0","expected":"invalid","passed":true},{"actual":"ok","check":"play case 1","expected":"ok","passed":true},{"actual":"ok","check":"play case 2","expected":"ok","passed":true},{"actual":"invalid","check":"play case 3","expected":"invalid","passed":true},{"actual":"invalid","check":"play case 4","expected":"invalid","passed":true},{"actual":"ok","check":"play case 5","expected":"ok","passed":true},{"actual":"ok","check":"play case 6","expected":"ok","passed":true},{"actual":"invalid","check":"play case 7","expected":"invalid","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"play case 0\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 1\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 2\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 3\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 4\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"play case 5\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 6\", \"actual\": \"ok\", \"expected\": \"ok\", \"passed\": true}, {\"check\": \"play case 7\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}