{"abstract":"A log that contains trailing warm-up points changes the final tiebreak score.","category":"Sports scoring and tiebreakers","checks":10,"contract":"Tiebreak game. points is a string of A/B point winners; target is 7 (standard) or 10 (match tiebreak). The tiebreak ends at the first point where a player has at least target points and a two-point lead; later points are ignored. first_server serves point 0, then serve alternates every two points (point k is served by first_server when ((k + 1) // 2) is even). Return [a, b, winner or None, server of the next point or None when finished, ends_change] where ends_change is true when the tiebreak is unfinished and a positive multiple of 6 points has been played.","contract_signature":"points, first_server, target","evaluation_group":"w2-sports-scoring-tennis-tiebreak-service","failed_approach":"Stopping only when player A has won still counts trailing points after a B victory.","family":"w2-sports-scoring-tennis-tiebreak-service-points-after-completion","id":"FA-83876","implementations":{"attempt":{"sha256":"4a8bc2eaffecafbff2d24a64eb94b72cc653ddd5fba63d8314ee78774bd6a6ad","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(points, first_server, target):\n    def finished(x, y):\n        return max(x, y) >= target and abs(x - y) >= 2\n    a = b = 0\n    for p in points:\n        if p == 'A':\n            a += 1\n        else:\n            b += 1\n        if finished(a, b) and a > b:\n            break\n    played = a + b\n    winner = None\n    if finished(a, b):\n        winner = 'A' if a > b else 'B'\n    other = 'B' if first_server == 'A' else 'A'\n    server = first_server if ((played + 1) // 2) % 2 == 0 else other\n    ends_change = played > 0 and played % 6 == 0 and winner is None\n    return [a, b, winner, None if winner else server, ends_change]\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 point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion', ('AAAABBBBAAABB', 'A', 7), [7, 4, 'A', None, False]),\n  ('regression: points after completion', ('AABBBABBBBBAB', 'B', 7), [3, 7, 'B', None, False]),\n  ('variant scenario 1', ('ABAABABAA', 'A', 7), [6, 3, None, 'B', False]),\n  ('variant scenario 2', ('AAAABBBBAABBB', 'A', 10), [6, 7, None, 'B', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion', ('AAAAAAABBABA', 'A', 7), [7, 0, 'A', None, False]),\n  ('regression: points after completion', ('BBBBABBBBABBBB', 'A', 7), [1, 7, 'B', None, False]),\n  ('variant scenario 1', ('ABABAABBAAAABA', 'A', 10), [9, 5, None, 'B', False]),\n  ('variant scenario 2', ('ABBBAAABAA', 'B', 7), [6, 4, None, 'A', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion', ('ABBAABBBBBAAABAA', 'B', 7), [3, 7, 'B', None, False]),\n  ('variant scenario 1', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('variant scenario 2', ('BAA', 'A', 7), [2, 1, None, 'A', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion',\n   ('AAAABABABAABBBBBAABB', 'A', 7),\n   [7, 3, 'A', None, False]),\n  ('regression: points after completion',\n   ('ABBBBBBAABABBBABBBBBA', 'A', 7),\n   [3, 7, 'B', None, False]),\n  ('variant scenario 1', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('variant scenario 2', ('BABAA', 'B', 10), [3, 2, None, 'A', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion',\n   ('BABABAAABBABABAAABABAA', 'A', 10),\n   [10, 7, 'A', None, False]),\n  ('regression: points after completion',\n   ('BABABBBBABABBBAABBBAABBAA', 'B', 10),\n   [4, 10, 'B', None, False]),\n  ('variant scenario 1', ('AABABAABAABABAABB', 'B', 10), [10, 5, 'A', None, False]),\n  ('variant scenario 2', ('BABAABA', 'A', 7), [4, 3, None, 'A', False])]]\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":"e21608ecd95624a95291f5d0d78122d510a384b344a0467fa6c63c5a392a1642","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(points, first_server, target):\n    def finished(x, y):\n        return max(x, y) >= target and abs(x - y) >= 2\n    a = b = 0\n    for p in points:\n        if p == 'A':\n            a += 1\n        else:\n            b += 1\n    played = a + b\n    winner = None\n    if finished(a, b):\n        winner = 'A' if a > b else 'B'\n    other = 'B' if first_server == 'A' else 'A'\n    server = first_server if ((played + 1) // 2) % 2 == 0 else other\n    ends_change = played > 0 and played % 6 == 0 and winner is None\n    return [a, b, winner, None if winner else server, ends_change]\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 point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion', ('AAAABBBBAAABB', 'A', 7), [7, 4, 'A', None, False]),\n  ('regression: points after completion', ('AABBBABBBBBAB', 'B', 7), [3, 7, 'B', None, False]),\n  ('variant scenario 1', ('ABAABABAA', 'A', 7), [6, 3, None, 'B', False]),\n  ('variant scenario 2', ('AAAABBBBAABBB', 'A', 10), [6, 7, None, 'B', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion', ('AAAAAAABBABA', 'A', 7), [7, 0, 'A', None, False]),\n  ('regression: points after completion', ('BBBBABBBBABBBB', 'A', 7), [1, 7, 'B', None, False]),\n  ('variant scenario 1', ('ABABAABBAAAABA', 'A', 10), [9, 5, None, 'B', False]),\n  ('variant scenario 2', ('ABBBAAABAA', 'B', 7), [6, 4, None, 'A', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion', ('ABBAABBBBBAAABAA', 'B', 7), [3, 7, 'B', None, False]),\n  ('variant scenario 1', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('variant scenario 2', ('BAA', 'A', 7), [2, 1, None, 'A', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion',\n   ('AAAABABABAABBBBBAABB', 'A', 7),\n   [7, 3, 'A', None, False]),\n  ('regression: points after completion',\n   ('ABBBBBBAABABBBABBBBBA', 'A', 7),\n   [3, 7, 'B', None, False]),\n  ('variant scenario 1', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('variant scenario 2', ('BABAA', 'B', 10), [3, 2, None, 'A', False])],\n [('control opening point', ('', 'A', 7), [0, 0, None, 'A', False]),\n  ('boundary second server pair', ('A', 'A', 7), [1, 0, None, 'B', False]),\n  ('boundary third point back to first', ('AB', 'B', 7), [1, 1, None, 'A', False]),\n  ('control seven-five tiebreak', ('AAAAABBBBBAA', 'A', 7), [7, 5, 'A', None, False]),\n  ('boundary change of ends at six', ('ABABAB', 'A', 7), [3, 3, None, 'B', True]),\n  ('control match tiebreak not over at seven', ('AAAAAAA', 'B', 10), [7, 0, None, 'B', False]),\n  ('regression: points after completion',\n   ('BABABAAABBABABAAABABAA', 'A', 10),\n   [10, 7, 'A', None, False]),\n  ('regression: points after completion',\n   ('BABABBBBABABBBAABBBAABBAA', 'B', 10),\n   [4, 10, 'B', None, False]),\n  ('variant scenario 1', ('AABABAABAABABAABB', 'B', 10), [10, 5, 'A', None, False]),\n  ('variant scenario 2', ('BABAABA', 'A', 7), [4, 3, None, 'A', False])]]\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-tiebreak-service-points-after-completion","generated_at":"2026-09-29T14:50:25.729875+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Chair-umpire scoring software must drive the server indicator and change-of-ends prompt during tiebreaks.","root_cause":"The loop keeps consuming rally characters after the completion condition is met.","sha256":"bee14cb391e32cc8a0869b812a81ccc5004f592da2880cc375d8e80ce3d0f263","title":"Points recorded after the tiebreak ended are still counted · 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":43.307,"exit_code":1,"observations":[{"actual":[0,0,null,"A",false],"check":"control opening point","expected":[0,0,null,"A",false],"passed":true},{"actual":[1,0,null,"B",false],"check":"boundary second server pair","expected":[1,0,null,"B",false],"passed":true},{"actual":[1,1,null,"A",false],"check":"boundary third point back to first","expected":[1,1,null,"A",false],"passed":true},{"actual":[7,5,"A",null,false],"check":"control seven-five tiebreak","expected":[7,5,"A",null,false],"passed":true},{"actual":[3,3,null,"B",true],"check":"boundary change of ends at six","expected":[3,3,null,"B",true],"passed":true},{"actual":[7,0,null,"B",false],"check":"control match tiebreak not over at seven","expected":[7,0,null,"B",false],"passed":true},{"actual":[7,4,"A",null,false],"check":"regression: points after completion","expected":[7,4,"A",null,false],"passed":true},{"actual":[4,9,"B",null,false],"check":"regression: points after completion","expected":[3,7,"B",null,false],"passed":false},{"actual":[6,3,null,"B",false],"check":"variant scenario 1","expected":[6,3,null,"B",false],"passed":true},{"actual":[6,7,null,"B",false],"check":"variant scenario 2","expected":[6,7,null,"B",false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control opening point\", \"actual\": [0, 0, null, \"A\", false], \"expected\": [0, 0, null, \"A\", false], \"passed\": true}, {\"check\": \"boundary second server pair\", \"actual\": [1, 0, null, \"B\", false], \"expected\": [1, 0, null, \"B\", false], \"passed\": true}, {\"check\": \"boundary third point back to first\", \"actual\": [1, 1, null, \"A\", false], \"expected\": [1, 1, null, \"A\", false], \"passed\": true}, {\"check\": \"control seven-five tiebreak\", \"actual\": [7, 5, \"A\", null, false], \"expected\": [7, 5, \"A\", null, false], \"passed\": true}, {\"check\": \"boundary change of ends at six\", \"actual\": [3, 3, null, \"B\", true], \"expected\": [3, 3, null, \"B\", true], \"passed\": true}, {\"check\": \"control match tiebreak not over at seven\", \"actual\": [7, 0, null, \"B\", false], \"expected\": [7, 0, null, \"B\", false], \"passed\": true}, {\"check\": \"regression: points after completion\", \"actual\": [7, 4, \"A\", null, false], \"expected\": [7, 4, \"A\", null, false], \"passed\": true}, {\"check\": \"regression: points after completion\", \"actual\": [4, 9, \"B\", null, false], \"expected\": [3, 7, \"B\", null, false], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [6, 3, null, \"B\", false], \"expected\": [6, 3, null, \"B\", false], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [6, 7, null, \"B\", false], \"expected\": [6, 7, null, \"B\", false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.803,"exit_code":1,"observations":[{"actual":[0,0,null,"A",false],"check":"control opening point","expected":[0,0,null,"A",false],"passed":true},{"actual":[1,0,null,"B",false],"check":"boundary second server pair","expected":[1,0,null,"B",false],"passed":true},{"actual":[1,1,null,"A",false],"check":"boundary third point back to first","expected":[1,1,null,"A",false],"passed":true},{"actual":[7,5,"A",null,false],"check":"control seven-five tiebreak","expected":[7,5,"A",null,false],"passed":true},{"actual":[3,3,null,"B",true],"check":"boundary change of ends at six","expected":[3,3,null,"B",true],"passed":true},{"actual":[7,0,null,"B",false],"check":"control match tiebreak not over at seven","expected":[7,0,null,"B",false],"passed":true},{"actual":[7,6,null,"B",false],"check":"regression: points after completion","expected":[7,4,"A",null,false],"passed":false},{"actual":[4,9,"B",null,false],"check":"regression: points after completion","expected":[3,7,"B",null,false],"passed":false},{"actual":[6,3,null,"B",false],"check":"variant scenario 1","expected":[6,3,null,"B",false],"passed":true},{"actual":[6,7,null,"B",false],"check":"variant scenario 2","expected":[6,7,null,"B",false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control opening point\", \"actual\": [0, 0, null, \"A\", false], \"expected\": [0, 0, null, \"A\", false], \"passed\": true}, {\"check\": \"boundary second server pair\", \"actual\": [1, 0, null, \"B\", false], \"expected\": [1, 0, null, \"B\", false], \"passed\": true}, {\"check\": \"boundary third point back to first\", \"actual\": [1, 1, null, \"A\", false], \"expected\": [1, 1, null, \"A\", false], \"passed\": true}, {\"check\": \"control seven-five tiebreak\", \"actual\": [7, 5, \"A\", null, false], \"expected\": [7, 5, \"A\", null, false], \"passed\": true}, {\"check\": \"boundary change of ends at six\", \"actual\": [3, 3, null, \"B\", true], \"expected\": [3, 3, null, \"B\", true], \"passed\": true}, {\"check\": \"control match tiebreak not over at seven\", \"actual\": [7, 0, null, \"B\", false], \"expected\": [7, 0, null, \"B\", false], \"passed\": true}, {\"check\": \"regression: points after completion\", \"actual\": [7, 6, null, \"B\", false], \"expected\": [7, 4, \"A\", null, false], \"passed\": false}, {\"check\": \"regression: points after completion\", \"actual\": [4, 9, \"B\", null, false], \"expected\": [3, 7, \"B\", null, false], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [6, 3, null, \"B\", false], \"expected\": [6, 3, null, \"B\", false], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [6, 7, null, \"B\", false], \"expected\": [6, 7, null, \"B\", false], \"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."}}