{"abstract":"The rotation counters at the start of set two still reflect set one.","category":"Sports scoring and tiebreakers","checks":9,"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":"Resetting only the set winner leaves the loser in its old rotation.","family":"w2-sports-scoring-volleyball-rally-rotation-rotation-reset-per-set","id":"FA-83916","implementations":{"attempt":{"sha256":"8efabb6e630c46cce8c55c086c854dbe226553ac6c2454c3c4a9bd60c08b435a","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[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[w] = 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: rotation reset per set',\n   ('AABAAABABABBBAABABBAAAABABBBBABABBAABABABAAAABABAB', 'A'),\n   [[[25, 20], [2, 3]], None, {'A': 2, 'B': 2}]),\n  ('variant scenario 1',\n   ('ABBAAAABABAAABBAAABBABABBAAABBAABBBA', 'A'),\n   [[[20, 16]], None, {'A': 3, 'B': 3}]),\n  ('variant scenario 2',\n   ('AAABAABAAAABAABAAABBABBAABBBBBAABAABBABBABB', 'B'),\n   [[[23, 20]], None, {'A': 5, 'B': 5}])],\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: rotation reset per set',\n   ('ABAAABAAABABAABAAAAABBBAAAAAABABBAAAABABAABBBBBAABABABAAABAABAAAAABBBAABAAAABAAABBBAB', 'A'),\n   [[[25, 11], [25, 17], [3, 4]], None, {'A': 1, 'B': 2}]),\n  ('variant scenario 1',\n   ('ABAAAAABABBAABABBABAAABAABABABBBABAAAAAAAABAAAAAAABAAABBAABBAAAAA', 'A'),\n   [[[25, 15], [19, 6]], None, {'A': 5, 'B': 4}]),\n  ('variant scenario 2',\n   ('ABABAAAABAABBAABAAAABBABBAABBBABABAABABABABABAABABBAAABBBBBABAAABBBAAABAABBAAAAABAABAAABA',\n    'A'),\n   [[[25, 19], [25, 18], [1, 1]], 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: rotation reset per set',\n   ('ABBABABBBAAAABABBAAAABAABAAAABAABBAAABABABAAAAABBBBBBBABBAAAABAAAABBBAAABBAAAAABBABAABBAABBBABBBBABABBAABAABBAAAABABBABAABAAAAABBBAAAAAABAAAABBBBAABABAAAABAAAAAAABAAABBAABBABA',\n    'B'),\n   [[[25, 16], [25, 19], [25, 23]], 'A', {'A': 0, 'B': 5}]),\n  ('variant scenario 1',\n   ('AAABABAABAAAABBAAAABBAAAAABBABBAABAAABBABABBAAABABBBAAABABABAABBABBABABAABBAAAAABBBBAAABBABABBAABBABABBABAAABAAAABBAABBBA',\n    'A'),\n   [[[25, 12], [26, 24], [17, 17]], None, {'A': 4, 'B': 4}]),\n  ('variant scenario 2',\n   ('AABAABBABBBBAAAAABABBABBBBABABABABABABBAAAAAABAAAABAAAAABBAABABAAAAAAAAABAAABBAAAAAAABABAABBABAABABBAABAAABAAAAAAAAAAABABAABBABBABAAB',\n    'A'),\n   [[[25, 22], [25, 8], [25, 10]], 'A', {'A': 2, 'B': 2}])],\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: rotation reset per set',\n   ('AABAABBAAABAAAAABBABAAAAAAABBABBBAAAAAAAAAABBAAABAABAAAABAABBAAAABAAAABBABAAAAAAAABABBABAAABAAAAAABAAAAAABBBABBAABAAAAAABAAABAAAAAABBAAABAAABBABABABAABBBAAAAAAABABAAAAAAABBAAAABBABAABBBBA',\n    'A'),\n   [[[25, 12], [25, 8], [25, 9]], 'A', {'A': 1, 'B': 1}]),\n  ('variant scenario 1',\n   ('AAABAAAAAAABAAABABBBAABAAABABABBAABAABAAAB', 'A'),\n   [[[25, 12], [3, 2]], None, {'A': 1, 'B': 1}]),\n  ('variant scenario 2',\n   ('ABABAAAABAAAAABAAAAABABABBAABAAABAABAABABAABAABBABABAABBAAABBBAAAAAAAAAB', 'A'),\n   [[[25, 10], [23, 14]], 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: rotation reset per set',\n   ('ABAABBBBAAAAABABBBBAAABABBBAAAAAAAAAAAAAAAAAAAAAABBAABAAAAAAAAABAAABAAABAAABAABAAAABAAABABBAAAAABAAAAAABBAAAABAAAAAAABABAAAABBAAAABABAABABAAABAAABAAABBBAAAABAABAAAAAABAAAAAAABBAAAABAABAAAAAAAAA',\n    'B'),\n   [[[25, 14], [25, 5], [25, 8]], 'A', {'A': 2, 'B': 1}]),\n  ('variant scenario 1',\n   ('AAAAAAAAAABABABBBABABAABAAAAAABBABBAAAABAAABAABAABAAAABAABBAAAABAABAAAAABABAAAAAAABBABAABBABABAABBAAAABABAAAAAABAAAAAAAAABBABBBAAABABA',\n    'B'),\n   [[[25, 12], [25, 9], [25, 13]], 'A', {'A': 5, 'B': 4}]),\n  ('variant scenario 2',\n   ('BBAABAABBAAAAABBABAABAAAAABABABAAAABAAAABAAAAAABAAAAAABBBAABABAAAABAAABBAABAABAAABAAABAAABABAABBABAAABAABAAAAAABBABAABAB',\n    'B'),\n   [[[25, 13], [25, 10], [25, 11]], 'A', {'A': 5, 'B': 4}])]]\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":"4804b1f55ff8e84f3b1971e8a2e2219e523c7222a251da6063eb4d423ceeb4bc","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[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            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: rotation reset per set',\n   ('AABAAABABABBBAABABBAAAABABBBBABABBAABABABAAAABABAB', 'A'),\n   [[[25, 20], [2, 3]], None, {'A': 2, 'B': 2}]),\n  ('variant scenario 1',\n   ('ABBAAAABABAAABBAAABBABABBAAABBAABBBA', 'A'),\n   [[[20, 16]], None, {'A': 3, 'B': 3}]),\n  ('variant scenario 2',\n   ('AAABAABAAAABAABAAABBABBAABBBBBAABAABBABBABB', 'B'),\n   [[[23, 20]], None, {'A': 5, 'B': 5}])],\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: rotation reset per set',\n   ('ABAAABAAABABAABAAAAABBBAAAAAABABBAAAABABAABBBBBAABABABAAABAABAAAAABBBAABAAAABAAABBBAB', 'A'),\n   [[[25, 11], [25, 17], [3, 4]], None, {'A': 1, 'B': 2}]),\n  ('variant scenario 1',\n   ('ABAAAAABABBAABABBABAAABAABABABBBABAAAAAAAABAAAAAAABAAABBAABBAAAAA', 'A'),\n   [[[25, 15], [19, 6]], None, {'A': 5, 'B': 4}]),\n  ('variant scenario 2',\n   ('ABABAAAABAABBAABAAAABBABBAABBBABABAABABABABABAABABBAAABBBBBABAAABBBAAABAABBAAAAABAABAAABA',\n    'A'),\n   [[[25, 19], [25, 18], [1, 1]], 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: rotation reset per set',\n   ('ABBABABBBAAAABABBAAAABAABAAAABAABBAAABABABAAAAABBBBBBBABBAAAABAAAABBBAAABBAAAAABBABAABBAABBBABBBBABABBAABAABBAAAABABBABAABAAAAABBBAAAAAABAAAABBBBAABABAAAABAAAAAAABAAABBAABBABA',\n    'B'),\n   [[[25, 16], [25, 19], [25, 23]], 'A', {'A': 0, 'B': 5}]),\n  ('variant scenario 1',\n   ('AAABABAABAAAABBAAAABBAAAAABBABBAABAAABBABABBAAABABBBAAABABABAABBABBABABAABBAAAAABBBBAAABBABABBAABBABABBABAAABAAAABBAABBBA',\n    'A'),\n   [[[25, 12], [26, 24], [17, 17]], None, {'A': 4, 'B': 4}]),\n  ('variant scenario 2',\n   ('AABAABBABBBBAAAAABABBABBBBABABABABABABBAAAAAABAAAABAAAAABBAABABAAAAAAAAABAAABBAAAAAAABABAABBABAABABBAABAAABAAAAAAAAAAABABAABBABBABAAB',\n    'A'),\n   [[[25, 22], [25, 8], [25, 10]], 'A', {'A': 2, 'B': 2}])],\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: rotation reset per set',\n   ('AABAABBAAABAAAAABBABAAAAAAABBABBBAAAAAAAAAABBAAABAABAAAABAABBAAAABAAAABBABAAAAAAAABABBABAAABAAAAAABAAAAAABBBABBAABAAAAAABAAABAAAAAABBAAABAAABBABABABAABBBAAAAAAABABAAAAAAABBAAAABBABAABBBBA',\n    'A'),\n   [[[25, 12], [25, 8], [25, 9]], 'A', {'A': 1, 'B': 1}]),\n  ('variant scenario 1',\n   ('AAABAAAAAAABAAABABBBAABAAABABABBAABAABAAAB', 'A'),\n   [[[25, 12], [3, 2]], None, {'A': 1, 'B': 1}]),\n  ('variant scenario 2',\n   ('ABABAAAABAAAAABAAAAABABABBAABAAABAABAABABAABAABBABABAABBAAABBBAAAAAAAAAB', 'A'),\n   [[[25, 10], [23, 14]], 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: rotation reset per set',\n   ('ABAABBBBAAAAABABBBBAAABABBBAAAAAAAAAAAAAAAAAAAAAABBAABAAAAAAAAABAAABAAABAAABAABAAAABAAABABBAAAAABAAAAAABBAAAABAAAAAAABABAAAABBAAAABABAABABAAABAAABAAABBBAAAABAABAAAAAABAAAAAAABBAAAABAABAAAAAAAAA',\n    'B'),\n   [[[25, 14], [25, 5], [25, 8]], 'A', {'A': 2, 'B': 1}]),\n  ('variant scenario 1',\n   ('AAAAAAAAAABABABBBABABAABAAAAAABBABBAAAABAAABAABAABAAAABAABBAAAABAABAAAAABABAAAAAAABBABAABBABABAABBAAAABABAAAAAABAAAAAAAAABBABBBAAABABA',\n    'B'),\n   [[[25, 12], [25, 9], [25, 13]], 'A', {'A': 5, 'B': 4}]),\n  ('variant scenario 2',\n   ('BBAABAABBAAAAABBABAABAAAAABABABAAAABAAAABAAAAAABAAAAAABBBAABABAAAABAAABBAABAABAAABAAABAAABABAABBABAAABAABAAAAAABBABAABAB',\n    'B'),\n   [[[25, 13], [25, 10], [25, 11]], 'A', {'A': 5, 'B': 4}])]]\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-rotation-reset-per-set","generated_at":"2026-09-29T14:50:25.949401+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 state is not reset when a set completes.","sha256":"c43b154001d206464277fceb0c384f578bd57b3ca07f5a0f0acb45b14594f4e5","title":"Rotations carried over into the next set · 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":44.162,"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":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,20],[2,3]],null,{"A":2,"B":3}],"check":"regression: rotation reset per set","expected":[[[25,20],[2,3]],null,{"A":2,"B":2}],"passed":false},{"actual":[[[20,16]],null,{"A":3,"B":3}],"check":"variant scenario 1","expected":[[[20,16]],null,{"A":3,"B":3}],"passed":true},{"actual":[[[23,20]],null,{"A":5,"B":5}],"check":"variant scenario 2","expected":[[[23,20]],null,{"A":5,"B":5}],"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\": 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: rotation reset per set\", \"actual\": [[[25, 20], [2, 3]], null, {\"A\": 2, \"B\": 3}], \"expected\": [[[25, 20], [2, 3]], null, {\"A\": 2, \"B\": 2}], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[[20, 16]], null, {\"A\": 3, \"B\": 3}], \"expected\": [[[20, 16]], null, {\"A\": 3, \"B\": 3}], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[[23, 20]], null, {\"A\": 5, \"B\": 5}], \"expected\": [[[23, 20]], null, {\"A\": 5, \"B\": 5}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.671,"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":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":2,"B":0}],"check":"control straight-sets match","expected":[[[25,0],[25,0],[25,0]],"A",{"A":1,"B":0}],"passed":false},{"actual":[[[25,20],[2,3]],null,{"A":3,"B":3}],"check":"regression: rotation reset per set","expected":[[[25,20],[2,3]],null,{"A":2,"B":2}],"passed":false},{"actual":[[[20,16]],null,{"A":3,"B":3}],"check":"variant scenario 1","expected":[[[20,16]],null,{"A":3,"B":3}],"passed":true},{"actual":[[[23,20]],null,{"A":5,"B":5}],"check":"variant scenario 2","expected":[[[23,20]],null,{"A":5,"B":5}],"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\": 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\": 2, \"B\": 0}], \"expected\": [[[25, 0], [25, 0], [25, 0]], \"A\", {\"A\": 1, \"B\": 0}], \"passed\": false}, {\"check\": \"regression: rotation reset per set\", \"actual\": [[[25, 20], [2, 3]], null, {\"A\": 3, \"B\": 3}], \"expected\": [[[25, 20], [2, 3]], null, {\"A\": 2, \"B\": 2}], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[[20, 16]], null, {\"A\": 3, \"B\": 3}], \"expected\": [[[20, 16]], null, {\"A\": 3, \"B\": 3}], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[[23, 20]], null, {\"A\": 5, \"B\": 5}], \"expected\": [[[23, 20]], null, {\"A\": 5, \"B\": 5}], \"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."}}