FA-84326 / Sports scoring and tiebreakers / Open access
Point deductions applied to the wrong fighter · case 01
A fighter penalised for fouls gains ground on the cards.
ROOT CAUSE
Each fighter's total is reduced by the opponent's deductions.
VERIFIED REPAIR
Subtract each fighter's own deductions from that fighter's totals.
Unsuccessful approach: Ignoring deductions entirely still misstates close cards.
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[1]
tb = sum(r[1] for r in card) - deductions[0]
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: deduction owner',
([[[10, 9], [10, 10], [10, 10], [8, 10], [9, 10], [10, 9]],
[[10, 9], [10, 9], [8, 10], [10, 8], [9, 10], [8, 10]],
[[10, 9], [10, 9], [10, 10], [10, 9], [8, 10], [10, 8]]],
[0, 1]),
['majority draw', None, ['57-57', '55-55', '58-54']]),
('variant scenario 1',
([[[9, 10], [10, 9], [10, 9], [8, 10], [10, 10], [10, 8]],
[[10, 8], [9, 10], [10, 9], [8, 10], [8, 10], [10, 9]],
[[10, 8], [8, 10], [10, 8], [10, 10], [10, 8], [10, 8]]],
[0, 0]),
['split decision', 'A', ['57-56', '55-56', '58-52']]),
('variant scenario 2',
([[[10, 9],
[10, 9],
[10, 9],
[10, 9],
[10, 10],
[10, 8],
[10, 8],
[10, 8],
[9, 10],
[10, 8],
[10, 10],
[10, 9]],
[[8, 10],
[8, 10],
[9, 10],
[9, 10],
[10, 8],
[10, 9],
[8, 10],
[8, 10],
[8, 10],
[10, 9],
[10, 8],
[10, 10]],
[[10, 9],
[9, 10],
[10, 9],
[10, 9],
[9, 10],
[10, 8],
[8, 10],
[10, 10],
[10, 10],
[9, 10],
[10, 8],
[10, 8]]],
[0, 1]),
['split decision', 'A', ['119-106', '108-113', '115-110']])],
[('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: deduction owner',
([[[10, 8],
[10, 8],
[8, 10],
[8, 10],
[10, 9],
[8, 10],
[9, 10],
[9, 10],
[10, 9],
[10, 8],
[8, 10],
[10, 8]],
[[9, 10],
[10, 10],
[9, 10],
[10, 8],
[10, 9],
[10, 9],
[10, 9],
[10, 9],
[10, 8],
[10, 9],
[10, 8],
[10, 9]],
[[10, 10],
[9, 10],
[10, 8],
[8, 10],
[10, 10],
[10, 9],
[10, 9],
[10, 8],
[10, 9],
[10, 9],
[10, 8],
[10, 8]]],
[0, 1]),
['unanimous decision', 'A', ['110-109', '118-107', '117-107']]),
('variant scenario 1',
([[[10, 9], [10, 10], [10, 8], [9, 10], [10, 10], [10, 10]],
[[10, 10], [10, 9], [10, 9], [10, 8], [10, 10], [10, 9]],
[[10, 10], [10, 8], [10, 9], [10, 8], [10, 10], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['59-57', '60-55', '60-54']]),
('variant scenario 2',
([[[9, 10],
[8, 10],
[9, 10],
[10, 10],
[10, 8],
[10, 9],
[10, 10],
[10, 10],
[10, 10],
[10, 9],
[10, 9],
[8, 10]],
[[8, 10],
[9, 10],
[9, 10],
[9, 10],
[8, 10],
[10, 10],
[10, 9],
[10, 10],
[9, 10],
[10, 8],
[10, 9],
[10, 10]],
[[8, 10],
[9, 10],
[9, 10],
[8, 10],
[9, 10],
[10, 8],
[10, 8],
[10, 10],
[10, 9],
[10, 8],
[8, 10],
[8, 10]]],
[0, 0]),
['unanimous decision', 'B', ['114-115', '112-116', '109-113']])],
[('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: deduction owner',
([[[10, 8], [10, 8], [10, 9], [10, 10], [10, 9], [8, 10]],
[[10, 9], [10, 8], [10, 9], [10, 8], [9, 10], [10, 9]],
[[10, 8], [10, 10], [10, 8], [8, 10], [9, 10], [10, 10]]],
[2, 0]),
['split decision', 'A', ['56-54', '57-53', '55-56']]),
('variant scenario 1',
([[[10, 8], [10, 9], [8, 10], [10, 10], [9, 10], [10, 10]],
[[10, 10], [10, 8], [10, 8], [10, 10], [9, 10], [10, 10]],
[[9, 10], [10, 8], [8, 10], [10, 8], [10, 9], [10, 8]]],
[0, 0]),
['majority decision', 'A', ['57-57', '59-56', '57-53']]),
('variant scenario 2',
([[[10, 9], [9, 10], [8, 10], [10, 10]],
[[10, 8], [10, 9], [10, 8], [10, 9]],
[[9, 10], [9, 10], [10, 9], [10, 8]]],
[0, 0]),
['split decision', 'A', ['37-39', '40-34', '38-37']])],
[('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: deduction owner',
([[[9, 10], [10, 10], [10, 10], [10, 8]],
[[10, 9], [10, 8], [8, 10], [8, 10]],
[[10, 9], [8, 10], [8, 10], [8, 10]]],
[1, 0]),
['majority decision', 'B', ['38-38', '35-37', '33-39']]),
('variant scenario 1',
([[[8, 10], [10, 8], [10, 8], [10, 9]],
[[8, 10], [9, 10], [10, 8], [10, 9]],
[[8, 10], [10, 8], [8, 10], [9, 10]]],
[0, 0]),
['split draw', None, ['38-35', '37-37', '35-38']]),
('variant scenario 2',
([[[10, 8], [10, 9], [9, 10], [10, 10]],
[[10, 9], [9, 10], [10, 9], [8, 10]],
[[8, 10], [10, 10], [10, 9], [10, 9]]],
[1, 0]),
['split decision', 'B', ['38-37', '36-38', '37-38']])],
[('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: deduction owner',
([[[10, 8],
[9, 10],
[10, 9],
[8, 10],
[9, 10],
[10, 9],
[9, 10],
[10, 10],
[10, 9],
[9, 10],
[8, 10],
[10, 8]],
[[9, 10],
[8, 10],
[9, 10],
[10, 8],
[8, 10],
[8, 10],
[10, 8],
[10, 10],
[10, 10],
[10, 9],
[9, 10],
[10, 9]],
[[10, 10],
[10, 9],
[8, 10],
[10, 10],
[10, 8],
[9, 10],
[10, 10],
[9, 10],
[9, 10],
[9, 10],
[10, 9],
[10, 9]]],
[0, 1]),
['majority draw', None, ['112-112', '111-113', '114-114']]),
('variant scenario 1',
([[[10, 9], [10, 8], [10, 8], [8, 10], [9, 10], [10, 8]],
[[10, 8], [10, 10], [10, 9], [8, 10], [10, 10], [10, 10]],
[[9, 10], [8, 10], [10, 9], [8, 10], [8, 10], [10, 8]]],
[0, 0]),
['split decision', 'A', ['57-53', '58-57', '53-57']]),
('variant scenario 2',
([[[10, 10], [10, 8], [10, 8], [10, 9]],
[[10, 10], [10, 8], [8, 10], [8, 10]],
[[10, 9], [9, 10], [8, 10], [10, 10]]],
[0, 0]),
['split decision', 'B', ['40-35', '36-38', '37-39']])]]
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 | ['unanimous decision', 'A', ['20-16', '20-16', '19-17']] | ['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: deduction owner | ['split decision', 'B', ['56-58', '54-56', '57-55']] | ['majority draw', None, ['57-57', '55-55', '58-54']] | Failed |
| variant scenario 1 | ['split decision', 'A', ['57-56', '55-56', '58-52']] | ['split decision', 'A', ['57-56', '55-56', '58-52']] | Passed |
| variant scenario 2 | ['split decision', 'A', ['118-107', '107-114', '114-111']] | ['split decision', 'A', ['119-106', '108-113', '115-110']] | Failed |
SHA-256 / fd316df9328fa4511f3f296ade42c819ac53dcc6c3028852f9f6eca95305ba39
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)
tb = sum(r[1] for r in card)
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: deduction owner',
([[[10, 9], [10, 10], [10, 10], [8, 10], [9, 10], [10, 9]],
[[10, 9], [10, 9], [8, 10], [10, 8], [9, 10], [8, 10]],
[[10, 9], [10, 9], [10, 10], [10, 9], [8, 10], [10, 8]]],
[0, 1]),
['majority draw', None, ['57-57', '55-55', '58-54']]),
('variant scenario 1',
([[[9, 10], [10, 9], [10, 9], [8, 10], [10, 10], [10, 8]],
[[10, 8], [9, 10], [10, 9], [8, 10], [8, 10], [10, 9]],
[[10, 8], [8, 10], [10, 8], [10, 10], [10, 8], [10, 8]]],
[0, 0]),
['split decision', 'A', ['57-56', '55-56', '58-52']]),
('variant scenario 2',
([[[10, 9],
[10, 9],
[10, 9],
[10, 9],
[10, 10],
[10, 8],
[10, 8],
[10, 8],
[9, 10],
[10, 8],
[10, 10],
[10, 9]],
[[8, 10],
[8, 10],
[9, 10],
[9, 10],
[10, 8],
[10, 9],
[8, 10],
[8, 10],
[8, 10],
[10, 9],
[10, 8],
[10, 10]],
[[10, 9],
[9, 10],
[10, 9],
[10, 9],
[9, 10],
[10, 8],
[8, 10],
[10, 10],
[10, 10],
[9, 10],
[10, 8],
[10, 8]]],
[0, 1]),
['split decision', 'A', ['119-106', '108-113', '115-110']])],
[('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: deduction owner',
([[[10, 8],
[10, 8],
[8, 10],
[8, 10],
[10, 9],
[8, 10],
[9, 10],
[9, 10],
[10, 9],
[10, 8],
[8, 10],
[10, 8]],
[[9, 10],
[10, 10],
[9, 10],
[10, 8],
[10, 9],
[10, 9],
[10, 9],
[10, 9],
[10, 8],
[10, 9],
[10, 8],
[10, 9]],
[[10, 10],
[9, 10],
[10, 8],
[8, 10],
[10, 10],
[10, 9],
[10, 9],
[10, 8],
[10, 9],
[10, 9],
[10, 8],
[10, 8]]],
[0, 1]),
['unanimous decision', 'A', ['110-109', '118-107', '117-107']]),
('variant scenario 1',
([[[10, 9], [10, 10], [10, 8], [9, 10], [10, 10], [10, 10]],
[[10, 10], [10, 9], [10, 9], [10, 8], [10, 10], [10, 9]],
[[10, 10], [10, 8], [10, 9], [10, 8], [10, 10], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['59-57', '60-55', '60-54']]),
('variant scenario 2',
([[[9, 10],
[8, 10],
[9, 10],
[10, 10],
[10, 8],
[10, 9],
[10, 10],
[10, 10],
[10, 10],
[10, 9],
[10, 9],
[8, 10]],
[[8, 10],
[9, 10],
[9, 10],
[9, 10],
[8, 10],
[10, 10],
[10, 9],
[10, 10],
[9, 10],
[10, 8],
[10, 9],
[10, 10]],
[[8, 10],
[9, 10],
[9, 10],
[8, 10],
[9, 10],
[10, 8],
[10, 8],
[10, 10],
[10, 9],
[10, 8],
[8, 10],
[8, 10]]],
[0, 0]),
['unanimous decision', 'B', ['114-115', '112-116', '109-113']])],
[('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: deduction owner',
([[[10, 8], [10, 8], [10, 9], [10, 10], [10, 9], [8, 10]],
[[10, 9], [10, 8], [10, 9], [10, 8], [9, 10], [10, 9]],
[[10, 8], [10, 10], [10, 8], [8, 10], [9, 10], [10, 10]]],
[2, 0]),
['split decision', 'A', ['56-54', '57-53', '55-56']]),
('variant scenario 1',
([[[10, 8], [10, 9], [8, 10], [10, 10], [9, 10], [10, 10]],
[[10, 10], [10, 8], [10, 8], [10, 10], [9, 10], [10, 10]],
[[9, 10], [10, 8], [8, 10], [10, 8], [10, 9], [10, 8]]],
[0, 0]),
['majority decision', 'A', ['57-57', '59-56', '57-53']]),
('variant scenario 2',
([[[10, 9], [9, 10], [8, 10], [10, 10]],
[[10, 8], [10, 9], [10, 8], [10, 9]],
[[9, 10], [9, 10], [10, 9], [10, 8]]],
[0, 0]),
['split decision', 'A', ['37-39', '40-34', '38-37']])],
[('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: deduction owner',
([[[9, 10], [10, 10], [10, 10], [10, 8]],
[[10, 9], [10, 8], [8, 10], [8, 10]],
[[10, 9], [8, 10], [8, 10], [8, 10]]],
[1, 0]),
['majority decision', 'B', ['38-38', '35-37', '33-39']]),
('variant scenario 1',
([[[8, 10], [10, 8], [10, 8], [10, 9]],
[[8, 10], [9, 10], [10, 8], [10, 9]],
[[8, 10], [10, 8], [8, 10], [9, 10]]],
[0, 0]),
['split draw', None, ['38-35', '37-37', '35-38']]),
('variant scenario 2',
([[[10, 8], [10, 9], [9, 10], [10, 10]],
[[10, 9], [9, 10], [10, 9], [8, 10]],
[[8, 10], [10, 10], [10, 9], [10, 9]]],
[1, 0]),
['split decision', 'B', ['38-37', '36-38', '37-38']])],
[('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: deduction owner',
([[[10, 8],
[9, 10],
[10, 9],
[8, 10],
[9, 10],
[10, 9],
[9, 10],
[10, 10],
[10, 9],
[9, 10],
[8, 10],
[10, 8]],
[[9, 10],
[8, 10],
[9, 10],
[10, 8],
[8, 10],
[8, 10],
[10, 8],
[10, 10],
[10, 10],
[10, 9],
[9, 10],
[10, 9]],
[[10, 10],
[10, 9],
[8, 10],
[10, 10],
[10, 8],
[9, 10],
[10, 10],
[9, 10],
[9, 10],
[9, 10],
[10, 9],
[10, 9]]],
[0, 1]),
['majority draw', None, ['112-112', '111-113', '114-114']]),
('variant scenario 1',
([[[10, 9], [10, 8], [10, 8], [8, 10], [9, 10], [10, 8]],
[[10, 8], [10, 10], [10, 9], [8, 10], [10, 10], [10, 10]],
[[9, 10], [8, 10], [10, 9], [8, 10], [8, 10], [10, 8]]],
[0, 0]),
['split decision', 'A', ['57-53', '58-57', '53-57']]),
('variant scenario 2',
([[[10, 10], [10, 8], [10, 8], [10, 9]],
[[10, 10], [10, 8], [8, 10], [8, 10]],
[[10, 9], [9, 10], [8, 10], [10, 10]]],
[0, 0]),
['split decision', 'B', ['40-35', '36-38', '37-39']])]]
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 decision', 'A', ['20-18', '20-18', '19-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: deduction owner | ['split decision', 'B', ['57-58', '55-56', '58-55']] | ['majority draw', None, ['57-57', '55-55', '58-54']] | Failed |
| variant scenario 1 | ['split decision', 'A', ['57-56', '55-56', '58-52']] | ['split decision', 'A', ['57-56', '55-56', '58-52']] | Passed |
| variant scenario 2 | ['split decision', 'A', ['119-107', '108-114', '115-111']] | ['split decision', 'A', ['119-106', '108-113', '115-110']] | Failed |
SHA-256 / eed8b8d9d39674ca0854c869b2769ca568923e8848e6db7bd669c894a39cc82c
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: deduction owner',
([[[10, 9], [10, 10], [10, 10], [8, 10], [9, 10], [10, 9]],
[[10, 9], [10, 9], [8, 10], [10, 8], [9, 10], [8, 10]],
[[10, 9], [10, 9], [10, 10], [10, 9], [8, 10], [10, 8]]],
[0, 1]),
['majority draw', None, ['57-57', '55-55', '58-54']]),
('variant scenario 1',
([[[9, 10], [10, 9], [10, 9], [8, 10], [10, 10], [10, 8]],
[[10, 8], [9, 10], [10, 9], [8, 10], [8, 10], [10, 9]],
[[10, 8], [8, 10], [10, 8], [10, 10], [10, 8], [10, 8]]],
[0, 0]),
['split decision', 'A', ['57-56', '55-56', '58-52']]),
('variant scenario 2',
([[[10, 9],
[10, 9],
[10, 9],
[10, 9],
[10, 10],
[10, 8],
[10, 8],
[10, 8],
[9, 10],
[10, 8],
[10, 10],
[10, 9]],
[[8, 10],
[8, 10],
[9, 10],
[9, 10],
[10, 8],
[10, 9],
[8, 10],
[8, 10],
[8, 10],
[10, 9],
[10, 8],
[10, 10]],
[[10, 9],
[9, 10],
[10, 9],
[10, 9],
[9, 10],
[10, 8],
[8, 10],
[10, 10],
[10, 10],
[9, 10],
[10, 8],
[10, 8]]],
[0, 1]),
['split decision', 'A', ['119-106', '108-113', '115-110']])],
[('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: deduction owner',
([[[10, 8],
[10, 8],
[8, 10],
[8, 10],
[10, 9],
[8, 10],
[9, 10],
[9, 10],
[10, 9],
[10, 8],
[8, 10],
[10, 8]],
[[9, 10],
[10, 10],
[9, 10],
[10, 8],
[10, 9],
[10, 9],
[10, 9],
[10, 9],
[10, 8],
[10, 9],
[10, 8],
[10, 9]],
[[10, 10],
[9, 10],
[10, 8],
[8, 10],
[10, 10],
[10, 9],
[10, 9],
[10, 8],
[10, 9],
[10, 9],
[10, 8],
[10, 8]]],
[0, 1]),
['unanimous decision', 'A', ['110-109', '118-107', '117-107']]),
('variant scenario 1',
([[[10, 9], [10, 10], [10, 8], [9, 10], [10, 10], [10, 10]],
[[10, 10], [10, 9], [10, 9], [10, 8], [10, 10], [10, 9]],
[[10, 10], [10, 8], [10, 9], [10, 8], [10, 10], [10, 9]]],
[0, 0]),
['unanimous decision', 'A', ['59-57', '60-55', '60-54']]),
('variant scenario 2',
([[[9, 10],
[8, 10],
[9, 10],
[10, 10],
[10, 8],
[10, 9],
[10, 10],
[10, 10],
[10, 10],
[10, 9],
[10, 9],
[8, 10]],
[[8, 10],
[9, 10],
[9, 10],
[9, 10],
[8, 10],
[10, 10],
[10, 9],
[10, 10],
[9, 10],
[10, 8],
[10, 9],
[10, 10]],
[[8, 10],
[9, 10],
[9, 10],
[8, 10],
[9, 10],
[10, 8],
[10, 8],
[10, 10],
[10, 9],
[10, 8],
[8, 10],
[8, 10]]],
[0, 0]),
['unanimous decision', 'B', ['114-115', '112-116', '109-113']])],
[('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: deduction owner',
([[[10, 8], [10, 8], [10, 9], [10, 10], [10, 9], [8, 10]],
[[10, 9], [10, 8], [10, 9], [10, 8], [9, 10], [10, 9]],
[[10, 8], [10, 10], [10, 8], [8, 10], [9, 10], [10, 10]]],
[2, 0]),
['split decision', 'A', ['56-54', '57-53', '55-56']]),
('variant scenario 1',
([[[10, 8], [10, 9], [8, 10], [10, 10], [9, 10], [10, 10]],
[[10, 10], [10, 8], [10, 8], [10, 10], [9, 10], [10, 10]],
[[9, 10], [10, 8], [8, 10], [10, 8], [10, 9], [10, 8]]],
[0, 0]),
['majority decision', 'A', ['57-57', '59-56', '57-53']]),
('variant scenario 2',
([[[10, 9], [9, 10], [8, 10], [10, 10]],
[[10, 8], [10, 9], [10, 8], [10, 9]],
[[9, 10], [9, 10], [10, 9], [10, 8]]],
[0, 0]),
['split decision', 'A', ['37-39', '40-34', '38-37']])],
[('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: deduction owner',
([[[9, 10], [10, 10], [10, 10], [10, 8]],
[[10, 9], [10, 8], [8, 10], [8, 10]],
[[10, 9], [8, 10], [8, 10], [8, 10]]],
[1, 0]),
['majority decision', 'B', ['38-38', '35-37', '33-39']]),
('variant scenario 1',
([[[8, 10], [10, 8], [10, 8], [10, 9]],
[[8, 10], [9, 10], [10, 8], [10, 9]],
[[8, 10], [10, 8], [8, 10], [9, 10]]],
[0, 0]),
['split draw', None, ['38-35', '37-37', '35-38']]),
('variant scenario 2',
([[[10, 8], [10, 9], [9, 10], [10, 10]],
[[10, 9], [9, 10], [10, 9], [8, 10]],
[[8, 10], [10, 10], [10, 9], [10, 9]]],
[1, 0]),
['split decision', 'B', ['38-37', '36-38', '37-38']])],
[('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: deduction owner',
([[[10, 8],
[9, 10],
[10, 9],
[8, 10],
[9, 10],
[10, 9],
[9, 10],
[10, 10],
[10, 9],
[9, 10],
[8, 10],
[10, 8]],
[[9, 10],
[8, 10],
[9, 10],
[10, 8],
[8, 10],
[8, 10],
[10, 8],
[10, 10],
[10, 10],
[10, 9],
[9, 10],
[10, 9]],
[[10, 10],
[10, 9],
[8, 10],
[10, 10],
[10, 8],
[9, 10],
[10, 10],
[9, 10],
[9, 10],
[9, 10],
[10, 9],
[10, 9]]],
[0, 1]),
['majority draw', None, ['112-112', '111-113', '114-114']]),
('variant scenario 1',
([[[10, 9], [10, 8], [10, 8], [8, 10], [9, 10], [10, 8]],
[[10, 8], [10, 10], [10, 9], [8, 10], [10, 10], [10, 10]],
[[9, 10], [8, 10], [10, 9], [8, 10], [8, 10], [10, 8]]],
[0, 0]),
['split decision', 'A', ['57-53', '58-57', '53-57']]),
('variant scenario 2',
([[[10, 10], [10, 8], [10, 8], [10, 9]],
[[10, 10], [10, 8], [8, 10], [8, 10]],
[[10, 9], [9, 10], [8, 10], [10, 10]]],
[0, 0]),
['split decision', 'B', ['40-35', '36-38', '37-39']])]]
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: deduction owner | ['majority draw', None, ['57-57', '55-55', '58-54']] | ['majority draw', None, ['57-57', '55-55', '58-54']] | Passed |
| variant scenario 1 | ['split decision', 'A', ['57-56', '55-56', '58-52']] | ['split decision', 'A', ['57-56', '55-56', '58-52']] | Passed |
| variant scenario 2 | ['split decision', 'A', ['119-106', '108-113', '115-110']] | ['split decision', 'A', ['119-106', '108-113', '115-110']] | Passed |
SHA-256 / 555e21872c647de3e2c962a2d1f6dc6a25c94b166a4b93d24caaae3fbcf69954
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.828288+00:00.
Case digest / 5bfdd6b6bd655354b84af8a361ee9e9c17525dd57fd19290d92f64057cc62b5c