{"abstract":"At 10-6 the server changes every point instead of every two points.","category":"Sports scoring and tiebreakers","checks":10,"contract":"One table tennis game to 11 with a two-point lead; later rallies are ignored. Service changes after every two points; once both players have at least 10 points it changes after every point. Return [a, b, winner, None] when finished, else [a, b, None, next server].","contract_signature":"rallies, first_server","evaluation_group":"w2-sports-scoring-table-tennis-service-order","failed_approach":"Using a combined score of 18 points still switches service early at 10-8.","family":"w2-sports-scoring-table-tennis-service-order-expedited-deuce-condition","id":"FA-83946","implementations":{"attempt":{"sha256":"6348ca464c3843056941505cc1cfb0f70c6d97dddf5ca37861531425d8779b99","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rallies, first_server):\n    a = b = 0\n    for r in rallies:\n        if r == 'A':\n            a += 1\n        else:\n            b += 1\n        if max(a, b) >= 11 and abs(a - b) >= 2:\n            return [a, b, r, None]\n    k = a + b\n    other = 'B' if first_server == 'A' else 'A'\n    if a + b >= 18:\n        block = k - 10\n    else:\n        block = k // 2\n    return [a, b, None, first_server if block % 2 == 0 else other]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'B'), [9, 9, None, 'A']),\n  ('regression: expedited deuce condition', ('ABBAAABABAABAABABB', 'A'), [10, 8, None, 'B']),\n  ('variant scenario 1', ('BBBBAABBBBABBBBBBBAA', 'B'), [3, 11, 'B', None]),\n  ('variant scenario 2', ('ABABABABABABABABABABABAB', 'A'), [12, 12, None, 'A'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'B'), [9, 9, None, 'A']),\n  ('regression: expedited deuce condition', ('BAABABAAAAAAA', 'B'), [10, 3, None, 'B']),\n  ('variant scenario 1', ('ABABABABABABABABABABAA', 'A'), [12, 10, 'A', None]),\n  ('variant scenario 2', ('BABABAAA', 'B'), [5, 3, None, 'B'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'B'), [9, 9, None, 'A']),\n  ('regression: expedited deuce condition', ('BBBBAAABBBBBB', 'B'), [3, 10, None, 'B']),\n  ('variant scenario 1', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('variant scenario 2', ('BAB', 'A'), [1, 2, None, 'B'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABBAAABBAAAABBAB', 'A'), [10, 8, None, 'B']),\n  ('variant scenario 1', ('ABBAAAAAAAABBBAAB', 'B'), [11, 5, 'A', None]),\n  ('variant scenario 2', ('ABABABABABABABABABABA', 'A'), [11, 10, None, 'B'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'A'), [9, 9, None, 'B']),\n  ('regression: expedited deuce condition', ('BABAAABBBBAAAABBAA', 'A'), [10, 8, None, 'B']),\n  ('variant scenario 1', ('ABBAAAAABABABBABAABAAABBAABBAAAB', 'A'), [11, 7, 'A', None]),\n  ('variant scenario 2', ('BBBBABAAABABA', 'A'), [6, 7, None, 'A'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"6eac4f741e1852a91b59d98ac54d7b2b9e81e0267f1a94adcd58e9e87d15be38","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rallies, first_server):\n    a = b = 0\n    for r in rallies:\n        if r == 'A':\n            a += 1\n        else:\n            b += 1\n        if max(a, b) >= 11 and abs(a - b) >= 2:\n            return [a, b, r, None]\n    k = a + b\n    other = 'B' if first_server == 'A' else 'A'\n    if a >= 10 or b >= 10:\n        block = k - 10\n    else:\n        block = k // 2\n    return [a, b, None, first_server if block % 2 == 0 else other]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'B'), [9, 9, None, 'A']),\n  ('regression: expedited deuce condition', ('ABBAAABABAABAABABB', 'A'), [10, 8, None, 'B']),\n  ('variant scenario 1', ('BBBBAABBBBABBBBBBBAA', 'B'), [3, 11, 'B', None]),\n  ('variant scenario 2', ('ABABABABABABABABABABABAB', 'A'), [12, 12, None, 'A'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'B'), [9, 9, None, 'A']),\n  ('regression: expedited deuce condition', ('BAABABAAAAAAA', 'B'), [10, 3, None, 'B']),\n  ('variant scenario 1', ('ABABABABABABABABABABAA', 'A'), [12, 10, 'A', None]),\n  ('variant scenario 2', ('BABABAAA', 'B'), [5, 3, None, 'B'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'B'), [9, 9, None, 'A']),\n  ('regression: expedited deuce condition', ('BBBBAAABBBBBB', 'B'), [3, 10, None, 'B']),\n  ('variant scenario 1', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('variant scenario 2', ('BAB', 'A'), [1, 2, None, 'B'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABBAAABBAAAABBAB', 'A'), [10, 8, None, 'B']),\n  ('variant scenario 1', ('ABBAAAAAAAABBBAAB', 'B'), [11, 5, 'A', None]),\n  ('variant scenario 2', ('ABABABABABABABABABABA', 'A'), [11, 10, None, 'B'])],\n [('control opening server', ('', 'A'), [0, 0, None, 'A']),\n  ('boundary second point same server', ('B', 'A'), [0, 1, None, 'A']),\n  ('boundary change after two points', ('BA', 'A'), [1, 1, None, 'B']),\n  ('boundary ten-all', ('ABABABABABABABABABAB', 'A'), [10, 10, None, 'A']),\n  ('boundary eleven-ten alternates each point',\n   ('ABABABABABABABABABABA', 'A'),\n   [11, 10, None, 'B']),\n  ('control eleven-nine', ('AAAAAAAAABBBBBBBBBAA', 'B'), [11, 9, 'A', None]),\n  ('regression: expedited deuce condition', ('ABABABABABABABABAB', 'A'), [9, 9, None, 'B']),\n  ('regression: expedited deuce condition', ('BABAAABBBBAAAABBAA', 'A'), [10, 8, None, 'B']),\n  ('variant scenario 1', ('ABBAAAAABABABBABAABAAABBAABBAAAB', 'A'), [11, 7, 'A', None]),\n  ('variant scenario 2', ('BBBBABAAABABA', 'A'), [6, 7, None, 'A'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any governing body rulebook or operator house 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-sports-scoring-table-tennis-service-order-expedited-deuce-condition","generated_at":"2026-09-29T14:50:26.377729+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Match software must show who serves next, especially after 10-10.","root_cause":"The deuce service rule is entered when either player has 10 points.","sha256":"f18a0ec4ed4a987933d826e66b6b488c55b46bf51f17cda122227d896b47a069","title":"Point-by-point service starts when only one player reaches ten · 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":42.933,"exit_code":1,"observations":[{"actual":[0,0,null,"A"],"check":"control opening server","expected":[0,0,null,"A"],"passed":true},{"actual":[0,1,null,"A"],"check":"boundary second point same server","expected":[0,1,null,"A"],"passed":true},{"actual":[1,1,null,"B"],"check":"boundary change after two points","expected":[1,1,null,"B"],"passed":true},{"actual":[10,10,null,"A"],"check":"boundary ten-all","expected":[10,10,null,"A"],"passed":true},{"actual":[11,10,null,"B"],"check":"boundary eleven-ten alternates each point","expected":[11,10,null,"B"],"passed":true},{"actual":[11,9,"A",null],"check":"control eleven-nine","expected":[11,9,"A",null],"passed":true},{"actual":[9,9,null,"B"],"check":"regression: expedited deuce condition","expected":[9,9,null,"A"],"passed":false},{"actual":[10,8,null,"A"],"check":"regression: expedited deuce condition","expected":[10,8,null,"B"],"passed":false},{"actual":[3,11,"B",null],"check":"variant scenario 1","expected":[3,11,"B",null],"passed":true},{"actual":[12,12,null,"A"],"check":"variant scenario 2","expected":[12,12,null,"A"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control opening server\", \"actual\": [0, 0, null, \"A\"], \"expected\": [0, 0, null, \"A\"], \"passed\": true}, {\"check\": \"boundary second point same server\", \"actual\": [0, 1, null, \"A\"], \"expected\": [0, 1, null, \"A\"], \"passed\": true}, {\"check\": \"boundary change after two points\", \"actual\": [1, 1, null, \"B\"], \"expected\": [1, 1, null, \"B\"], \"passed\": true}, {\"check\": \"boundary ten-all\", \"actual\": [10, 10, null, \"A\"], \"expected\": [10, 10, null, \"A\"], \"passed\": true}, {\"check\": \"boundary eleven-ten alternates each point\", \"actual\": [11, 10, null, \"B\"], \"expected\": [11, 10, null, \"B\"], \"passed\": true}, {\"check\": \"control eleven-nine\", \"actual\": [11, 9, \"A\", null], \"expected\": [11, 9, \"A\", null], \"passed\": true}, {\"check\": \"regression: expedited deuce condition\", \"actual\": [9, 9, null, \"B\"], \"expected\": [9, 9, null, \"A\"], \"passed\": false}, {\"check\": \"regression: expedited deuce condition\", \"actual\": [10, 8, null, \"A\"], \"expected\": [10, 8, null, \"B\"], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [3, 11, \"B\", null], \"expected\": [3, 11, \"B\", null], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [12, 12, null, \"A\"], \"expected\": [12, 12, null, \"A\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.348,"exit_code":1,"observations":[{"actual":[0,0,null,"A"],"check":"control opening server","expected":[0,0,null,"A"],"passed":true},{"actual":[0,1,null,"A"],"check":"boundary second point same server","expected":[0,1,null,"A"],"passed":true},{"actual":[1,1,null,"B"],"check":"boundary change after two points","expected":[1,1,null,"B"],"passed":true},{"actual":[10,10,null,"A"],"check":"boundary ten-all","expected":[10,10,null,"A"],"passed":true},{"actual":[11,10,null,"B"],"check":"boundary eleven-ten alternates each point","expected":[11,10,null,"B"],"passed":true},{"actual":[11,9,"A",null],"check":"control eleven-nine","expected":[11,9,"A",null],"passed":true},{"actual":[9,9,null,"A"],"check":"regression: expedited deuce condition","expected":[9,9,null,"A"],"passed":true},{"actual":[10,8,null,"A"],"check":"regression: expedited deuce condition","expected":[10,8,null,"B"],"passed":false},{"actual":[3,11,"B",null],"check":"variant scenario 1","expected":[3,11,"B",null],"passed":true},{"actual":[12,12,null,"A"],"check":"variant scenario 2","expected":[12,12,null,"A"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control opening server\", \"actual\": [0, 0, null, \"A\"], \"expected\": [0, 0, null, \"A\"], \"passed\": true}, {\"check\": \"boundary second point same server\", \"actual\": [0, 1, null, \"A\"], \"expected\": [0, 1, null, \"A\"], \"passed\": true}, {\"check\": \"boundary change after two points\", \"actual\": [1, 1, null, \"B\"], \"expected\": [1, 1, null, \"B\"], \"passed\": true}, {\"check\": \"boundary ten-all\", \"actual\": [10, 10, null, \"A\"], \"expected\": [10, 10, null, \"A\"], \"passed\": true}, {\"check\": \"boundary eleven-ten alternates each point\", \"actual\": [11, 10, null, \"B\"], \"expected\": [11, 10, null, \"B\"], \"passed\": true}, {\"check\": \"control eleven-nine\", \"actual\": [11, 9, \"A\", null], \"expected\": [11, 9, \"A\", null], \"passed\": true}, {\"check\": \"regression: expedited deuce condition\", \"actual\": [9, 9, null, \"A\"], \"expected\": [9, 9, null, \"A\"], \"passed\": true}, {\"check\": \"regression: expedited deuce condition\", \"actual\": [10, 8, null, \"A\"], \"expected\": [10, 8, null, \"B\"], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [3, 11, \"B\", null], \"expected\": [3, 11, \"B\", null], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [12, 12, null, \"A\"], \"expected\": [12, 12, null, \"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."}}