{"abstract":"A 40-15 score is rendered as an advantage instead of the numeric score.","category":"Sports scoring and tiebreakers","checks":10,"contract":"points is a string of rally winners, each character A or B. A game ends at the first point where a player has at least 4 points and leads by at least 2; characters after that point are ignored. Return \"game A\"/\"game B\" when finished; otherwise \"deuce\" when both have at least 3 points and are level, \"advantage A\"/\"advantage B\" when both have at least 3 points and differ by one, else \"S-R\" using the labels 0, 15, 30, 40 in A-B order. A character other than A or B that is reached before the game ends returns \"invalid point <c>\".","evaluation_group":"w2-sports-scoring-tennis-game-display","failed_approach":"Lowering the second player threshold to two points still renders 40-30 as advantage.","family":"w2-sports-scoring-tennis-game-display-deuce-band","id":"FA-83851","implementations":{"attempt":{"sha256":"77102e084a072b487d2970024094aa91f4df35149623ae15a0e8adfdaa162193","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(points):\n    names = ['0', '15', '30', '40']\n    a = b = 0\n    for p in points:\n        if p == 'A':\n            a += 1\n        elif p == 'B':\n            b += 1\n        else:\n            return 'invalid point ' + p\n        if (a >= 4 or b >= 4) and abs(a - b) >= 2:\n            return 'game A' if a > b else 'game B'\n    if a >= 3 and b >= 2:\n        if a == b:\n            return 'deuce'\n        return 'advantage A' if a > b else 'advantage B'\n    return names[a] + '-' + names[b]\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 love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BBB',), '0-40'),\n  ('regression: deuce band', ('AAABB',), '40-30'),\n  ('variant scenario 1', ('BABBBAB',), 'game B'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('AAA',), '40-0'),\n  ('regression: deuce band', ('AAABB',), '40-30'),\n  ('variant scenario 1', ('A',), '15-0'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BAAA',), '40-15'),\n  ('regression: deuce band', ('ABABA',), '40-30'),\n  ('variant scenario 1', ('AAABBAB',), 'game A'),\n  ('variant scenario 2', ('AAABBBABA',), 'advantage A')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BBABA',), '30-40'),\n  ('regression: deuce band', ('BAABA',), '40-30'),\n  ('variant scenario 1', ('ABAAx',), 'invalid point x'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('AABA',), '40-15'),\n  ('regression: deuce band', ('AABAB',), '40-30'),\n  ('variant scenario 1', ('BAAABBAA',), 'game A'),\n  ('variant scenario 2', ('AAAABBBAABBAA',), 'game 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":"eb0f0da9d69186d6ba1ba174740d6dc4881ff5caaea60cca38307d92afbdec2e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(points):\n    names = ['0', '15', '30', '40']\n    a = b = 0\n    for p in points:\n        if p == 'A':\n            a += 1\n        elif p == 'B':\n            b += 1\n        else:\n            return 'invalid point ' + p\n        if (a >= 4 or b >= 4) and abs(a - b) >= 2:\n            return 'game A' if a > b else 'game B'\n    if a >= 3 or b >= 3:\n        if a == b:\n            return 'deuce'\n        return 'advantage A' if a > b else 'advantage B'\n    return names[a] + '-' + names[b]\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 love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BBB',), '0-40'),\n  ('regression: deuce band', ('AAABB',), '40-30'),\n  ('variant scenario 1', ('BABBBAB',), 'game B'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('AAA',), '40-0'),\n  ('regression: deuce band', ('AAABB',), '40-30'),\n  ('variant scenario 1', ('A',), '15-0'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BAAA',), '40-15'),\n  ('regression: deuce band', ('ABABA',), '40-30'),\n  ('variant scenario 1', ('AAABBAB',), 'game A'),\n  ('variant scenario 2', ('AAABBBABA',), 'advantage A')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BBABA',), '30-40'),\n  ('regression: deuce band', ('BAABA',), '40-30'),\n  ('variant scenario 1', ('ABAAx',), 'invalid point x'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('AABA',), '40-15'),\n  ('regression: deuce band', ('AABAB',), '40-30'),\n  ('variant scenario 1', ('BAAABBAA',), 'game A'),\n  ('variant scenario 2', ('AAAABBBAABBAA',), 'game 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"},"fixed":{"sha256":"ce9c56956e554003d6478180f46d37906dc317b3cd47fb068134a340eb616d66","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(points):\n    names = ['0', '15', '30', '40']\n    a = b = 0\n    for p in points:\n        if p == 'A':\n            a += 1\n        elif p == 'B':\n            b += 1\n        else:\n            return 'invalid point ' + p\n        if (a >= 4 or b >= 4) and abs(a - b) >= 2:\n            return 'game A' if a > b else 'game B'\n    if a >= 3 and b >= 3:\n        if a == b:\n            return 'deuce'\n        return 'advantage A' if a > b else 'advantage B'\n    return names[a] + '-' + names[b]\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 love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BBB',), '0-40'),\n  ('regression: deuce band', ('AAABB',), '40-30'),\n  ('variant scenario 1', ('BABBBAB',), 'game B'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('AAA',), '40-0'),\n  ('regression: deuce band', ('AAABB',), '40-30'),\n  ('variant scenario 1', ('A',), '15-0'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BAAA',), '40-15'),\n  ('regression: deuce band', ('ABABA',), '40-30'),\n  ('variant scenario 1', ('AAABBAB',), 'game A'),\n  ('variant scenario 2', ('AAABBBABA',), 'advantage A')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('BBABA',), '30-40'),\n  ('regression: deuce band', ('BAABA',), '40-30'),\n  ('variant scenario 1', ('ABAAx',), 'invalid point x'),\n  ('variant scenario 2', ('',), '0-0')],\n [('control love-thirty', ('BB',), '0-30'),\n  ('boundary first deuce', ('AABBAB',), 'deuce'),\n  ('boundary advantage after deuce', ('AAABBBB',), 'advantage B'),\n  ('control straight game', ('AAAA',), 'game A'),\n  ('boundary win from advantage', ('ABABABAA',), 'game A'),\n  ('control empty log', ('',), '0-0'),\n  ('regression: deuce band', ('AABA',), '40-15'),\n  ('regression: deuce band', ('AABAB',), '40-30'),\n  ('variant scenario 1', ('BAAABBAA',), 'game A'),\n  ('variant scenario 2', ('AAAABBBAABBAA',), 'game 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-tennis-game-display-deuce-band","generated_at":"2026-09-29T14:50:25.308057+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Live scoreboards and umpire tablets derive the displayed tennis game score from a raw rally log.","repair":"Enter the deuce band only when both players have at least three points.","root_cause":"The deuce/advantage band is entered when either player has three points instead of both.","sha256":"6890a0048b93a234b0b8c0bb51b1dcfc6f51c60fd4ac747f2c6935d8a2dc16cf","title":"Advantage shown before both players reach forty · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.957,"exit_code":1,"observations":[{"actual":"0-30","check":"control love-thirty","expected":"0-30","passed":true},{"actual":"deuce","check":"boundary first deuce","expected":"deuce","passed":true},{"actual":"advantage B","check":"boundary advantage after deuce","expected":"advantage B","passed":true},{"actual":"game A","check":"control straight game","expected":"game A","passed":true},{"actual":"game A","check":"boundary win from advantage","expected":"game A","passed":true},{"actual":"0-0","check":"control empty log","expected":"0-0","passed":true},{"actual":"0-40","check":"regression: deuce band","expected":"0-40","passed":true},{"actual":"advantage A","check":"regression: deuce band","expected":"40-30","passed":false},{"actual":"game B","check":"variant scenario 1","expected":"game B","passed":true},{"actual":"0-0","check":"variant scenario 2","expected":"0-0","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control love-thirty\", \"actual\": \"0-30\", \"expected\": \"0-30\", \"passed\": true}, {\"check\": \"boundary first deuce\", \"actual\": \"deuce\", \"expected\": \"deuce\", \"passed\": true}, {\"check\": \"boundary advantage after deuce\", \"actual\": \"advantage B\", \"expected\": \"advantage B\", \"passed\": true}, {\"check\": \"control straight game\", \"actual\": \"game A\", \"expected\": \"game A\", \"passed\": true}, {\"check\": \"boundary win from advantage\", \"actual\": \"game A\", \"expected\": \"game A\", \"passed\": true}, {\"check\": \"control empty log\", \"actual\": \"0-0\", \"expected\": \"0-0\", \"passed\": true}, {\"check\": \"regression: deuce band\", \"actual\": \"0-40\", \"expected\": \"0-40\", \"passed\": true}, {\"check\": \"regression: deuce band\", \"actual\": \"advantage A\", \"expected\": \"40-30\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": \"game B\", \"expected\": \"game B\", \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": \"0-0\", \"expected\": \"0-0\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.469,"exit_code":1,"observations":[{"actual":"0-30","check":"control love-thirty","expected":"0-30","passed":true},{"actual":"deuce","check":"boundary first deuce","expected":"deuce","passed":true},{"actual":"advantage B","check":"boundary advantage after deuce","expected":"advantage B","passed":true},{"actual":"game A","check":"control straight game","expected":"game A","passed":true},{"actual":"game A","check":"boundary win from advantage","expected":"game A","passed":true},{"actual":"0-0","check":"control empty log","expected":"0-0","passed":true},{"actual":"advantage B","check":"regression: deuce band","expected":"0-40","passed":false},{"actual":"advantage A","check":"regression: deuce band","expected":"40-30","passed":false},{"actual":"game B","check":"variant scenario 1","expected":"game B","passed":true},{"actual":"0-0","check":"variant scenario 2","expected":"0-0","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control love-thirty\", \"actual\": \"0-30\", \"expected\": \"0-30\", \"passed\": true}, {\"check\": \"boundary first deuce\", \"actual\": \"deuce\", \"expected\": \"deuce\", \"passed\": true}, {\"check\": \"boundary advantage after deuce\", \"actual\": \"advantage B\", \"expected\": \"advantage B\", \"passed\": true}, {\"check\": \"control straight game\", \"actual\": \"game A\", \"expected\": \"game A\", \"passed\": true}, {\"check\": \"boundary win from advantage\", \"actual\": \"game A\", \"expected\": \"game A\", \"passed\": true}, {\"check\": \"control empty log\", \"actual\": \"0-0\", \"expected\": \"0-0\", \"passed\": true}, {\"check\": \"regression: deuce band\", \"actual\": \"advantage B\", \"expected\": \"0-40\", \"passed\": false}, {\"check\": \"regression: deuce band\", \"actual\": \"advantage A\", \"expected\": \"40-30\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": \"game B\", \"expected\": \"game B\", \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": \"0-0\", \"expected\": \"0-0\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.647,"exit_code":0,"observations":[{"actual":"0-30","check":"control love-thirty","expected":"0-30","passed":true},{"actual":"deuce","check":"boundary first deuce","expected":"deuce","passed":true},{"actual":"advantage B","check":"boundary advantage after deuce","expected":"advantage B","passed":true},{"actual":"game A","check":"control straight game","expected":"game A","passed":true},{"actual":"game A","check":"boundary win from advantage","expected":"game A","passed":true},{"actual":"0-0","check":"control empty log","expected":"0-0","passed":true},{"actual":"0-40","check":"regression: deuce band","expected":"0-40","passed":true},{"actual":"40-30","check":"regression: deuce band","expected":"40-30","passed":true},{"actual":"game B","check":"variant scenario 1","expected":"game B","passed":true},{"actual":"0-0","check":"variant scenario 2","expected":"0-0","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control love-thirty\", \"actual\": \"0-30\", \"expected\": \"0-30\", \"passed\": true}, {\"check\": \"boundary first deuce\", \"actual\": \"deuce\", \"expected\": \"deuce\", \"passed\": true}, {\"check\": \"boundary advantage after deuce\", \"actual\": \"advantage B\", \"expected\": \"advantage B\", \"passed\": true}, {\"check\": \"control straight game\", \"actual\": \"game A\", \"expected\": \"game A\", \"passed\": true}, {\"check\": \"boundary win from advantage\", \"actual\": \"game A\", \"expected\": \"game A\", \"passed\": true}, {\"check\": \"control empty log\", \"actual\": \"0-0\", \"expected\": \"0-0\", \"passed\": true}, {\"check\": \"regression: deuce band\", \"actual\": \"0-40\", \"expected\": \"0-40\", \"passed\": true}, {\"check\": \"regression: deuce band\", \"actual\": \"40-30\", \"expected\": \"40-30\", \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": \"game B\", \"expected\": \"game B\", \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": \"0-0\", \"expected\": \"0-0\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}