{"abstract":"A serving team that keeps winning rallies is shown rotating through positions.","category":"Sports scoring and tiebreakers","checks":10,"contract":"Best-of-five volleyball with rally scoring. rallies is a string of rally winners (A/B). Sets 1-4 are played to 25 and set 5 to 15, always win by two with no cap. The rally winner serves next; when the receiving team wins a rally (side-out) that team rotates once (rotation counter modulo 6). At the start of each set both rotation counters reset to 0 and the first server is first_serve in odd-numbered sets and the other team in even-numbered sets. Return [completed and current set scores as [a, b], match winner or None, rotation counters].","contract_signature":"rallies, first_serve","evaluation_group":"w2-sports-scoring-volleyball-rally-rotation","failed_approach":"Rotating the losing server instead of the side-out winner moves the wrong team.","family":"w2-sports-scoring-volleyball-rally-rotation-side-out-rotation","id":"FA-83911","implementations":{"attempt":{"sha256":"0af140a39f99cc469ca51df973de64db331af6fe669f1d56861c42a508f8ce8d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rallies, first_serve):\n    won = {'A': 0, 'B': 0}\n    sets = []\n    a = b = 0\n    set_index = 0\n    server = first_serve\n    rot = {'A': 0, 'B': 0}\n    for r in rallies:\n        if r == 'A':\n            a += 1\n        else:\n            b += 1\n        if r != server:\n            rot[server] = (rot[server] + 1) % 6\n            server = r\n        target = 15 if set_index == 4 else 25\n        if max(a, b) >= target and abs(a - b) >= 2:\n            w = 'A' if a > b else 'B'\n            won[w] += 1\n            sets.append([a, b])\n            if won[w] == 3:\n                return [sets, w, rot]\n            a = b = 0\n            set_index += 1\n            rot = {'A': 0, 'B': 0}\n            server = first_serve if set_index % 2 == 0 else ('B' if first_serve == 'A' else 'A')\n    return [sets + ([[a, b]] if a or b else []), None, rot]\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 first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('ABBABABAAAABAABABAAAAAABABBBAABBAAAAABBABABABBAAABABAABBABAABBAABABBAAABBBABBBAABABA', 'B'),\n   [[[25, 15], [22, 22]], None, {'A': 2, 'B': 2}]),\n  ('regression: side out rotation',\n   ('AAABBBABAAAAABBAABBBAAAAABAABBAABBAA', 'B'),\n   [[[22, 14]], None, {'A': 2, 'B': 1}]),\n  ('variant scenario 1',\n   ('BBABBBABBBBBBABAABAABAABBBAAABAAAAABBABAAABABAAABABAA', 'B'),\n   [[[25, 23], [3, 2]], None, {'A': 2, 'B': 2}]),\n  ('variant scenario 2',\n   ('BABBBBABBAABBABBBAABBAAABBABAAABAAABAAAABABBBBBABAAABABAAAAABAAAABBAAABABAAABBBBBAABABBAABBBBBBAA',\n    'A'),\n   [[[22, 25], [25, 16], [3, 6]], None, {'A': 1, 'B': 1}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('BABBAABAAAABAABABBAAAA', 'A'),\n   [[[14, 8]], None, {'A': 0, 'B': 0}]),\n  ('regression: side out rotation',\n   ('BAABABAABBAAAABABBBBAA', 'B'),\n   [[[12, 10]], None, {'A': 0, 'B': 5}]),\n  ('variant scenario 1',\n   ('ABABBBAABABAABABBABBBAABAAABAAABABBBBBBBBAAABABABAAABAABAAAABBAAAAABBAABAAAAAABBBAA', 'B'),\n   [[[22, 25], [25, 11]], None, {'A': 0, 'B': 0}]),\n  ('variant scenario 2',\n   ('ABAABABAAABAABAAABBABBBAABAAABABBAAAAABBAABABABBBAAABABABBAAAABBAAAABAABBAABAABAABABABBABAAAABAA',\n    'A'),\n   [[[25, 16], [25, 17], [8, 5]], None, {'A': 4, 'B': 4}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('BAAAABABABAABAABAAAAABAABBBAABBAAAAABBAAABAAAABAABAABABBABAAAABAABABAAABABBBAAABBBBBABBBAABAAABBAAAAABBBAAAAAAAAAABABBAAAAA',\n    'A'),\n   [[[25, 14], [25, 14], [25, 17]], 'A', {'A': 1, 'B': 1}]),\n  ('regression: side out rotation',\n   ('BBAAAAAABABAAABAABAAABABBBBBBAB', 'A'),\n   [[[17, 14]], None, {'A': 1, 'B': 2}]),\n  ('variant scenario 1',\n   ('BBBAAAABBAABBABBABBBAABAAABABAAAAAAABBBABAAABAAAABABAABAAAAAAABBABBBBABABAAAAABBAABABAAAABBBAABAABABBAABAABAAAABAAAAAAAABBAAAAAAAAABABAAAABBABABAAAABBA',\n    'A'),\n   [[[25, 19], [25, 15], [25, 11]], 'A', {'A': 2, 'B': 2}]),\n  ('variant scenario 2',\n   ('AAABBABBBAAABABAAAABAAAAAABBBAAABABBABAAAABBBBAABABAABAABAABBAAAABBABBABBBABAABBAABABAAAAAAAAABBABABAA',\n    'A'),\n   [[[25, 15], [25, 22], [11, 4]], None, {'A': 3, 'B': 3}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('AAAAAAAABAAABAAABAABAAAAAABABBABAABABBBBAAAAAAAAABABBBABBBBBABAABBBBBBBBBAAABAABAABAAAAAAAAABBAABAAAABABBBAAABABABAAAAAAABABABAAAABAAAAAABAAB',\n    'B'),\n   [[[25, 8], [19, 25], [25, 11], [21, 7]], None, {'A': 0, 'B': 1}]),\n  ('variant scenario 1',\n   ('AAABBABAABAABABBAAAAAAABBBAABAAAAB', 'B'),\n   [[[22, 12]], None, {'A': 2, 'B': 2}]),\n  ('variant scenario 2',\n   ('BABABABAAABAAAAABAAABAAAAABABBBAABBBAAB', 'B'),\n   [[[24, 15]], None, {'A': 4, 'B': 4}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('AAAABAABABAAABAABAAABAABAAABAAABAAAABAAAABAAABAABAAAAAAAABABAAABBAAAAAAAABABAAAABABAABBAA',\n    'B'),\n   [[[25, 9], [25, 8], [16, 6]], None, {'A': 0, 'B': 5}]),\n  ('variant scenario 1',\n   ('ABBBABAAAAABABAAAABBABAAABABBAAAAABBBAABBAABAAAABBBABBAABABABAAAAABABABBABBABAABAAABAABAAABAAABABAAAAAAABAAAAABAAAABABABABAAABABAAAAAABABAA',\n    'A'),\n   [[[25, 17], [25, 18], [25, 7]], 'A', {'A': 1, 'B': 1}]),\n  ('variant scenario 2',\n   ('AABAAAAABBABABAABAAAABAAABABAAAAABBBBAAABAABBAAABBAAABABAABBABAAAAAAAABAAAAABBBAAABBAAAAAABAAAAAABABAABBAAABBAAAAAAAABAABBBAABABBAABABBAAABBABABAABBAABAAABAAABAABAABBAAABBAABAAABAAAAABBAAAAAABAABAAAAABAABBBAAAAABAABAABA',\n    'B'),\n   [[[25, 13], [25, 11], [25, 12]], 'A', {'A': 2, 'B': 1}])]]\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":"be3991104566b06016e35fdbdc8c1688540b901f6d0bc6d5a348e8efa4b82138","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rallies, first_serve):\n    won = {'A': 0, 'B': 0}\n    sets = []\n    a = b = 0\n    set_index = 0\n    server = first_serve\n    rot = {'A': 0, 'B': 0}\n    for r in rallies:\n        if r == 'A':\n            a += 1\n        else:\n            b += 1\n        rot[r] = (rot[r] + 1) % 6\n        server = r\n        target = 15 if set_index == 4 else 25\n        if max(a, b) >= target and abs(a - b) >= 2:\n            w = 'A' if a > b else 'B'\n            won[w] += 1\n            sets.append([a, b])\n            if won[w] == 3:\n                return [sets, w, rot]\n            a = b = 0\n            set_index += 1\n            rot = {'A': 0, 'B': 0}\n            server = first_serve if set_index % 2 == 0 else ('B' if first_serve == 'A' else 'A')\n    return [sets + ([[a, b]] if a or b else []), None, rot]\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 first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('ABBABABAAAABAABABAAAAAABABBBAABBAAAAABBABABABBAAABABAABBABAABBAABABBAAABBBABBBAABABA', 'B'),\n   [[[25, 15], [22, 22]], None, {'A': 2, 'B': 2}]),\n  ('regression: side out rotation',\n   ('AAABBBABAAAAABBAABBBAAAAABAABBAABBAA', 'B'),\n   [[[22, 14]], None, {'A': 2, 'B': 1}]),\n  ('variant scenario 1',\n   ('BBABBBABBBBBBABAABAABAABBBAAABAAAAABBABAAABABAAABABAA', 'B'),\n   [[[25, 23], [3, 2]], None, {'A': 2, 'B': 2}]),\n  ('variant scenario 2',\n   ('BABBBBABBAABBABBBAABBAAABBABAAABAAABAAAABABBBBBABAAABABAAAAABAAAABBAAABABAAABBBBBAABABBAABBBBBBAA',\n    'A'),\n   [[[22, 25], [25, 16], [3, 6]], None, {'A': 1, 'B': 1}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('BABBAABAAAABAABABBAAAA', 'A'),\n   [[[14, 8]], None, {'A': 0, 'B': 0}]),\n  ('regression: side out rotation',\n   ('BAABABAABBAAAABABBBBAA', 'B'),\n   [[[12, 10]], None, {'A': 0, 'B': 5}]),\n  ('variant scenario 1',\n   ('ABABBBAABABAABABBABBBAABAAABAAABABBBBBBBBAAABABABAAABAABAAAABBAAAAABBAABAAAAAABBBAA', 'B'),\n   [[[22, 25], [25, 11]], None, {'A': 0, 'B': 0}]),\n  ('variant scenario 2',\n   ('ABAABABAAABAABAAABBABBBAABAAABABBAAAAABBAABABABBBAAABABABBAAAABBAAAABAABBAABAABAABABABBABAAAABAA',\n    'A'),\n   [[[25, 16], [25, 17], [8, 5]], None, {'A': 4, 'B': 4}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('BAAAABABABAABAABAAAAABAABBBAABBAAAAABBAAABAAAABAABAABABBABAAAABAABABAAABABBBAAABBBBBABBBAABAAABBAAAAABBBAAAAAAAAAABABBAAAAA',\n    'A'),\n   [[[25, 14], [25, 14], [25, 17]], 'A', {'A': 1, 'B': 1}]),\n  ('regression: side out rotation',\n   ('BBAAAAAABABAAABAABAAABABBBBBBAB', 'A'),\n   [[[17, 14]], None, {'A': 1, 'B': 2}]),\n  ('variant scenario 1',\n   ('BBBAAAABBAABBABBABBBAABAAABABAAAAAAABBBABAAABAAAABABAABAAAAAAABBABBBBABABAAAAABBAABABAAAABBBAABAABABBAABAABAAAABAAAAAAAABBAAAAAAAAABABAAAABBABABAAAABBA',\n    'A'),\n   [[[25, 19], [25, 15], [25, 11]], 'A', {'A': 2, 'B': 2}]),\n  ('variant scenario 2',\n   ('AAABBABBBAAABABAAAABAAAAAABBBAAABABBABAAAABBBBAABABAABAABAABBAAAABBABBABBBABAABBAABABAAAAAAAAABBABABAA',\n    'A'),\n   [[[25, 15], [25, 22], [11, 4]], None, {'A': 3, 'B': 3}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('AAAAAAAABAAABAAABAABAAAAAABABBABAABABBBBAAAAAAAAABABBBABBBBBABAABBBBBBBBBAAABAABAABAAAAAAAAABBAABAAAABABBBAAABABABAAAAAAABABABAAAABAAAAAABAAB',\n    'B'),\n   [[[25, 8], [19, 25], [25, 11], [21, 7]], None, {'A': 0, 'B': 1}]),\n  ('variant scenario 1',\n   ('AAABBABAABAABABBAAAAAAABBBAABAAAAB', 'B'),\n   [[[22, 12]], None, {'A': 2, 'B': 2}]),\n  ('variant scenario 2',\n   ('BABABABAAABAAAAABAAABAAAAABABBBAABBBAAB', 'B'),\n   [[[24, 15]], None, {'A': 4, 'B': 4}])],\n [('control first rally held by server', ('A', 'A'), [[[1, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary side-out rotates receiver', ('B', 'A'), [[[0, 1]], None, {'A': 0, 'B': 1}]),\n  ('control clean set', ('AAAAAAAAAAAAAAAAAAAAAAAAA', 'A'), [[[25, 0]], None, {'A': 0, 'B': 0}]),\n  ('boundary second set served by other team',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAA', 'A'),\n   [[[25, 0], [1, 0]], None, {'A': 1, 'B': 0}]),\n  ('boundary deuce in set',\n   ('ABABABABABABABABABABABABABABABABABABABABABABABABAA', 'A'),\n   [[[26, 24]], None, {'A': 0, 'B': 0}]),\n  ('control straight-sets match',\n   ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'B'),\n   [[[25, 0], [25, 0], [25, 0]], 'A', {'A': 1, 'B': 0}]),\n  ('regression: side out rotation',\n   ('AAAABAABABAAABAABAAABAABAAABAAABAAAABAAAABAAABAABAAAAAAAABABAAABBAAAAAAAABABAAAABABAABBAA',\n    'B'),\n   [[[25, 9], [25, 8], [16, 6]], None, {'A': 0, 'B': 5}]),\n  ('variant scenario 1',\n   ('ABBBABAAAAABABAAAABBABAAABABBAAAAABBBAABBAABAAAABBBABBAABABABAAAAABABABBABBABAABAAABAABAAABAAABABAAAAAAABAAAAABAAAABABABABAAABABAAAAAABABAA',\n    'A'),\n   [[[25, 17], [25, 18], [25, 7]], 'A', {'A': 1, 'B': 1}]),\n  ('variant scenario 2',\n   ('AABAAAAABBABABAABAAAABAAABABAAAAABBBBAAABAABBAAABBAAABABAABBABAAAAAAAABAAAAABBBAAABBAAAAAABAAAAAABABAABBAAABBAAAAAAAABAABBBAABABBAABABBAAABBABABAABBAABAAABAAABAABAABBAAABBAABAAABAAAAABBAAAAAABAABAAAAABAABBBAAAAABAABAABA',\n    'B'),\n   [[[25, 13], [25, 11], [25, 12]], 'A', {'A': 2, 'B': 1}])]]\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-volleyball-rally-rotation-side-out-rotation","generated_at":"2026-09-29T14:50:25.905626+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Scoresheet apps track rotations to flag out-of-rotation faults and must reset them each set.","root_cause":"The rotation counter is advanced for every rally winner regardless of who served.","sha256":"b5dd666f34f3c0d6248cd7d07838aecbfe200771652ddbb21127594e280b0d5a","title":"Rotation advanced on every point instead of on side-outs · 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":41.166,"exit_code":1,"observations":[{"actual":[[[1,0]],null,{"A":0,"B":0}],"check":"control first rally held by server","expected":[[[1,0]],null,{"A":0,"B":0}],"passed":true},{"actual":[[[0,1]],null,{"A":1,"B":0}],"check":"boundary side-out rotates receiver","expected":[[[0,1]],null,{"A":0,"B":1}],"passed":false},{"actual":[[[25,0]],null,{"A":0,"B":0}],"check":"control clean set","expected":[[[25,0]],null,{"A":0,"B":0}],"passed":true},{"actual":[[[25,0],[1,0]],null,{"A":0,"B":1}],"check":"boundary second set served by other team","expected":[[[25,0],[1,0]],null,{"A":1,"B":0}],"passed":false},{"actual":[[[26,24]],null,{"A":0,"B":0}],"check":"boundary deuce in set","expected":[[[26,24]],null,{"A":0,"B":0}],"passed":true},{"actual":[[[25,0],[25,0],[25,0]],"A",{"A":0,"B":1}],"check":"control straight-sets match","expected":[[[25,0],[25,0],[25,0]],"A",{"A":1,"B":0}],"passed":false},{"actual":[[[25,15],[22,22]],null,{"A":2,"B":2}],"check":"regression: side out rotation","expected":[[[25,15],[22,22]],null,{"A":2,"B":2}],"passed":true},{"actual":[[[22,14]],null,{"A":1,"B":2}],"check":"regression: side out rotation","expected":[[[22,14]],null,{"A":2,"B":1}],"passed":false},{"actual":[[[25,23],[3,2]],null,{"A":2,"B":2}],"check":"variant scenario 1","expected":[[[25,23],[3,2]],null,{"A":2,"B":2}],"passed":true},{"actual":[[[22,25],[25,16],[3,6]],null,{"A":1,"B":1}],"check":"variant scenario 2","expected":[[[22,25],[25,16],[3,6]],null,{"A":1,"B":1}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control first rally held by server\", \"actual\": [[[1, 0]], null, {\"A\": 0, \"B\": 0}], \"expected\": [[[1, 0]], null, {\"A\": 0, \"B\": 0}], \"passed\": true}, {\"check\": \"boundary side-out rotates receiver\", \"actual\": [[[0, 1]], null, {\"A\": 1, \"B\": 0}], \"expected\": [[[0, 1]], null, {\"A\": 0, \"B\": 1}], \"passed\": false}, {\"check\": \"control clean set\", \"actual\": [[[25, 0]], null, {\"A\": 0, \"B\": 0}], \"expected\": [[[25, 0]], null, {\"A\": 0, \"B\": 0}], \"passed\": true}, {\"check\": \"boundary second set served by other team\", \"actual\": [[[25, 0], [1, 0]], null, {\"A\": 0, \"B\": 1}], \"expected\": [[[25, 0], [1, 0]], null, {\"A\": 1, \"B\": 0}], \"passed\": false}, {\"check\": \"boundary deuce in set\", \"actual\": [[[26, 24]], null, {\"A\": 0, \"B\": 0}], \"expected\": [[[26, 24]], null, {\"A\": 0, \"B\": 0}], \"passed\": true}, {\"check\": \"control straight-sets match\", \"actual\": [[[25, 0], [25, 0], [25, 0]], \"A\", {\"A\": 0, \"B\": 1}], \"expected\": [[[25, 0], [25, 0], [25, 0]], \"A\", {\"A\": 1, \"B\": 0}], \"passed\": false}, {\"check\": \"regression: side out rotation\", \"actual\": [[[25, 15], [22, 22]], null, {\"A\": 2, \"B\": 2}], \"expected\": [[[25, 15], [22, 22]], null, {\"A\": 2, \"B\": 2}], \"passed\": true}, {\"check\": \"regression: side out rotation\", \"actual\": [[[22, 14]], null, {\"A\": 1, \"B\": 2}], \"expected\": [[[22, 14]], null, {\"A\": 2, \"B\": 1}], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[[25, 23], [3, 2]], null, {\"A\": 2, \"B\": 2}], \"expected\": [[[25, 23], [3, 2]], null, {\"A\": 2, \"B\": 2}], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[[22, 25], [25, 16], [3, 6]], null, {\"A\": 1, \"B\": 1}], \"expected\": [[[22, 25], [25, 16], [3, 6]], null, {\"A\": 1, \"B\": 1}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.64,"exit_code":1,"observations":[{"actual":[[[1,0]],null,{"A":1,"B":0}],"check":"control first rally held by server","expected":[[[1,0]],null,{"A":0,"B":0}],"passed":false},{"actual":[[[0,1]],null,{"A":0,"B":1}],"check":"boundary side-out rotates receiver","expected":[[[0,1]],null,{"A":0,"B":1}],"passed":true},{"actual":[[[25,0]],null,{"A":0,"B":0}],"check":"control clean set","expected":[[[25,0]],null,{"A":0,"B":0}],"passed":true},{"actual":[[[25,0],[1,0]],null,{"A":1,"B":0}],"check":"boundary second set served by other team","expected":[[[25,0],[1,0]],null,{"A":1,"B":0}],"passed":true},{"actual":[[[26,24]],null,{"A":0,"B":0}],"check":"boundary deuce in set","expected":[[[26,24]],null,{"A":0,"B":0}],"passed":true},{"actual":[[[25,0],[25,0],[25,0]],"A",{"A":1,"B":0}],"check":"control straight-sets match","expected":[[[25,0],[25,0],[25,0]],"A",{"A":1,"B":0}],"passed":true},{"actual":[[[25,15],[22,22]],null,{"A":4,"B":4}],"check":"regression: side out rotation","expected":[[[25,15],[22,22]],null,{"A":2,"B":2}],"passed":false},{"actual":[[[22,14]],null,{"A":4,"B":2}],"check":"regression: side out rotation","expected":[[[22,14]],null,{"A":2,"B":1}],"passed":false},{"actual":[[[25,23],[3,2]],null,{"A":3,"B":2}],"check":"variant scenario 1","expected":[[[25,23],[3,2]],null,{"A":2,"B":2}],"passed":false},{"actual":[[[22,25],[25,16],[3,6]],null,{"A":3,"B":0}],"check":"variant scenario 2","expected":[[[22,25],[25,16],[3,6]],null,{"A":1,"B":1}],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control first rally held by server\", \"actual\": [[[1, 0]], null, {\"A\": 1, \"B\": 0}], \"expected\": [[[1, 0]], null, {\"A\": 0, \"B\": 0}], \"passed\": false}, {\"check\": \"boundary side-out rotates receiver\", \"actual\": [[[0, 1]], null, {\"A\": 0, \"B\": 1}], \"expected\": [[[0, 1]], null, {\"A\": 0, \"B\": 1}], \"passed\": true}, {\"check\": \"control clean set\", \"actual\": [[[25, 0]], null, {\"A\": 0, \"B\": 0}], \"expected\": [[[25, 0]], null, {\"A\": 0, \"B\": 0}], \"passed\": true}, {\"check\": \"boundary second set served by other team\", \"actual\": [[[25, 0], [1, 0]], null, {\"A\": 1, \"B\": 0}], \"expected\": [[[25, 0], [1, 0]], null, {\"A\": 1, \"B\": 0}], \"passed\": true}, {\"check\": \"boundary deuce in set\", \"actual\": [[[26, 24]], null, {\"A\": 0, \"B\": 0}], \"expected\": [[[26, 24]], null, {\"A\": 0, \"B\": 0}], \"passed\": true}, {\"check\": \"control straight-sets match\", \"actual\": [[[25, 0], [25, 0], [25, 0]], \"A\", {\"A\": 1, \"B\": 0}], \"expected\": [[[25, 0], [25, 0], [25, 0]], \"A\", {\"A\": 1, \"B\": 0}], \"passed\": true}, {\"check\": \"regression: side out rotation\", \"actual\": [[[25, 15], [22, 22]], null, {\"A\": 4, \"B\": 4}], \"expected\": [[[25, 15], [22, 22]], null, {\"A\": 2, \"B\": 2}], \"passed\": false}, {\"check\": \"regression: side out rotation\", \"actual\": [[[22, 14]], null, {\"A\": 4, \"B\": 2}], \"expected\": [[[22, 14]], null, {\"A\": 2, \"B\": 1}], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[[25, 23], [3, 2]], null, {\"A\": 3, \"B\": 2}], \"expected\": [[[25, 23], [3, 2]], null, {\"A\": 2, \"B\": 2}], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [[[22, 25], [25, 16], [3, 6]], null, {\"A\": 3, \"B\": 0}], \"expected\": [[[22, 25], [25, 16], [3, 6]], null, {\"A\": 1, \"B\": 1}], \"passed\": false}], \"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."}}