FA-84336 / Sports scoring and tiebreakers / Open access
Majority draw labelled as a split draw · case 01
A 1-0-2 card is announced as a split draw.
ROOT CAUSE
The two-draw branch is missing from the draw classification.
VERIFIED REPAIR
Two drawn cards make a majority draw.
Unsuccessful approach: Treating any drawn card as a majority draw mislabels 1-1-1 split draws.
Case contract
Ten-point-must decision. cards is three judge cards, each a list of [a_points, b_points] per round; deductions is [a_deducted, b_deducted] applied to every judge's totals. Each judge favours the higher total or scores a draw. Two or more judges for one fighter: "unanimous decision" if the other two agree, "split decision" if one judge favours the opponent, "majority decision" if one judge scores a draw. Otherwise: three draws "unanimous draw", two draws "majority draw", else "split draw". Return [result, winner or None, ["a-b" totals per judge]].
Why this case matters
Fight-result feeds classify decisions from judges' cards after deductions.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(cards, deductions):
verdicts = []
strs = []
for card in cards:
ta = sum(r[0] for r in card) - deductions[0]
tb = sum(r[1] for r in card) - deductions[1]
verdicts.append('A' if ta > tb else ('B' if tb > ta else 'D'))
strs.append('%d-%d' % (ta, tb))
a = verdicts.count('A')
b = verdicts.count('B')
d = verdicts.count('D')
if a >= 2 or b >= 2:
w = 'A' if a >= 2 else 'B'
loser_votes = b if w == 'A' else a
if loser_votes == 1:
kind = 'split decision'
elif d == 1:
kind = 'majority decision'
else:
kind = 'unanimous decision'
return [kind, w, strs]
if d == 3:
kind = 'unanimous draw'
else:
kind = 'split draw'
return [kind, None, strs]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[10, 9],
[8, 10],
[10, 9],
[8, 10],
[10, 9],
[10, 9],
[10, 10],
[8, 10],
[10, 9],
[10, 9],
[8, 10],
[10, 8]],
[[8, 10],
[10, 9],
[9, 10],
[10, 10],
[10, 9],
[9, 10],
[9, 10],
[10, 9],
[10, 9],
[10, 9],
[10, 10],
[9, 10]],
[[10, 8],
[8, 10],
[10, 10],
[10, 8],
[10, 10],
[9, 10],
[9, 10],
[10, 10],
[10, 8],
[10, 8],
[10, 9],
[10, 8]]],
[0, 0]),
['split draw', None, ['112-112', '114-115', '116-109']]),
('regression: draw labels',
([[[9, 10], [9, 10], [10, 10], [9, 10]],
[[10, 10], [10, 9], [8, 10], [10, 10]],
[[10, 9], [9, 10], [8, 10], [10, 9]]],
[0, 1]),
['majority draw', None, ['37-39', '38-38', '37-37']]),
('variant scenario 1',
([[[10, 8], [10, 9], [10, 8], [9, 10]],
[[8, 10], [10, 9], [9, 10], [8, 10]],
[[10, 8], [8, 10], [9, 10], [10, 8]]],
[0, 0]),
['split decision', 'A', ['39-35', '35-39', '37-36']]),
('variant scenario 2',
([[[10, 10], [9, 10], [8, 10], [10, 10]],
[[8, 10], [10, 8], [8, 10], [10, 9]],
[[10, 10], [10, 10], [9, 10], [10, 9]]],
[0, 0]),
['majority decision', 'B', ['37-40', '36-37', '39-39']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[8, 10],
[10, 9],
[10, 8],
[8, 10],
[8, 10],
[10, 9],
[10, 10],
[10, 9],
[10, 10],
[10, 9],
[9, 10],
[10, 10]],
[[10, 9],
[10, 9],
[10, 10],
[10, 8],
[10, 9],
[9, 10],
[10, 10],
[10, 10],
[10, 9],
[10, 8],
[10, 10],
[8, 10]],
[[9, 10],
[10, 9],
[8, 10],
[8, 10],
[10, 9],
[9, 10],
[8, 10],
[9, 10],
[10, 8],
[8, 10],
[9, 10],
[10, 8]]],
[0, 1]),
['split draw', None, ['113-113', '117-111', '108-113']]),
('regression: draw labels',
([[[9, 10], [10, 10], [10, 10], [10, 8]],
[[8, 10], [10, 9], [10, 9], [10, 10]],
[[9, 10], [9, 10], [10, 9], [10, 9]]],
[0, 0]),
['majority draw', None, ['39-38', '38-38', '38-38']]),
('variant scenario 1',
([[[8, 10], [10, 9], [10, 10], [10, 9]],
[[10, 9], [10, 8], [10, 9], [10, 9]],
[[10, 9], [10, 10], [10, 10], [10, 9]]],
[1, 1]),
['majority decision', 'A', ['37-37', '39-34', '39-37']]),
('variant scenario 2',
([[[9, 10],
[8, 10],
[10, 8],
[8, 10],
[10, 8],
[10, 9],
[9, 10],
[8, 10],
[10, 9],
[8, 10],
[9, 10],
[10, 10]],
[[10, 8],
[10, 8],
[10, 9],
[10, 10],
[8, 10],
[8, 10],
[9, 10],
[8, 10],
[10, 9],
[10, 9],
[10, 10],
[10, 10]],
[[9, 10],
[10, 10],
[9, 10],
[10, 9],
[10, 8],
[9, 10],
[10, 8],
[9, 10],
[10, 9],
[10, 10],
[10, 8],
[10, 10]]],
[1, 1]),
['split draw', None, ['108-113', '112-112', '115-111']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[9, 10], [10, 10], [10, 9], [10, 9], [9, 10], [10, 8]],
[[10, 9], [9, 10], [10, 8], [9, 10], [9, 10], [10, 9]],
[[9, 10], [10, 8], [10, 10], [10, 10], [8, 10], [10, 8]]],
[1, 0]),
['majority draw', None, ['57-56', '56-56', '56-56']]),
('regression: draw labels',
([[[10, 8], [10, 8], [8, 10], [10, 9], [9, 10], [10, 9], [8, 10], [8, 10], [8, 10], [10, 10]],
[[8, 10], [10, 8], [10, 10], [8, 10], [10, 10], [10, 9], [9, 10], [9, 10], [10, 8], [10, 10]],
[[10, 10], [10, 9], [10, 9], [10, 8], [8, 10], [10, 8], [10, 10], [10, 10], [10, 8], [9, 10]]],
[0, 1]),
['split draw', None, ['91-93', '94-94', '97-91']]),
('variant scenario 1',
([[[10, 9], [10, 9], [10, 8], [10, 9]],
[[9, 10], [10, 8], [10, 9], [9, 10]],
[[8, 10], [8, 10], [10, 10], [10, 10]]],
[0, 0]),
['split decision', 'A', ['40-35', '38-37', '36-40']]),
('variant scenario 2',
([[[10, 10], [10, 9], [10, 10], [10, 9], [10, 9], [10, 9], [9, 10], [8, 10], [10, 8], [10, 9]],
[[10, 8], [10, 9], [10, 9], [10, 8], [9, 10], [8, 10], [8, 10], [9, 10], [10, 10], [9, 10]],
[[8, 10], [10, 8], [10, 10], [10, 8], [10, 9], [10, 10], [10, 9], [10, 9], [10, 9], [10, 9]]],
[1, 0]),
['split decision', 'A', ['96-93', '92-94', '97-91']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[9, 10], [10, 9], [8, 10], [8, 10], [10, 10], [9, 10]],
[[10, 9], [9, 10], [10, 9], [10, 10], [10, 9], [9, 10]],
[[10, 9], [9, 10], [10, 8], [10, 8], [10, 10], [10, 8]]],
[1, 0]),
['split draw', None, ['53-59', '57-57', '58-53']]),
('regression: draw labels',
([[[10, 9], [8, 10], [10, 9], [10, 8], [10, 10], [10, 10], [10, 8], [8, 10], [10, 10], [9, 10]],
[[10, 10], [10, 8], [10, 9], [10, 9], [10, 9], [9, 10], [8, 10], [10, 9], [10, 10], [10, 8]],
[[10, 9], [9, 10], [10, 9], [10, 9], [10, 9], [10, 9], [10, 10], [8, 10], [9, 10], [10, 10]]],
[1, 0]),
['majority draw', None, ['94-94', '96-92', '95-95']]),
('variant scenario 1',
([[[10, 9], [10, 8], [10, 9], [10, 9]],
[[10, 8], [8, 10], [8, 10], [8, 10]],
[[10, 10], [10, 9], [10, 8], [10, 10]]],
[1, 1]),
['split decision', 'A', ['39-34', '33-37', '39-36']]),
('variant scenario 2',
([[[10, 10], [10, 9], [10, 8], [8, 10], [9, 10], [10, 8]],
[[10, 8], [10, 10], [10, 8], [8, 10], [10, 8], [10, 9]],
[[10, 10], [10, 8], [10, 8], [8, 10], [10, 8], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['57-55', '58-53', '58-53']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[8, 10], [9, 10], [8, 10], [10, 9], [10, 9], [9, 10]],
[[10, 10], [8, 10], [10, 9], [9, 10], [10, 9], [10, 9]],
[[10, 9], [10, 10], [10, 8], [10, 8], [8, 10], [10, 9]]],
[0, 0]),
['split draw', None, ['54-58', '57-57', '58-54']]),
('regression: draw labels',
([[[10, 9]], [[10, 10]], [[10, 10]]], [0, 0]),
['majority draw', None, ['10-9', '10-10', '10-10']]),
('variant scenario 1',
([[[10, 8], [10, 8], [9, 10], [9, 10], [8, 10], [9, 10]],
[[10, 8], [10, 9], [10, 9], [10, 8], [8, 10], [10, 9]],
[[10, 10], [10, 10], [10, 10], [10, 8], [10, 8], [8, 10]]],
[1, 0]),
['split decision', 'A', ['54-56', '57-53', '57-56']]),
('variant scenario 2',
([[[10, 9], [10, 8], [10, 9], [9, 10], [10, 9], [10, 10], [9, 10], [10, 10], [10, 9], [10, 10]],
[[9, 10], [10, 9], [8, 10], [10, 9], [10, 10], [8, 10], [8, 10], [10, 10], [10, 8], [8, 10]],
[[10, 8], [9, 10], [8, 10], [9, 10], [9, 10], [10, 10], [10, 9], [10, 9], [9, 10], [10, 9]]],
[2, 0]),
['split decision', 'B', ['96-94', '89-96', '92-95']])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control unanimous | ['unanimous decision', 'A', ['30-27', '30-27', '30-27']] | ['unanimous decision', 'A', ['30-27', '30-27', '30-27']] | Passed |
| boundary split decision | ['split decision', 'A', ['29-28', '29-28', '28-29']] | ['split decision', 'A', ['29-28', '29-28', '28-29']] | Passed |
| boundary deduction creates draw | ['split draw', None, ['18-18', '18-18', '17-19']] | ['majority draw', None, ['18-18', '18-18', '17-19']] | Failed |
| control split draw | ['split draw', None, ['10-9', '9-10', '10-10']] | ['split draw', None, ['10-9', '9-10', '10-10']] | Passed |
| control unanimous draw | ['unanimous draw', None, ['10-10', '10-10', '10-10']] | ['unanimous draw', None, ['10-10', '10-10', '10-10']] | Passed |
| regression: draw labels | ['split draw', None, ['112-112', '114-115', '116-109']] | ['split draw', None, ['112-112', '114-115', '116-109']] | Passed |
| regression: draw labels | ['split draw', None, ['37-39', '38-38', '37-37']] | ['majority draw', None, ['37-39', '38-38', '37-37']] | Failed |
| variant scenario 1 | ['split decision', 'A', ['39-35', '35-39', '37-36']] | ['split decision', 'A', ['39-35', '35-39', '37-36']] | Passed |
| variant scenario 2 | ['majority decision', 'B', ['37-40', '36-37', '39-39']] | ['majority decision', 'B', ['37-40', '36-37', '39-39']] | Passed |
SHA-256 / 41f1845448e6df5455e957629b4430902e964c53bd0b6b96be98f48c61476d4b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(cards, deductions):
verdicts = []
strs = []
for card in cards:
ta = sum(r[0] for r in card) - deductions[0]
tb = sum(r[1] for r in card) - deductions[1]
verdicts.append('A' if ta > tb else ('B' if tb > ta else 'D'))
strs.append('%d-%d' % (ta, tb))
a = verdicts.count('A')
b = verdicts.count('B')
d = verdicts.count('D')
if a >= 2 or b >= 2:
w = 'A' if a >= 2 else 'B'
loser_votes = b if w == 'A' else a
if loser_votes == 1:
kind = 'split decision'
elif d == 1:
kind = 'majority decision'
else:
kind = 'unanimous decision'
return [kind, w, strs]
if d == 3:
kind = 'unanimous draw'
elif d >= 1:
kind = 'majority draw'
else:
kind = 'split draw'
return [kind, None, strs]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[10, 9],
[8, 10],
[10, 9],
[8, 10],
[10, 9],
[10, 9],
[10, 10],
[8, 10],
[10, 9],
[10, 9],
[8, 10],
[10, 8]],
[[8, 10],
[10, 9],
[9, 10],
[10, 10],
[10, 9],
[9, 10],
[9, 10],
[10, 9],
[10, 9],
[10, 9],
[10, 10],
[9, 10]],
[[10, 8],
[8, 10],
[10, 10],
[10, 8],
[10, 10],
[9, 10],
[9, 10],
[10, 10],
[10, 8],
[10, 8],
[10, 9],
[10, 8]]],
[0, 0]),
['split draw', None, ['112-112', '114-115', '116-109']]),
('regression: draw labels',
([[[9, 10], [9, 10], [10, 10], [9, 10]],
[[10, 10], [10, 9], [8, 10], [10, 10]],
[[10, 9], [9, 10], [8, 10], [10, 9]]],
[0, 1]),
['majority draw', None, ['37-39', '38-38', '37-37']]),
('variant scenario 1',
([[[10, 8], [10, 9], [10, 8], [9, 10]],
[[8, 10], [10, 9], [9, 10], [8, 10]],
[[10, 8], [8, 10], [9, 10], [10, 8]]],
[0, 0]),
['split decision', 'A', ['39-35', '35-39', '37-36']]),
('variant scenario 2',
([[[10, 10], [9, 10], [8, 10], [10, 10]],
[[8, 10], [10, 8], [8, 10], [10, 9]],
[[10, 10], [10, 10], [9, 10], [10, 9]]],
[0, 0]),
['majority decision', 'B', ['37-40', '36-37', '39-39']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[8, 10],
[10, 9],
[10, 8],
[8, 10],
[8, 10],
[10, 9],
[10, 10],
[10, 9],
[10, 10],
[10, 9],
[9, 10],
[10, 10]],
[[10, 9],
[10, 9],
[10, 10],
[10, 8],
[10, 9],
[9, 10],
[10, 10],
[10, 10],
[10, 9],
[10, 8],
[10, 10],
[8, 10]],
[[9, 10],
[10, 9],
[8, 10],
[8, 10],
[10, 9],
[9, 10],
[8, 10],
[9, 10],
[10, 8],
[8, 10],
[9, 10],
[10, 8]]],
[0, 1]),
['split draw', None, ['113-113', '117-111', '108-113']]),
('regression: draw labels',
([[[9, 10], [10, 10], [10, 10], [10, 8]],
[[8, 10], [10, 9], [10, 9], [10, 10]],
[[9, 10], [9, 10], [10, 9], [10, 9]]],
[0, 0]),
['majority draw', None, ['39-38', '38-38', '38-38']]),
('variant scenario 1',
([[[8, 10], [10, 9], [10, 10], [10, 9]],
[[10, 9], [10, 8], [10, 9], [10, 9]],
[[10, 9], [10, 10], [10, 10], [10, 9]]],
[1, 1]),
['majority decision', 'A', ['37-37', '39-34', '39-37']]),
('variant scenario 2',
([[[9, 10],
[8, 10],
[10, 8],
[8, 10],
[10, 8],
[10, 9],
[9, 10],
[8, 10],
[10, 9],
[8, 10],
[9, 10],
[10, 10]],
[[10, 8],
[10, 8],
[10, 9],
[10, 10],
[8, 10],
[8, 10],
[9, 10],
[8, 10],
[10, 9],
[10, 9],
[10, 10],
[10, 10]],
[[9, 10],
[10, 10],
[9, 10],
[10, 9],
[10, 8],
[9, 10],
[10, 8],
[9, 10],
[10, 9],
[10, 10],
[10, 8],
[10, 10]]],
[1, 1]),
['split draw', None, ['108-113', '112-112', '115-111']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[9, 10], [10, 10], [10, 9], [10, 9], [9, 10], [10, 8]],
[[10, 9], [9, 10], [10, 8], [9, 10], [9, 10], [10, 9]],
[[9, 10], [10, 8], [10, 10], [10, 10], [8, 10], [10, 8]]],
[1, 0]),
['majority draw', None, ['57-56', '56-56', '56-56']]),
('regression: draw labels',
([[[10, 8], [10, 8], [8, 10], [10, 9], [9, 10], [10, 9], [8, 10], [8, 10], [8, 10], [10, 10]],
[[8, 10], [10, 8], [10, 10], [8, 10], [10, 10], [10, 9], [9, 10], [9, 10], [10, 8], [10, 10]],
[[10, 10], [10, 9], [10, 9], [10, 8], [8, 10], [10, 8], [10, 10], [10, 10], [10, 8], [9, 10]]],
[0, 1]),
['split draw', None, ['91-93', '94-94', '97-91']]),
('variant scenario 1',
([[[10, 9], [10, 9], [10, 8], [10, 9]],
[[9, 10], [10, 8], [10, 9], [9, 10]],
[[8, 10], [8, 10], [10, 10], [10, 10]]],
[0, 0]),
['split decision', 'A', ['40-35', '38-37', '36-40']]),
('variant scenario 2',
([[[10, 10], [10, 9], [10, 10], [10, 9], [10, 9], [10, 9], [9, 10], [8, 10], [10, 8], [10, 9]],
[[10, 8], [10, 9], [10, 9], [10, 8], [9, 10], [8, 10], [8, 10], [9, 10], [10, 10], [9, 10]],
[[8, 10], [10, 8], [10, 10], [10, 8], [10, 9], [10, 10], [10, 9], [10, 9], [10, 9], [10, 9]]],
[1, 0]),
['split decision', 'A', ['96-93', '92-94', '97-91']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[9, 10], [10, 9], [8, 10], [8, 10], [10, 10], [9, 10]],
[[10, 9], [9, 10], [10, 9], [10, 10], [10, 9], [9, 10]],
[[10, 9], [9, 10], [10, 8], [10, 8], [10, 10], [10, 8]]],
[1, 0]),
['split draw', None, ['53-59', '57-57', '58-53']]),
('regression: draw labels',
([[[10, 9], [8, 10], [10, 9], [10, 8], [10, 10], [10, 10], [10, 8], [8, 10], [10, 10], [9, 10]],
[[10, 10], [10, 8], [10, 9], [10, 9], [10, 9], [9, 10], [8, 10], [10, 9], [10, 10], [10, 8]],
[[10, 9], [9, 10], [10, 9], [10, 9], [10, 9], [10, 9], [10, 10], [8, 10], [9, 10], [10, 10]]],
[1, 0]),
['majority draw', None, ['94-94', '96-92', '95-95']]),
('variant scenario 1',
([[[10, 9], [10, 8], [10, 9], [10, 9]],
[[10, 8], [8, 10], [8, 10], [8, 10]],
[[10, 10], [10, 9], [10, 8], [10, 10]]],
[1, 1]),
['split decision', 'A', ['39-34', '33-37', '39-36']]),
('variant scenario 2',
([[[10, 10], [10, 9], [10, 8], [8, 10], [9, 10], [10, 8]],
[[10, 8], [10, 10], [10, 8], [8, 10], [10, 8], [10, 9]],
[[10, 10], [10, 8], [10, 8], [8, 10], [10, 8], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['57-55', '58-53', '58-53']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[8, 10], [9, 10], [8, 10], [10, 9], [10, 9], [9, 10]],
[[10, 10], [8, 10], [10, 9], [9, 10], [10, 9], [10, 9]],
[[10, 9], [10, 10], [10, 8], [10, 8], [8, 10], [10, 9]]],
[0, 0]),
['split draw', None, ['54-58', '57-57', '58-54']]),
('regression: draw labels',
([[[10, 9]], [[10, 10]], [[10, 10]]], [0, 0]),
['majority draw', None, ['10-9', '10-10', '10-10']]),
('variant scenario 1',
([[[10, 8], [10, 8], [9, 10], [9, 10], [8, 10], [9, 10]],
[[10, 8], [10, 9], [10, 9], [10, 8], [8, 10], [10, 9]],
[[10, 10], [10, 10], [10, 10], [10, 8], [10, 8], [8, 10]]],
[1, 0]),
['split decision', 'A', ['54-56', '57-53', '57-56']]),
('variant scenario 2',
([[[10, 9], [10, 8], [10, 9], [9, 10], [10, 9], [10, 10], [9, 10], [10, 10], [10, 9], [10, 10]],
[[9, 10], [10, 9], [8, 10], [10, 9], [10, 10], [8, 10], [8, 10], [10, 10], [10, 8], [8, 10]],
[[10, 8], [9, 10], [8, 10], [9, 10], [9, 10], [10, 10], [10, 9], [10, 9], [9, 10], [10, 9]]],
[2, 0]),
['split decision', 'B', ['96-94', '89-96', '92-95']])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control unanimous | ['unanimous decision', 'A', ['30-27', '30-27', '30-27']] | ['unanimous decision', 'A', ['30-27', '30-27', '30-27']] | Passed |
| boundary split decision | ['split decision', 'A', ['29-28', '29-28', '28-29']] | ['split decision', 'A', ['29-28', '29-28', '28-29']] | Passed |
| boundary deduction creates draw | ['majority draw', None, ['18-18', '18-18', '17-19']] | ['majority draw', None, ['18-18', '18-18', '17-19']] | Passed |
| control split draw | ['majority draw', None, ['10-9', '9-10', '10-10']] | ['split draw', None, ['10-9', '9-10', '10-10']] | Failed |
| control unanimous draw | ['unanimous draw', None, ['10-10', '10-10', '10-10']] | ['unanimous draw', None, ['10-10', '10-10', '10-10']] | Passed |
| regression: draw labels | ['majority draw', None, ['112-112', '114-115', '116-109']] | ['split draw', None, ['112-112', '114-115', '116-109']] | Failed |
| regression: draw labels | ['majority draw', None, ['37-39', '38-38', '37-37']] | ['majority draw', None, ['37-39', '38-38', '37-37']] | Passed |
| variant scenario 1 | ['split decision', 'A', ['39-35', '35-39', '37-36']] | ['split decision', 'A', ['39-35', '35-39', '37-36']] | Passed |
| variant scenario 2 | ['majority decision', 'B', ['37-40', '36-37', '39-39']] | ['majority decision', 'B', ['37-40', '36-37', '39-39']] | Passed |
SHA-256 / 164570b3440b260fb26f55b01c727e45a0558f1ff9b377cd076e88bdcda15ae1
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(cards, deductions):
verdicts = []
strs = []
for card in cards:
ta = sum(r[0] for r in card) - deductions[0]
tb = sum(r[1] for r in card) - deductions[1]
verdicts.append('A' if ta > tb else ('B' if tb > ta else 'D'))
strs.append('%d-%d' % (ta, tb))
a = verdicts.count('A')
b = verdicts.count('B')
d = verdicts.count('D')
if a >= 2 or b >= 2:
w = 'A' if a >= 2 else 'B'
loser_votes = b if w == 'A' else a
if loser_votes == 1:
kind = 'split decision'
elif d == 1:
kind = 'majority decision'
else:
kind = 'unanimous decision'
return [kind, w, strs]
if d == 3:
kind = 'unanimous draw'
elif d == 2:
kind = 'majority draw'
else:
kind = 'split draw'
return [kind, None, strs]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[10, 9],
[8, 10],
[10, 9],
[8, 10],
[10, 9],
[10, 9],
[10, 10],
[8, 10],
[10, 9],
[10, 9],
[8, 10],
[10, 8]],
[[8, 10],
[10, 9],
[9, 10],
[10, 10],
[10, 9],
[9, 10],
[9, 10],
[10, 9],
[10, 9],
[10, 9],
[10, 10],
[9, 10]],
[[10, 8],
[8, 10],
[10, 10],
[10, 8],
[10, 10],
[9, 10],
[9, 10],
[10, 10],
[10, 8],
[10, 8],
[10, 9],
[10, 8]]],
[0, 0]),
['split draw', None, ['112-112', '114-115', '116-109']]),
('regression: draw labels',
([[[9, 10], [9, 10], [10, 10], [9, 10]],
[[10, 10], [10, 9], [8, 10], [10, 10]],
[[10, 9], [9, 10], [8, 10], [10, 9]]],
[0, 1]),
['majority draw', None, ['37-39', '38-38', '37-37']]),
('variant scenario 1',
([[[10, 8], [10, 9], [10, 8], [9, 10]],
[[8, 10], [10, 9], [9, 10], [8, 10]],
[[10, 8], [8, 10], [9, 10], [10, 8]]],
[0, 0]),
['split decision', 'A', ['39-35', '35-39', '37-36']]),
('variant scenario 2',
([[[10, 10], [9, 10], [8, 10], [10, 10]],
[[8, 10], [10, 8], [8, 10], [10, 9]],
[[10, 10], [10, 10], [9, 10], [10, 9]]],
[0, 0]),
['majority decision', 'B', ['37-40', '36-37', '39-39']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[8, 10],
[10, 9],
[10, 8],
[8, 10],
[8, 10],
[10, 9],
[10, 10],
[10, 9],
[10, 10],
[10, 9],
[9, 10],
[10, 10]],
[[10, 9],
[10, 9],
[10, 10],
[10, 8],
[10, 9],
[9, 10],
[10, 10],
[10, 10],
[10, 9],
[10, 8],
[10, 10],
[8, 10]],
[[9, 10],
[10, 9],
[8, 10],
[8, 10],
[10, 9],
[9, 10],
[8, 10],
[9, 10],
[10, 8],
[8, 10],
[9, 10],
[10, 8]]],
[0, 1]),
['split draw', None, ['113-113', '117-111', '108-113']]),
('regression: draw labels',
([[[9, 10], [10, 10], [10, 10], [10, 8]],
[[8, 10], [10, 9], [10, 9], [10, 10]],
[[9, 10], [9, 10], [10, 9], [10, 9]]],
[0, 0]),
['majority draw', None, ['39-38', '38-38', '38-38']]),
('variant scenario 1',
([[[8, 10], [10, 9], [10, 10], [10, 9]],
[[10, 9], [10, 8], [10, 9], [10, 9]],
[[10, 9], [10, 10], [10, 10], [10, 9]]],
[1, 1]),
['majority decision', 'A', ['37-37', '39-34', '39-37']]),
('variant scenario 2',
([[[9, 10],
[8, 10],
[10, 8],
[8, 10],
[10, 8],
[10, 9],
[9, 10],
[8, 10],
[10, 9],
[8, 10],
[9, 10],
[10, 10]],
[[10, 8],
[10, 8],
[10, 9],
[10, 10],
[8, 10],
[8, 10],
[9, 10],
[8, 10],
[10, 9],
[10, 9],
[10, 10],
[10, 10]],
[[9, 10],
[10, 10],
[9, 10],
[10, 9],
[10, 8],
[9, 10],
[10, 8],
[9, 10],
[10, 9],
[10, 10],
[10, 8],
[10, 10]]],
[1, 1]),
['split draw', None, ['108-113', '112-112', '115-111']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[9, 10], [10, 10], [10, 9], [10, 9], [9, 10], [10, 8]],
[[10, 9], [9, 10], [10, 8], [9, 10], [9, 10], [10, 9]],
[[9, 10], [10, 8], [10, 10], [10, 10], [8, 10], [10, 8]]],
[1, 0]),
['majority draw', None, ['57-56', '56-56', '56-56']]),
('regression: draw labels',
([[[10, 8], [10, 8], [8, 10], [10, 9], [9, 10], [10, 9], [8, 10], [8, 10], [8, 10], [10, 10]],
[[8, 10], [10, 8], [10, 10], [8, 10], [10, 10], [10, 9], [9, 10], [9, 10], [10, 8], [10, 10]],
[[10, 10], [10, 9], [10, 9], [10, 8], [8, 10], [10, 8], [10, 10], [10, 10], [10, 8], [9, 10]]],
[0, 1]),
['split draw', None, ['91-93', '94-94', '97-91']]),
('variant scenario 1',
([[[10, 9], [10, 9], [10, 8], [10, 9]],
[[9, 10], [10, 8], [10, 9], [9, 10]],
[[8, 10], [8, 10], [10, 10], [10, 10]]],
[0, 0]),
['split decision', 'A', ['40-35', '38-37', '36-40']]),
('variant scenario 2',
([[[10, 10], [10, 9], [10, 10], [10, 9], [10, 9], [10, 9], [9, 10], [8, 10], [10, 8], [10, 9]],
[[10, 8], [10, 9], [10, 9], [10, 8], [9, 10], [8, 10], [8, 10], [9, 10], [10, 10], [9, 10]],
[[8, 10], [10, 8], [10, 10], [10, 8], [10, 9], [10, 10], [10, 9], [10, 9], [10, 9], [10, 9]]],
[1, 0]),
['split decision', 'A', ['96-93', '92-94', '97-91']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[9, 10], [10, 9], [8, 10], [8, 10], [10, 10], [9, 10]],
[[10, 9], [9, 10], [10, 9], [10, 10], [10, 9], [9, 10]],
[[10, 9], [9, 10], [10, 8], [10, 8], [10, 10], [10, 8]]],
[1, 0]),
['split draw', None, ['53-59', '57-57', '58-53']]),
('regression: draw labels',
([[[10, 9], [8, 10], [10, 9], [10, 8], [10, 10], [10, 10], [10, 8], [8, 10], [10, 10], [9, 10]],
[[10, 10], [10, 8], [10, 9], [10, 9], [10, 9], [9, 10], [8, 10], [10, 9], [10, 10], [10, 8]],
[[10, 9], [9, 10], [10, 9], [10, 9], [10, 9], [10, 9], [10, 10], [8, 10], [9, 10], [10, 10]]],
[1, 0]),
['majority draw', None, ['94-94', '96-92', '95-95']]),
('variant scenario 1',
([[[10, 9], [10, 8], [10, 9], [10, 9]],
[[10, 8], [8, 10], [8, 10], [8, 10]],
[[10, 10], [10, 9], [10, 8], [10, 10]]],
[1, 1]),
['split decision', 'A', ['39-34', '33-37', '39-36']]),
('variant scenario 2',
([[[10, 10], [10, 9], [10, 8], [8, 10], [9, 10], [10, 8]],
[[10, 8], [10, 10], [10, 8], [8, 10], [10, 8], [10, 9]],
[[10, 10], [10, 8], [10, 8], [8, 10], [10, 8], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['57-55', '58-53', '58-53']])],
[('control unanimous',
([[[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]], [[10, 9], [10, 9], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['30-27', '30-27', '30-27']]),
('boundary split decision',
([[[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [10, 9]], [[10, 9], [9, 10], [9, 10]]],
[0, 0]),
['split decision', 'A', ['29-28', '29-28', '28-29']]),
('boundary deduction creates draw',
([[[10, 9], [10, 9]], [[10, 9], [10, 9]], [[10, 9], [9, 10]]], [2, 0]),
['majority draw', None, ['18-18', '18-18', '17-19']]),
('control split draw',
([[[10, 9]], [[9, 10]], [[10, 10]]], [0, 0]),
['split draw', None, ['10-9', '9-10', '10-10']]),
('control unanimous draw',
([[[10, 10]], [[10, 10]], [[10, 10]]], [0, 0]),
['unanimous draw', None, ['10-10', '10-10', '10-10']]),
('regression: draw labels',
([[[8, 10], [9, 10], [8, 10], [10, 9], [10, 9], [9, 10]],
[[10, 10], [8, 10], [10, 9], [9, 10], [10, 9], [10, 9]],
[[10, 9], [10, 10], [10, 8], [10, 8], [8, 10], [10, 9]]],
[0, 0]),
['split draw', None, ['54-58', '57-57', '58-54']]),
('regression: draw labels',
([[[10, 9]], [[10, 10]], [[10, 10]]], [0, 0]),
['majority draw', None, ['10-9', '10-10', '10-10']]),
('variant scenario 1',
([[[10, 8], [10, 8], [9, 10], [9, 10], [8, 10], [9, 10]],
[[10, 8], [10, 9], [10, 9], [10, 8], [8, 10], [10, 9]],
[[10, 10], [10, 10], [10, 10], [10, 8], [10, 8], [8, 10]]],
[1, 0]),
['split decision', 'A', ['54-56', '57-53', '57-56']]),
('variant scenario 2',
([[[10, 9], [10, 8], [10, 9], [9, 10], [10, 9], [10, 10], [9, 10], [10, 10], [10, 9], [10, 10]],
[[9, 10], [10, 9], [8, 10], [10, 9], [10, 10], [8, 10], [8, 10], [10, 10], [10, 8], [8, 10]],
[[10, 8], [9, 10], [8, 10], [9, 10], [9, 10], [10, 10], [10, 9], [10, 9], [9, 10], [10, 9]]],
[2, 0]),
['split decision', 'B', ['96-94', '89-96', '92-95']])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control unanimous | ['unanimous decision', 'A', ['30-27', '30-27', '30-27']] | ['unanimous decision', 'A', ['30-27', '30-27', '30-27']] | Passed |
| boundary split decision | ['split decision', 'A', ['29-28', '29-28', '28-29']] | ['split decision', 'A', ['29-28', '29-28', '28-29']] | Passed |
| boundary deduction creates draw | ['majority draw', None, ['18-18', '18-18', '17-19']] | ['majority draw', None, ['18-18', '18-18', '17-19']] | Passed |
| control split draw | ['split draw', None, ['10-9', '9-10', '10-10']] | ['split draw', None, ['10-9', '9-10', '10-10']] | Passed |
| control unanimous draw | ['unanimous draw', None, ['10-10', '10-10', '10-10']] | ['unanimous draw', None, ['10-10', '10-10', '10-10']] | Passed |
| regression: draw labels | ['split draw', None, ['112-112', '114-115', '116-109']] | ['split draw', None, ['112-112', '114-115', '116-109']] | Passed |
| regression: draw labels | ['majority draw', None, ['37-39', '38-38', '37-37']] | ['majority draw', None, ['37-39', '38-38', '37-37']] | Passed |
| variant scenario 1 | ['split decision', 'A', ['39-35', '35-39', '37-36']] | ['split decision', 'A', ['39-35', '35-39', '37-36']] | Passed |
| variant scenario 2 | ['majority decision', 'B', ['37-40', '36-37', '39-39']] | ['majority decision', 'B', ['37-40', '36-37', '39-39']] | Passed |
SHA-256 / 49c0f90bc1ee0b4aa15a25b3934e18205f0abfe7c202135a5ca77940cbf71eb6
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:50:29.847739+00:00.
Case digest / afd1a91e32b68178d44be0eb0426d6e196f97238a8e843c46a0502671ffd7b9f