FAILURE MAP
← Case archive

FA-85056 / Fantasy sports scoring / Open access

Captain half-hundredths floored · case 01

A captain with 13.33 points scores 19.99 instead of 20.00; negative captains lose extra.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The 1.5x points are floor-divided, rounding halves down and negatives away from zero.

VERIFIED REPAIR

Round half away from zero on the magnitude and reapply the sign.

Unsuccessful approach: Python round() uses half-even, so half the ties still round down.

Case contract

A single-game lineup has one captain and five flex players. The captain costs 1.5x salary rounded up to the next 100 and scores 1.5x points (hundredths, rounded half away from zero). Validation order: exactly five flex players and six distinct names (roster), salary total at most the cap (cap), players from at least two teams (teams). Return validity, first failing reason, salary and points.

Why this case matters

Captain multipliers on both salary and points are where showdown contest lineups are mispriced or wrongly rejected.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(lineup, points, salaries, teams, cap):
    cpt, flex = lineup['CPT'], lineup['FLEX']
    names = [cpt] + flex
    cpt_salary = -(-salaries[cpt] * 3 // 200) * 100
    salary = cpt_salary + sum(salaries[p] for p in flex)
    c = points[cpt] * 3
    cpt_pts = c // 2
    total = cpt_pts + sum(points[p] for p in flex)
    if len(flex) != 5 or len(set(names)) != 6:
        return {'valid': False, 'reason': 'roster', 'salary': salary, 'points': total}
    if salary > cap:
        return {'valid': False, 'reason': 'cap', 'salary': salary, 'points': total}
    if len({teams[p] for p in names}) < 2:
        return {'valid': False, 'reason': 'teams', 'salary': salary, 'points': total}
    return {'valid': True, 'reason': None, 'salary': salary, 'points': total}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['a', 'f', 'g', 'h', 'b']},
    {'a': -45, 'b': -45, 'c': 1687, 'd': 2001, 'e': 0, 'f': -45, 'g': -50, 'h': 0},
    {'a': 5500, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 5300, 'f': 7100, 'g': 3300, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 46500],
   {'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'h', 'FLEX': ['a', 'h', 'e', 'b', 'c']},
    {'a': 2370, 'b': 0, 'c': 225, 'd': 1333, 'e': 1795, 'f': 719, 'g': -50, 'h': 1795},
    {'a': 10500, 'b': 8700, 'c': 3300, 'd': 10500, 'e': 10500, 'f': 9900, 'g': 5500, 'h': 7100},
    {'a': 'H', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 50900],
   {'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}),
  ('second regression',
   [{'CPT': 'h', 'FLEX': ['g', 'f', 'c', 'b', 'e']},
    {'a': -45, 'b': 427, 'c': 2001, 'd': -50, 'e': 225, 'f': 2001, 'g': 1795, 'h': 2001},
    {'a': 5300, 'b': 5500, 'c': 5500, 'd': 3300, 'e': 8700, 'f': 5500, 'g': 5500, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'H'}, 39000],
   {'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}),
  ('normal control 1',
   [{'CPT': 'b', 'FLEX': ['f', 'd', 'e', 'c', 'b']},
    {'a': 225, 'b': 756, 'c': -45, 'd': 225, 'e': 0, 'f': 1333, 'g': 0, 'h': 1333},
    {'a': 7100, 'b': 8700, 'c': 9900, 'd': 8700, 'e': 7100, 'f': 3300, 'g': 10500, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 50800],
   {'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'g', 'FLEX': ['c', 'a', 'd', 'g', 'f']},
    {'a': 0, 'b': 2883, 'c': 225, 'd': 1795, 'e': 1795, 'f': 1333, 'g': -50, 'h': -45},
    {'a': 3300, 'b': 5500, 'c': 3300, 'd': 10500, 'e': 3300, 'f': 8700, 'g': 5500, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 39500],
   {'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['a', 'e', 'g', 'd', 'b']},
    {'a': -50, 'b': 2001, 'c': 1333, 'd': -45, 'e': 1333, 'f': 1795, 'g': 1795, 'h': 1333},
    {'a': 7100, 'b': 10500, 'c': 7100, 'd': 7100, 'e': 10500, 'f': 7100, 'g': 3300, 'h': 10500},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'A', 'h': 'A'}, 49100],
   {'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'g', 'FLEX': ['d', 'h', 'b', 'c', 'e']},
    {'a': -50, 'b': -50, 'c': -50, 'd': 1333, 'e': 225, 'f': 2001, 'g': 1916, 'h': 1795},
    {'a': 10500, 'b': 10500, 'c': 5300, 'd': 7100, 'e': 3300, 'f': 8700, 'g': 7100, 'h': 9900},
    {'a': 'A', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'A'}, 50000],
   {'points': 6127, 'reason': None, 'salary': 46800, 'valid': True})],
 [('regression: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['e', 'c', 'f', 'd', 'h']},
    {'a': 2702, 'b': -45, 'c': 0, 'd': 1333, 'e': 1333, 'f': 2001, 'g': 1333, 'h': 0},
    {'a': 7100, 'b': 8700, 'c': 5300, 'd': 9900, 'e': 9900, 'f': 8700, 'g': 8700, 'h': 8700},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'A'}, 55600],
   {'points': 6667, 'reason': None, 'salary': 55600, 'valid': True}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['b', 'f', 'd', 'g', 'a']},
    {'a': -50, 'b': -72, 'c': 2722, 'd': 1795, 'e': -45, 'f': 225, 'g': 2255, 'h': 1795},
    {'a': 8700, 'b': 9900, 'c': 5300, 'd': 8700, 'e': 5500, 'f': 10500, 'g': 5500, 'h': 7100},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 51600],
   {'points': 7536, 'reason': 'roster', 'salary': 51600, 'valid': False}),
  ('second regression',
   [{'CPT': 'f', 'FLEX': ['f', 'c', 'h', 'f', 'd']},
    {'a': 1795, 'b': -45, 'c': 2001, 'd': 2001, 'e': 1795, 'f': 225, 'g': 2757, 'h': 225},
    {'a': 5500, 'b': 5500, 'c': 3300, 'd': 5500, 'e': 5300, 'f': 8700, 'g': 9900, 'h': 5300},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'H'}, 44700],
   {'points': 5015, 'reason': 'roster', 'salary': 44600, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'g', 'FLEX': ['a', 'c', 'd', 'e', 'f']},
    {'a': 0, 'b': 2607, 'c': 1333, 'd': 225, 'e': 883, 'f': 1323, 'g': -45, 'h': 0},
    {'a': 3300, 'b': 10500, 'c': 5500, 'd': 8700, 'e': 5500, 'f': 3300, 'g': 5300, 'h': 10500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 34300],
   {'points': 3696, 'reason': None, 'salary': 34300, 'valid': True}),
  ('normal control 2',
   [{'CPT': 'h', 'FLEX': ['h', 'f', 'a', 'b', 'g']},
    {'a': -50, 'b': 0, 'c': 1795, 'd': 759, 'e': 0, 'f': 2965, 'g': -50, 'h': 0},
    {'a': 5300, 'b': 5300, 'c': 8700, 'd': 7100, 'e': 7100, 'f': 3300, 'g': 8700, 'h': 7100},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 40400],
   {'points': 2865, 'reason': 'roster', 'salary': 40400, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['c', 'e', 'd', 'b', 'f']},
    {'a': 0, 'b': 1333, 'c': 1333, 'd': -45, 'e': 1078, 'f': -45, 'g': -45, 'h': 1333},
    {'a': 5500, 'b': 7100, 'c': 8700, 'd': 10500, 'e': 3300, 'f': 7100, 'g': 5300, 'h': 8700},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 52500],
   {'points': 3586, 'reason': 'roster', 'salary': 52500, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'a', 'FLEX': ['g', 'b', 'h', 'd', 'e']},
    {'a': 0, 'b': -45, 'c': 2001, 'd': 1333, 'e': 1333, 'f': 2001, 'g': 225, 'h': 0},
    {'a': 3300, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 7100, 'f': 8700, 'g': 3300, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 50000],
   {'points': 2846, 'reason': None, 'salary': 35700, 'valid': True})],
 [('regression: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['g', 'b', 'h', 'f', 'a']},
    {'a': 2001, 'b': 1333, 'c': 1795, 'd': 2622, 'e': 901, 'f': 1795, 'g': 1795, 'h': -50},
    {'a': 7100, 'b': 7100, 'c': 9900, 'd': 5500, 'e': 5300, 'f': 5300, 'g': 10500, 'h': 5300},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'A'}, 51100],
   {'points': 9567, 'reason': 'roster', 'salary': 51100, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'f', 'FLEX': ['a', 'h', 'd', 'e', 'c']},
    {'a': -50, 'b': 0, 'c': 1333, 'd': 225, 'e': 0, 'f': 1795, 'g': 225, 'h': -50},
    {'a': 9900, 'b': 9900, 'c': 3300, 'd': 10500, 'e': 10500, 'f': 10500, 'g': 7100, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 53300],
   {'points': 4151, 'reason': None, 'salary': 53300, 'valid': True}),
  ('second regression',
   [{'CPT': 'a', 'FLEX': ['e', 'h', 'g', 'b', 'a']},
    {'a': 2001, 'b': 2001, 'c': 2001, 'd': -45, 'e': 672, 'f': 2001, 'g': -50, 'h': 2001},
    {'a': 5300, 'b': 8700, 'c': 8700, 'd': 8700, 'e': 5300, 'f': 10500, 'g': 8700, 'h': 9900},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 45800],
   {'points': 9627, 'reason': 'roster', 'salary': 45900, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'c', 'FLEX': ['a', 'e', 'f', 'b', 'g']},
    {'a': 2001, 'b': 1795, 'c': 0, 'd': 1333, 'e': 1333, 'f': 0, 'g': 2001, 'h': 2001},
    {'a': 5300, 'b': 8700, 'c': 5500, 'd': 8700, 'e': 5300, 'f': 7100, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'A'}, 45300],
   {'points': 7130, 'reason': None, 'salary': 45200, 'valid': True}),
  ('normal control 2',
   [{'CPT': 'e', 'FLEX': ['g', 'a', 'f', 'e', 'h']},
    {'a': 2001, 'b': 1795, 'c': 2001, 'd': 225, 'e': -45, 'f': -45, 'g': 225, 'h': 225},
    {'a': 7100, 'b': 5500, 'c': 7100, 'd': 8700, 'e': 7100, 'f': 5300, 'g': 5300, 'h': 5300},
    {'a': 'A', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 40800],
   {'points': 2293, 'reason': 'roster', 'salary': 40800, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'f', 'FLEX': ['b', 'c', 'f', 'g', 'e']},
    {'a': 680, 'b': -45, 'c': -50, 'd': -50, 'e': 1795, 'f': -50, 'g': 2001, 'h': 2001},
    {'a': 7100, 'b': 8700, 'c': 5500, 'd': 5500, 'e': 9900, 'f': 3300, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'H'}, 42800],
   {'points': 3576, 'reason': 'roster', 'salary': 42900, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'h', 'FLEX': ['d', 'a', 'h', 'c', 'g']},
    {'a': 225, 'b': 225, 'c': 225, 'd': 1333, 'e': 225, 'f': -50, 'g': 1333, 'h': 70},
    {'a': 7100, 'b': 7100, 'c': 7100, 'd': 8700, 'e': 3300, 'f': 8700, 'g': 10500, 'h': 7100},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 51300],
   {'points': 3291, 'reason': 'roster', 'salary': 51200, 'valid': False})],
 [('regression: captain half-point rounding',
   [{'CPT': 'h', 'FLEX': ['e', 'b', 'h', 'h', 'a']},
    {'a': 0, 'b': 2001, 'c': 1795, 'd': -45, 'e': 0, 'f': 1795, 'g': 2824, 'h': 2001},
    {'a': 8700, 'b': 3300, 'c': 5500, 'd': 9900, 'e': 5500, 'f': 5500, 'g': 8700, 'h': 3300},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 29100],
   {'points': 9005, 'reason': 'roster', 'salary': 29100, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['c', 'd', 'g', 'e', 'f']},
    {'a': 441, 'b': 662, 'c': -45, 'd': 1795, 'e': 225, 'f': -50, 'g': -45, 'h': 225},
    {'a': 3300, 'b': 8700, 'c': 7100, 'd': 3300, 'e': 9900, 'f': 7100, 'g': 5500, 'h': 3300},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'A', 'g': 'A', 'h': 'H'}, 37800],
   {'points': 4573, 'reason': 'roster', 'salary': 37900, 'valid': False}),
  ('second regression',
   [{'CPT': 'd', 'FLEX': ['d', 'h', 'f', 'e', 'd']},
    {'a': 2001, 'b': 893, 'c': -45, 'd': 1333, 'e': -45, 'f': 0, 'g': -45, 'h': 2686},
    {'a': 5500, 'b': 5500, 'c': 8700, 'd': 9900, 'e': 7100, 'f': 3300, 'g': 5300, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 52100],
   {'points': 7307, 'reason': 'roster', 'salary': 52200, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'c', 'FLEX': ['c', 'g', 'd', 'f', 'e']},
    {'a': -45, 'b': 2744, 'c': -45, 'd': -45, 'e': 225, 'f': -45, 'g': 2001, 'h': 0},
    {'a': 3300, 'b': 9900, 'c': 5500, 'd': 5300, 'e': 5300, 'f': 7100, 'g': 10500, 'h': 10500},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 41900],
   {'points': 2023, 'reason': 'roster', 'salary': 42000, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'f', 'FLEX': ['f', 'e', 'h', 'b', 'c']},
    {'a': 0, 'b': -45, 'c': -50, 'd': -50, 'e': 1795, 'f': -45, 'g': 0, 'h': 2001},
    {'a': 5500, 'b': 7100, 'c': 5300, 'd': 8700, 'e': 8700, 'f': 3300, 'g': 5500, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 38100],
   {'points': 3588, 'reason': 'roster', 'salary': 38100, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['b', 'e', 'c', 'g', 'd']},
    {'a': 1795, 'b': -45, 'c': -50, 'd': 0, 'e': -45, 'f': 2001, 'g': 225, 'h': 1448},
    {'a': 7100, 'b': 5500, 'c': 3300, 'd': 5500, 'e': 8700, 'f': 7100, 'g': 8700, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 40000],
   {'points': 85, 'reason': 'roster', 'salary': 40000, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'f', 'FLEX': ['h', 'f', 'e', 'b', 'g']},
    {'a': 0, 'b': 1795, 'c': 225, 'd': 1795, 'e': 2001, 'f': 0, 'g': 225, 'h': 2001},
    {'a': 5500, 'b': 8700, 'c': 10500, 'd': 10500, 'e': 5300, 'f': 5500, 'g': 5300, 'h': 5300},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 38300],
   {'points': 6022, 'reason': 'roster', 'salary': 38400, 'valid': False})],
 [('regression: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['f', 'g', 'd', 'b', 'h']},
    {'a': -45, 'b': 225, 'c': 1795, 'd': 1957, 'e': 1530, 'f': 1795, 'g': 2001, 'h': -45},
    {'a': 8700, 'b': 3300, 'c': 5500, 'd': 9900, 'e': 7100, 'f': 5300, 'g': 8700, 'h': 5500},
    {'a': 'H', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'A'}, 47700],
   {'points': 8869, 'reason': 'roster', 'salary': 47600, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'a', 'FLEX': ['b', 'c', 'h', 'f', 'd']},
    {'a': 1795, 'b': 1795, 'c': 1586, 'd': 1333, 'e': -50, 'f': 479, 'g': -45, 'h': 1333},
    {'a': 5500, 'b': 8700, 'c': 5300, 'd': 8700, 'e': 7100, 'f': 9900, 'g': 5500, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 47900],
   {'points': 9219, 'reason': 'cap', 'salary': 48000, 'valid': False}),
  ('second regression',
   [{'CPT': 'e', 'FLEX': ['h', 'g', 'a', 'e', 'd']},
    {'a': 593, 'b': -45, 'c': 1795, 'd': 1608, 'e': 225, 'f': 143, 'g': 2001, 'h': 0},
    {'a': 9900, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 5500, 'f': 10500, 'g': 5300, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'A'}, 45900],
   {'points': 4765, 'reason': 'roster', 'salary': 46000, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'e', 'FLEX': ['h', 'e', 'c', 'b', 'g']},
    {'a': 1795, 'b': 1333, 'c': 2928, 'd': 0, 'e': -50, 'f': 0, 'g': 2001, 'h': -50},
    {'a': 9900, 'b': 3300, 'c': 7100, 'd': 7100, 'e': 9900, 'f': 3300, 'g': 5500, 'h': 3300},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'A', 'h': 'H'}, 50000],
   {'points': 6087, 'reason': 'roster', 'salary': 44000, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'd', 'FLEX': ['f', 'a', 'c', 'g', 'e']},
    {'a': 320, 'b': 0, 'c': 1333, 'd': 2538, 'e': 1795, 'f': 225, 'g': 1333, 'h': 2001},
    {'a': 5500, 'b': 5300, 'c': 8700, 'd': 8700, 'e': 9900, 'f': 5500, 'g': 7100, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 49800],
   {'points': 8813, 'reason': None, 'salary': 49800, 'valid': True}),
  ('normal control 3',
   [{'CPT': 'h', 'FLEX': ['h', 'c', 'f', 'b', 'a']},
    {'a': 225, 'b': 0, 'c': 1795, 'd': 0, 'e': 0, 'f': -45, 'g': 2001, 'h': -50},
    {'a': 3300, 'b': 3300, 'c': 10500, 'd': 9900, 'e': 5500, 'f': 3300, 'g': 9900, 'h': 5500},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'H'}, 34100],
   {'points': 1850, 'reason': 'roster', 'salary': 34200, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'e', 'FLEX': ['a', 'e', 'e', 'c', 'f']},
    {'a': -50, 'b': 225, 'c': 1958, 'd': 1333, 'e': -45, 'f': 0, 'g': -45, 'h': 2001},
    {'a': 5500, 'b': 5300, 'c': 3300, 'd': 8700, 'e': 10500, 'f': 10500, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'A'}, 56200],
   {'points': 1750, 'reason': 'roster', 'salary': 56100, 'valid': False})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*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 fixtureActualExpectedOutcome
regression: captain half-point rounding{'points': 2816, 'reason': 'cap', 'salary': 46600, 'valid': False}{'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}Failed
partial repair probe: captain half-point rounding{'points': 8877, 'reason': 'roster', 'salary': 50800, 'valid': False}{'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}Failed
second regression{'points': 9450, 'reason': None, 'salary': 39000, 'valid': True}{'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}Failed
normal control 1{'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}{'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}Passed
normal control 2{'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}{'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}Passed
normal control 3{'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}{'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}Passed
normal control 4{'points': 6127, 'reason': None, 'salary': 46800, 'valid': True}{'points': 6127, 'reason': None, 'salary': 46800, 'valid': True}Passed

SHA-256 / dd8dff2859d31442e592ae793abda89c5f34694506a15d4d8fa30922ec39f359

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(lineup, points, salaries, teams, cap):
    cpt, flex = lineup['CPT'], lineup['FLEX']
    names = [cpt] + flex
    cpt_salary = -(-salaries[cpt] * 3 // 200) * 100
    salary = cpt_salary + sum(salaries[p] for p in flex)
    c = points[cpt] * 3
    cpt_pts = round(c / 2)
    total = cpt_pts + sum(points[p] for p in flex)
    if len(flex) != 5 or len(set(names)) != 6:
        return {'valid': False, 'reason': 'roster', 'salary': salary, 'points': total}
    if salary > cap:
        return {'valid': False, 'reason': 'cap', 'salary': salary, 'points': total}
    if len({teams[p] for p in names}) < 2:
        return {'valid': False, 'reason': 'teams', 'salary': salary, 'points': total}
    return {'valid': True, 'reason': None, 'salary': salary, 'points': total}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['a', 'f', 'g', 'h', 'b']},
    {'a': -45, 'b': -45, 'c': 1687, 'd': 2001, 'e': 0, 'f': -45, 'g': -50, 'h': 0},
    {'a': 5500, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 5300, 'f': 7100, 'g': 3300, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 46500],
   {'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'h', 'FLEX': ['a', 'h', 'e', 'b', 'c']},
    {'a': 2370, 'b': 0, 'c': 225, 'd': 1333, 'e': 1795, 'f': 719, 'g': -50, 'h': 1795},
    {'a': 10500, 'b': 8700, 'c': 3300, 'd': 10500, 'e': 10500, 'f': 9900, 'g': 5500, 'h': 7100},
    {'a': 'H', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 50900],
   {'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}),
  ('second regression',
   [{'CPT': 'h', 'FLEX': ['g', 'f', 'c', 'b', 'e']},
    {'a': -45, 'b': 427, 'c': 2001, 'd': -50, 'e': 225, 'f': 2001, 'g': 1795, 'h': 2001},
    {'a': 5300, 'b': 5500, 'c': 5500, 'd': 3300, 'e': 8700, 'f': 5500, 'g': 5500, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'H'}, 39000],
   {'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}),
  ('normal control 1',
   [{'CPT': 'b', 'FLEX': ['f', 'd', 'e', 'c', 'b']},
    {'a': 225, 'b': 756, 'c': -45, 'd': 225, 'e': 0, 'f': 1333, 'g': 0, 'h': 1333},
    {'a': 7100, 'b': 8700, 'c': 9900, 'd': 8700, 'e': 7100, 'f': 3300, 'g': 10500, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 50800],
   {'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'g', 'FLEX': ['c', 'a', 'd', 'g', 'f']},
    {'a': 0, 'b': 2883, 'c': 225, 'd': 1795, 'e': 1795, 'f': 1333, 'g': -50, 'h': -45},
    {'a': 3300, 'b': 5500, 'c': 3300, 'd': 10500, 'e': 3300, 'f': 8700, 'g': 5500, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 39500],
   {'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['a', 'e', 'g', 'd', 'b']},
    {'a': -50, 'b': 2001, 'c': 1333, 'd': -45, 'e': 1333, 'f': 1795, 'g': 1795, 'h': 1333},
    {'a': 7100, 'b': 10500, 'c': 7100, 'd': 7100, 'e': 10500, 'f': 7100, 'g': 3300, 'h': 10500},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'A', 'h': 'A'}, 49100],
   {'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'g', 'FLEX': ['d', 'h', 'b', 'c', 'e']},
    {'a': -50, 'b': -50, 'c': -50, 'd': 1333, 'e': 225, 'f': 2001, 'g': 1916, 'h': 1795},
    {'a': 10500, 'b': 10500, 'c': 5300, 'd': 7100, 'e': 3300, 'f': 8700, 'g': 7100, 'h': 9900},
    {'a': 'A', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'A'}, 50000],
   {'points': 6127, 'reason': None, 'salary': 46800, 'valid': True})],
 [('regression: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['e', 'c', 'f', 'd', 'h']},
    {'a': 2702, 'b': -45, 'c': 0, 'd': 1333, 'e': 1333, 'f': 2001, 'g': 1333, 'h': 0},
    {'a': 7100, 'b': 8700, 'c': 5300, 'd': 9900, 'e': 9900, 'f': 8700, 'g': 8700, 'h': 8700},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'A'}, 55600],
   {'points': 6667, 'reason': None, 'salary': 55600, 'valid': True}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['b', 'f', 'd', 'g', 'a']},
    {'a': -50, 'b': -72, 'c': 2722, 'd': 1795, 'e': -45, 'f': 225, 'g': 2255, 'h': 1795},
    {'a': 8700, 'b': 9900, 'c': 5300, 'd': 8700, 'e': 5500, 'f': 10500, 'g': 5500, 'h': 7100},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 51600],
   {'points': 7536, 'reason': 'roster', 'salary': 51600, 'valid': False}),
  ('second regression',
   [{'CPT': 'f', 'FLEX': ['f', 'c', 'h', 'f', 'd']},
    {'a': 1795, 'b': -45, 'c': 2001, 'd': 2001, 'e': 1795, 'f': 225, 'g': 2757, 'h': 225},
    {'a': 5500, 'b': 5500, 'c': 3300, 'd': 5500, 'e': 5300, 'f': 8700, 'g': 9900, 'h': 5300},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'H'}, 44700],
   {'points': 5015, 'reason': 'roster', 'salary': 44600, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'g', 'FLEX': ['a', 'c', 'd', 'e', 'f']},
    {'a': 0, 'b': 2607, 'c': 1333, 'd': 225, 'e': 883, 'f': 1323, 'g': -45, 'h': 0},
    {'a': 3300, 'b': 10500, 'c': 5500, 'd': 8700, 'e': 5500, 'f': 3300, 'g': 5300, 'h': 10500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 34300],
   {'points': 3696, 'reason': None, 'salary': 34300, 'valid': True}),
  ('normal control 2',
   [{'CPT': 'h', 'FLEX': ['h', 'f', 'a', 'b', 'g']},
    {'a': -50, 'b': 0, 'c': 1795, 'd': 759, 'e': 0, 'f': 2965, 'g': -50, 'h': 0},
    {'a': 5300, 'b': 5300, 'c': 8700, 'd': 7100, 'e': 7100, 'f': 3300, 'g': 8700, 'h': 7100},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 40400],
   {'points': 2865, 'reason': 'roster', 'salary': 40400, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['c', 'e', 'd', 'b', 'f']},
    {'a': 0, 'b': 1333, 'c': 1333, 'd': -45, 'e': 1078, 'f': -45, 'g': -45, 'h': 1333},
    {'a': 5500, 'b': 7100, 'c': 8700, 'd': 10500, 'e': 3300, 'f': 7100, 'g': 5300, 'h': 8700},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 52500],
   {'points': 3586, 'reason': 'roster', 'salary': 52500, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'a', 'FLEX': ['g', 'b', 'h', 'd', 'e']},
    {'a': 0, 'b': -45, 'c': 2001, 'd': 1333, 'e': 1333, 'f': 2001, 'g': 225, 'h': 0},
    {'a': 3300, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 7100, 'f': 8700, 'g': 3300, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 50000],
   {'points': 2846, 'reason': None, 'salary': 35700, 'valid': True})],
 [('regression: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['g', 'b', 'h', 'f', 'a']},
    {'a': 2001, 'b': 1333, 'c': 1795, 'd': 2622, 'e': 901, 'f': 1795, 'g': 1795, 'h': -50},
    {'a': 7100, 'b': 7100, 'c': 9900, 'd': 5500, 'e': 5300, 'f': 5300, 'g': 10500, 'h': 5300},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'A'}, 51100],
   {'points': 9567, 'reason': 'roster', 'salary': 51100, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'f', 'FLEX': ['a', 'h', 'd', 'e', 'c']},
    {'a': -50, 'b': 0, 'c': 1333, 'd': 225, 'e': 0, 'f': 1795, 'g': 225, 'h': -50},
    {'a': 9900, 'b': 9900, 'c': 3300, 'd': 10500, 'e': 10500, 'f': 10500, 'g': 7100, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 53300],
   {'points': 4151, 'reason': None, 'salary': 53300, 'valid': True}),
  ('second regression',
   [{'CPT': 'a', 'FLEX': ['e', 'h', 'g', 'b', 'a']},
    {'a': 2001, 'b': 2001, 'c': 2001, 'd': -45, 'e': 672, 'f': 2001, 'g': -50, 'h': 2001},
    {'a': 5300, 'b': 8700, 'c': 8700, 'd': 8700, 'e': 5300, 'f': 10500, 'g': 8700, 'h': 9900},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 45800],
   {'points': 9627, 'reason': 'roster', 'salary': 45900, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'c', 'FLEX': ['a', 'e', 'f', 'b', 'g']},
    {'a': 2001, 'b': 1795, 'c': 0, 'd': 1333, 'e': 1333, 'f': 0, 'g': 2001, 'h': 2001},
    {'a': 5300, 'b': 8700, 'c': 5500, 'd': 8700, 'e': 5300, 'f': 7100, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'A'}, 45300],
   {'points': 7130, 'reason': None, 'salary': 45200, 'valid': True}),
  ('normal control 2',
   [{'CPT': 'e', 'FLEX': ['g', 'a', 'f', 'e', 'h']},
    {'a': 2001, 'b': 1795, 'c': 2001, 'd': 225, 'e': -45, 'f': -45, 'g': 225, 'h': 225},
    {'a': 7100, 'b': 5500, 'c': 7100, 'd': 8700, 'e': 7100, 'f': 5300, 'g': 5300, 'h': 5300},
    {'a': 'A', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 40800],
   {'points': 2293, 'reason': 'roster', 'salary': 40800, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'f', 'FLEX': ['b', 'c', 'f', 'g', 'e']},
    {'a': 680, 'b': -45, 'c': -50, 'd': -50, 'e': 1795, 'f': -50, 'g': 2001, 'h': 2001},
    {'a': 7100, 'b': 8700, 'c': 5500, 'd': 5500, 'e': 9900, 'f': 3300, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'H'}, 42800],
   {'points': 3576, 'reason': 'roster', 'salary': 42900, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'h', 'FLEX': ['d', 'a', 'h', 'c', 'g']},
    {'a': 225, 'b': 225, 'c': 225, 'd': 1333, 'e': 225, 'f': -50, 'g': 1333, 'h': 70},
    {'a': 7100, 'b': 7100, 'c': 7100, 'd': 8700, 'e': 3300, 'f': 8700, 'g': 10500, 'h': 7100},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 51300],
   {'points': 3291, 'reason': 'roster', 'salary': 51200, 'valid': False})],
 [('regression: captain half-point rounding',
   [{'CPT': 'h', 'FLEX': ['e', 'b', 'h', 'h', 'a']},
    {'a': 0, 'b': 2001, 'c': 1795, 'd': -45, 'e': 0, 'f': 1795, 'g': 2824, 'h': 2001},
    {'a': 8700, 'b': 3300, 'c': 5500, 'd': 9900, 'e': 5500, 'f': 5500, 'g': 8700, 'h': 3300},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 29100],
   {'points': 9005, 'reason': 'roster', 'salary': 29100, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['c', 'd', 'g', 'e', 'f']},
    {'a': 441, 'b': 662, 'c': -45, 'd': 1795, 'e': 225, 'f': -50, 'g': -45, 'h': 225},
    {'a': 3300, 'b': 8700, 'c': 7100, 'd': 3300, 'e': 9900, 'f': 7100, 'g': 5500, 'h': 3300},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'A', 'g': 'A', 'h': 'H'}, 37800],
   {'points': 4573, 'reason': 'roster', 'salary': 37900, 'valid': False}),
  ('second regression',
   [{'CPT': 'd', 'FLEX': ['d', 'h', 'f', 'e', 'd']},
    {'a': 2001, 'b': 893, 'c': -45, 'd': 1333, 'e': -45, 'f': 0, 'g': -45, 'h': 2686},
    {'a': 5500, 'b': 5500, 'c': 8700, 'd': 9900, 'e': 7100, 'f': 3300, 'g': 5300, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 52100],
   {'points': 7307, 'reason': 'roster', 'salary': 52200, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'c', 'FLEX': ['c', 'g', 'd', 'f', 'e']},
    {'a': -45, 'b': 2744, 'c': -45, 'd': -45, 'e': 225, 'f': -45, 'g': 2001, 'h': 0},
    {'a': 3300, 'b': 9900, 'c': 5500, 'd': 5300, 'e': 5300, 'f': 7100, 'g': 10500, 'h': 10500},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 41900],
   {'points': 2023, 'reason': 'roster', 'salary': 42000, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'f', 'FLEX': ['f', 'e', 'h', 'b', 'c']},
    {'a': 0, 'b': -45, 'c': -50, 'd': -50, 'e': 1795, 'f': -45, 'g': 0, 'h': 2001},
    {'a': 5500, 'b': 7100, 'c': 5300, 'd': 8700, 'e': 8700, 'f': 3300, 'g': 5500, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 38100],
   {'points': 3588, 'reason': 'roster', 'salary': 38100, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['b', 'e', 'c', 'g', 'd']},
    {'a': 1795, 'b': -45, 'c': -50, 'd': 0, 'e': -45, 'f': 2001, 'g': 225, 'h': 1448},
    {'a': 7100, 'b': 5500, 'c': 3300, 'd': 5500, 'e': 8700, 'f': 7100, 'g': 8700, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 40000],
   {'points': 85, 'reason': 'roster', 'salary': 40000, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'f', 'FLEX': ['h', 'f', 'e', 'b', 'g']},
    {'a': 0, 'b': 1795, 'c': 225, 'd': 1795, 'e': 2001, 'f': 0, 'g': 225, 'h': 2001},
    {'a': 5500, 'b': 8700, 'c': 10500, 'd': 10500, 'e': 5300, 'f': 5500, 'g': 5300, 'h': 5300},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 38300],
   {'points': 6022, 'reason': 'roster', 'salary': 38400, 'valid': False})],
 [('regression: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['f', 'g', 'd', 'b', 'h']},
    {'a': -45, 'b': 225, 'c': 1795, 'd': 1957, 'e': 1530, 'f': 1795, 'g': 2001, 'h': -45},
    {'a': 8700, 'b': 3300, 'c': 5500, 'd': 9900, 'e': 7100, 'f': 5300, 'g': 8700, 'h': 5500},
    {'a': 'H', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'A'}, 47700],
   {'points': 8869, 'reason': 'roster', 'salary': 47600, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'a', 'FLEX': ['b', 'c', 'h', 'f', 'd']},
    {'a': 1795, 'b': 1795, 'c': 1586, 'd': 1333, 'e': -50, 'f': 479, 'g': -45, 'h': 1333},
    {'a': 5500, 'b': 8700, 'c': 5300, 'd': 8700, 'e': 7100, 'f': 9900, 'g': 5500, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 47900],
   {'points': 9219, 'reason': 'cap', 'salary': 48000, 'valid': False}),
  ('second regression',
   [{'CPT': 'e', 'FLEX': ['h', 'g', 'a', 'e', 'd']},
    {'a': 593, 'b': -45, 'c': 1795, 'd': 1608, 'e': 225, 'f': 143, 'g': 2001, 'h': 0},
    {'a': 9900, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 5500, 'f': 10500, 'g': 5300, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'A'}, 45900],
   {'points': 4765, 'reason': 'roster', 'salary': 46000, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'e', 'FLEX': ['h', 'e', 'c', 'b', 'g']},
    {'a': 1795, 'b': 1333, 'c': 2928, 'd': 0, 'e': -50, 'f': 0, 'g': 2001, 'h': -50},
    {'a': 9900, 'b': 3300, 'c': 7100, 'd': 7100, 'e': 9900, 'f': 3300, 'g': 5500, 'h': 3300},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'A', 'h': 'H'}, 50000],
   {'points': 6087, 'reason': 'roster', 'salary': 44000, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'd', 'FLEX': ['f', 'a', 'c', 'g', 'e']},
    {'a': 320, 'b': 0, 'c': 1333, 'd': 2538, 'e': 1795, 'f': 225, 'g': 1333, 'h': 2001},
    {'a': 5500, 'b': 5300, 'c': 8700, 'd': 8700, 'e': 9900, 'f': 5500, 'g': 7100, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 49800],
   {'points': 8813, 'reason': None, 'salary': 49800, 'valid': True}),
  ('normal control 3',
   [{'CPT': 'h', 'FLEX': ['h', 'c', 'f', 'b', 'a']},
    {'a': 225, 'b': 0, 'c': 1795, 'd': 0, 'e': 0, 'f': -45, 'g': 2001, 'h': -50},
    {'a': 3300, 'b': 3300, 'c': 10500, 'd': 9900, 'e': 5500, 'f': 3300, 'g': 9900, 'h': 5500},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'H'}, 34100],
   {'points': 1850, 'reason': 'roster', 'salary': 34200, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'e', 'FLEX': ['a', 'e', 'e', 'c', 'f']},
    {'a': -50, 'b': 225, 'c': 1958, 'd': 1333, 'e': -45, 'f': 0, 'g': -45, 'h': 2001},
    {'a': 5500, 'b': 5300, 'c': 3300, 'd': 8700, 'e': 10500, 'f': 10500, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'A'}, 56200],
   {'points': 1750, 'reason': 'roster', 'salary': 56100, 'valid': False})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*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 fixtureActualExpectedOutcome
regression: captain half-point rounding{'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}{'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}Passed
partial repair probe: captain half-point rounding{'points': 8877, 'reason': 'roster', 'salary': 50800, 'valid': False}{'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}Failed
second regression{'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}{'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}Passed
normal control 1{'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}{'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}Passed
normal control 2{'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}{'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}Passed
normal control 3{'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}{'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}Passed
normal control 4{'points': 6127, 'reason': None, 'salary': 46800, 'valid': True}{'points': 6127, 'reason': None, 'salary': 46800, 'valid': True}Passed

SHA-256 / 0d2378a3f0f52ae37cec0c175ba5495e955a9559ff8d0f1a8a6c8b5c11afd576

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(lineup, points, salaries, teams, cap):
    cpt, flex = lineup['CPT'], lineup['FLEX']
    names = [cpt] + flex
    cpt_salary = -(-salaries[cpt] * 3 // 200) * 100
    salary = cpt_salary + sum(salaries[p] for p in flex)
    c = points[cpt] * 3
    cpt_pts = (abs(c) + 1) // 2 * (1 if c >= 0 else -1)
    total = cpt_pts + sum(points[p] for p in flex)
    if len(flex) != 5 or len(set(names)) != 6:
        return {'valid': False, 'reason': 'roster', 'salary': salary, 'points': total}
    if salary > cap:
        return {'valid': False, 'reason': 'cap', 'salary': salary, 'points': total}
    if len({teams[p] for p in names}) < 2:
        return {'valid': False, 'reason': 'teams', 'salary': salary, 'points': total}
    return {'valid': True, 'reason': None, 'salary': salary, 'points': total}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['a', 'f', 'g', 'h', 'b']},
    {'a': -45, 'b': -45, 'c': 1687, 'd': 2001, 'e': 0, 'f': -45, 'g': -50, 'h': 0},
    {'a': 5500, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 5300, 'f': 7100, 'g': 3300, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 46500],
   {'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'h', 'FLEX': ['a', 'h', 'e', 'b', 'c']},
    {'a': 2370, 'b': 0, 'c': 225, 'd': 1333, 'e': 1795, 'f': 719, 'g': -50, 'h': 1795},
    {'a': 10500, 'b': 8700, 'c': 3300, 'd': 10500, 'e': 10500, 'f': 9900, 'g': 5500, 'h': 7100},
    {'a': 'H', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 50900],
   {'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}),
  ('second regression',
   [{'CPT': 'h', 'FLEX': ['g', 'f', 'c', 'b', 'e']},
    {'a': -45, 'b': 427, 'c': 2001, 'd': -50, 'e': 225, 'f': 2001, 'g': 1795, 'h': 2001},
    {'a': 5300, 'b': 5500, 'c': 5500, 'd': 3300, 'e': 8700, 'f': 5500, 'g': 5500, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'H'}, 39000],
   {'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}),
  ('normal control 1',
   [{'CPT': 'b', 'FLEX': ['f', 'd', 'e', 'c', 'b']},
    {'a': 225, 'b': 756, 'c': -45, 'd': 225, 'e': 0, 'f': 1333, 'g': 0, 'h': 1333},
    {'a': 7100, 'b': 8700, 'c': 9900, 'd': 8700, 'e': 7100, 'f': 3300, 'g': 10500, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 50800],
   {'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'g', 'FLEX': ['c', 'a', 'd', 'g', 'f']},
    {'a': 0, 'b': 2883, 'c': 225, 'd': 1795, 'e': 1795, 'f': 1333, 'g': -50, 'h': -45},
    {'a': 3300, 'b': 5500, 'c': 3300, 'd': 10500, 'e': 3300, 'f': 8700, 'g': 5500, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 39500],
   {'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['a', 'e', 'g', 'd', 'b']},
    {'a': -50, 'b': 2001, 'c': 1333, 'd': -45, 'e': 1333, 'f': 1795, 'g': 1795, 'h': 1333},
    {'a': 7100, 'b': 10500, 'c': 7100, 'd': 7100, 'e': 10500, 'f': 7100, 'g': 3300, 'h': 10500},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'A', 'h': 'A'}, 49100],
   {'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'g', 'FLEX': ['d', 'h', 'b', 'c', 'e']},
    {'a': -50, 'b': -50, 'c': -50, 'd': 1333, 'e': 225, 'f': 2001, 'g': 1916, 'h': 1795},
    {'a': 10500, 'b': 10500, 'c': 5300, 'd': 7100, 'e': 3300, 'f': 8700, 'g': 7100, 'h': 9900},
    {'a': 'A', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'A'}, 50000],
   {'points': 6127, 'reason': None, 'salary': 46800, 'valid': True})],
 [('regression: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['e', 'c', 'f', 'd', 'h']},
    {'a': 2702, 'b': -45, 'c': 0, 'd': 1333, 'e': 1333, 'f': 2001, 'g': 1333, 'h': 0},
    {'a': 7100, 'b': 8700, 'c': 5300, 'd': 9900, 'e': 9900, 'f': 8700, 'g': 8700, 'h': 8700},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'A'}, 55600],
   {'points': 6667, 'reason': None, 'salary': 55600, 'valid': True}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['b', 'f', 'd', 'g', 'a']},
    {'a': -50, 'b': -72, 'c': 2722, 'd': 1795, 'e': -45, 'f': 225, 'g': 2255, 'h': 1795},
    {'a': 8700, 'b': 9900, 'c': 5300, 'd': 8700, 'e': 5500, 'f': 10500, 'g': 5500, 'h': 7100},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 51600],
   {'points': 7536, 'reason': 'roster', 'salary': 51600, 'valid': False}),
  ('second regression',
   [{'CPT': 'f', 'FLEX': ['f', 'c', 'h', 'f', 'd']},
    {'a': 1795, 'b': -45, 'c': 2001, 'd': 2001, 'e': 1795, 'f': 225, 'g': 2757, 'h': 225},
    {'a': 5500, 'b': 5500, 'c': 3300, 'd': 5500, 'e': 5300, 'f': 8700, 'g': 9900, 'h': 5300},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'H'}, 44700],
   {'points': 5015, 'reason': 'roster', 'salary': 44600, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'g', 'FLEX': ['a', 'c', 'd', 'e', 'f']},
    {'a': 0, 'b': 2607, 'c': 1333, 'd': 225, 'e': 883, 'f': 1323, 'g': -45, 'h': 0},
    {'a': 3300, 'b': 10500, 'c': 5500, 'd': 8700, 'e': 5500, 'f': 3300, 'g': 5300, 'h': 10500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 34300],
   {'points': 3696, 'reason': None, 'salary': 34300, 'valid': True}),
  ('normal control 2',
   [{'CPT': 'h', 'FLEX': ['h', 'f', 'a', 'b', 'g']},
    {'a': -50, 'b': 0, 'c': 1795, 'd': 759, 'e': 0, 'f': 2965, 'g': -50, 'h': 0},
    {'a': 5300, 'b': 5300, 'c': 8700, 'd': 7100, 'e': 7100, 'f': 3300, 'g': 8700, 'h': 7100},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 40400],
   {'points': 2865, 'reason': 'roster', 'salary': 40400, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['c', 'e', 'd', 'b', 'f']},
    {'a': 0, 'b': 1333, 'c': 1333, 'd': -45, 'e': 1078, 'f': -45, 'g': -45, 'h': 1333},
    {'a': 5500, 'b': 7100, 'c': 8700, 'd': 10500, 'e': 3300, 'f': 7100, 'g': 5300, 'h': 8700},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 52500],
   {'points': 3586, 'reason': 'roster', 'salary': 52500, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'a', 'FLEX': ['g', 'b', 'h', 'd', 'e']},
    {'a': 0, 'b': -45, 'c': 2001, 'd': 1333, 'e': 1333, 'f': 2001, 'g': 225, 'h': 0},
    {'a': 3300, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 7100, 'f': 8700, 'g': 3300, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 50000],
   {'points': 2846, 'reason': None, 'salary': 35700, 'valid': True})],
 [('regression: captain half-point rounding',
   [{'CPT': 'g', 'FLEX': ['g', 'b', 'h', 'f', 'a']},
    {'a': 2001, 'b': 1333, 'c': 1795, 'd': 2622, 'e': 901, 'f': 1795, 'g': 1795, 'h': -50},
    {'a': 7100, 'b': 7100, 'c': 9900, 'd': 5500, 'e': 5300, 'f': 5300, 'g': 10500, 'h': 5300},
    {'a': 'A', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'A'}, 51100],
   {'points': 9567, 'reason': 'roster', 'salary': 51100, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'f', 'FLEX': ['a', 'h', 'd', 'e', 'c']},
    {'a': -50, 'b': 0, 'c': 1333, 'd': 225, 'e': 0, 'f': 1795, 'g': 225, 'h': -50},
    {'a': 9900, 'b': 9900, 'c': 3300, 'd': 10500, 'e': 10500, 'f': 10500, 'g': 7100, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 53300],
   {'points': 4151, 'reason': None, 'salary': 53300, 'valid': True}),
  ('second regression',
   [{'CPT': 'a', 'FLEX': ['e', 'h', 'g', 'b', 'a']},
    {'a': 2001, 'b': 2001, 'c': 2001, 'd': -45, 'e': 672, 'f': 2001, 'g': -50, 'h': 2001},
    {'a': 5300, 'b': 8700, 'c': 8700, 'd': 8700, 'e': 5300, 'f': 10500, 'g': 8700, 'h': 9900},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'H'}, 45800],
   {'points': 9627, 'reason': 'roster', 'salary': 45900, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'c', 'FLEX': ['a', 'e', 'f', 'b', 'g']},
    {'a': 2001, 'b': 1795, 'c': 0, 'd': 1333, 'e': 1333, 'f': 0, 'g': 2001, 'h': 2001},
    {'a': 5300, 'b': 8700, 'c': 5500, 'd': 8700, 'e': 5300, 'f': 7100, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'A'}, 45300],
   {'points': 7130, 'reason': None, 'salary': 45200, 'valid': True}),
  ('normal control 2',
   [{'CPT': 'e', 'FLEX': ['g', 'a', 'f', 'e', 'h']},
    {'a': 2001, 'b': 1795, 'c': 2001, 'd': 225, 'e': -45, 'f': -45, 'g': 225, 'h': 225},
    {'a': 7100, 'b': 5500, 'c': 7100, 'd': 8700, 'e': 7100, 'f': 5300, 'g': 5300, 'h': 5300},
    {'a': 'A', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 40800],
   {'points': 2293, 'reason': 'roster', 'salary': 40800, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'f', 'FLEX': ['b', 'c', 'f', 'g', 'e']},
    {'a': 680, 'b': -45, 'c': -50, 'd': -50, 'e': 1795, 'f': -50, 'g': 2001, 'h': 2001},
    {'a': 7100, 'b': 8700, 'c': 5500, 'd': 5500, 'e': 9900, 'f': 3300, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'A', 'g': 'H', 'h': 'H'}, 42800],
   {'points': 3576, 'reason': 'roster', 'salary': 42900, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'h', 'FLEX': ['d', 'a', 'h', 'c', 'g']},
    {'a': 225, 'b': 225, 'c': 225, 'd': 1333, 'e': 225, 'f': -50, 'g': 1333, 'h': 70},
    {'a': 7100, 'b': 7100, 'c': 7100, 'd': 8700, 'e': 3300, 'f': 8700, 'g': 10500, 'h': 7100},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 51300],
   {'points': 3291, 'reason': 'roster', 'salary': 51200, 'valid': False})],
 [('regression: captain half-point rounding',
   [{'CPT': 'h', 'FLEX': ['e', 'b', 'h', 'h', 'a']},
    {'a': 0, 'b': 2001, 'c': 1795, 'd': -45, 'e': 0, 'f': 1795, 'g': 2824, 'h': 2001},
    {'a': 8700, 'b': 3300, 'c': 5500, 'd': 9900, 'e': 5500, 'f': 5500, 'g': 8700, 'h': 3300},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 29100],
   {'points': 9005, 'reason': 'roster', 'salary': 29100, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['c', 'd', 'g', 'e', 'f']},
    {'a': 441, 'b': 662, 'c': -45, 'd': 1795, 'e': 225, 'f': -50, 'g': -45, 'h': 225},
    {'a': 3300, 'b': 8700, 'c': 7100, 'd': 3300, 'e': 9900, 'f': 7100, 'g': 5500, 'h': 3300},
    {'a': 'A', 'b': 'A', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'A', 'g': 'A', 'h': 'H'}, 37800],
   {'points': 4573, 'reason': 'roster', 'salary': 37900, 'valid': False}),
  ('second regression',
   [{'CPT': 'd', 'FLEX': ['d', 'h', 'f', 'e', 'd']},
    {'a': 2001, 'b': 893, 'c': -45, 'd': 1333, 'e': -45, 'f': 0, 'g': -45, 'h': 2686},
    {'a': 5500, 'b': 5500, 'c': 8700, 'd': 9900, 'e': 7100, 'f': 3300, 'g': 5300, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 52100],
   {'points': 7307, 'reason': 'roster', 'salary': 52200, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'c', 'FLEX': ['c', 'g', 'd', 'f', 'e']},
    {'a': -45, 'b': 2744, 'c': -45, 'd': -45, 'e': 225, 'f': -45, 'g': 2001, 'h': 0},
    {'a': 3300, 'b': 9900, 'c': 5500, 'd': 5300, 'e': 5300, 'f': 7100, 'g': 10500, 'h': 10500},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'H', 'h': 'H'}, 41900],
   {'points': 2023, 'reason': 'roster', 'salary': 42000, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'f', 'FLEX': ['f', 'e', 'h', 'b', 'c']},
    {'a': 0, 'b': -45, 'c': -50, 'd': -50, 'e': 1795, 'f': -45, 'g': 0, 'h': 2001},
    {'a': 5500, 'b': 7100, 'c': 5300, 'd': 8700, 'e': 8700, 'f': 3300, 'g': 5500, 'h': 8700},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 38100],
   {'points': 3588, 'reason': 'roster', 'salary': 38100, 'valid': False}),
  ('normal control 3',
   [{'CPT': 'd', 'FLEX': ['b', 'e', 'c', 'g', 'd']},
    {'a': 1795, 'b': -45, 'c': -50, 'd': 0, 'e': -45, 'f': 2001, 'g': 225, 'h': 1448},
    {'a': 7100, 'b': 5500, 'c': 3300, 'd': 5500, 'e': 8700, 'f': 7100, 'g': 8700, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 40000],
   {'points': 85, 'reason': 'roster', 'salary': 40000, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'f', 'FLEX': ['h', 'f', 'e', 'b', 'g']},
    {'a': 0, 'b': 1795, 'c': 225, 'd': 1795, 'e': 2001, 'f': 0, 'g': 225, 'h': 2001},
    {'a': 5500, 'b': 8700, 'c': 10500, 'd': 10500, 'e': 5300, 'f': 5500, 'g': 5300, 'h': 5300},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 38300],
   {'points': 6022, 'reason': 'roster', 'salary': 38400, 'valid': False})],
 [('regression: captain half-point rounding',
   [{'CPT': 'd', 'FLEX': ['f', 'g', 'd', 'b', 'h']},
    {'a': -45, 'b': 225, 'c': 1795, 'd': 1957, 'e': 1530, 'f': 1795, 'g': 2001, 'h': -45},
    {'a': 8700, 'b': 3300, 'c': 5500, 'd': 9900, 'e': 7100, 'f': 5300, 'g': 8700, 'h': 5500},
    {'a': 'H', 'b': 'A', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'A'}, 47700],
   {'points': 8869, 'reason': 'roster', 'salary': 47600, 'valid': False}),
  ('partial repair probe: captain half-point rounding',
   [{'CPT': 'a', 'FLEX': ['b', 'c', 'h', 'f', 'd']},
    {'a': 1795, 'b': 1795, 'c': 1586, 'd': 1333, 'e': -50, 'f': 479, 'g': -45, 'h': 1333},
    {'a': 5500, 'b': 8700, 'c': 5300, 'd': 8700, 'e': 7100, 'f': 9900, 'g': 5500, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'H'}, 47900],
   {'points': 9219, 'reason': 'cap', 'salary': 48000, 'valid': False}),
  ('second regression',
   [{'CPT': 'e', 'FLEX': ['h', 'g', 'a', 'e', 'd']},
    {'a': 593, 'b': -45, 'c': 1795, 'd': 1608, 'e': 225, 'f': 143, 'g': 2001, 'h': 0},
    {'a': 9900, 'b': 7100, 'c': 8700, 'd': 9900, 'e': 5500, 'f': 10500, 'g': 5300, 'h': 7100},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'A', 'h': 'A'}, 45900],
   {'points': 4765, 'reason': 'roster', 'salary': 46000, 'valid': False}),
  ('normal control 1',
   [{'CPT': 'e', 'FLEX': ['h', 'e', 'c', 'b', 'g']},
    {'a': 1795, 'b': 1333, 'c': 2928, 'd': 0, 'e': -50, 'f': 0, 'g': 2001, 'h': -50},
    {'a': 9900, 'b': 3300, 'c': 7100, 'd': 7100, 'e': 9900, 'f': 3300, 'g': 5500, 'h': 3300},
    {'a': 'H', 'b': 'A', 'c': 'H', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'A', 'h': 'H'}, 50000],
   {'points': 6087, 'reason': 'roster', 'salary': 44000, 'valid': False}),
  ('normal control 2',
   [{'CPT': 'd', 'FLEX': ['f', 'a', 'c', 'g', 'e']},
    {'a': 320, 'b': 0, 'c': 1333, 'd': 2538, 'e': 1795, 'f': 225, 'g': 1333, 'h': 2001},
    {'a': 5500, 'b': 5300, 'c': 8700, 'd': 8700, 'e': 9900, 'f': 5500, 'g': 7100, 'h': 5500},
    {'a': 'H', 'b': 'H', 'c': 'H', 'd': 'A', 'e': 'H', 'f': 'H', 'g': 'H', 'h': 'A'}, 49800],
   {'points': 8813, 'reason': None, 'salary': 49800, 'valid': True}),
  ('normal control 3',
   [{'CPT': 'h', 'FLEX': ['h', 'c', 'f', 'b', 'a']},
    {'a': 225, 'b': 0, 'c': 1795, 'd': 0, 'e': 0, 'f': -45, 'g': 2001, 'h': -50},
    {'a': 3300, 'b': 3300, 'c': 10500, 'd': 9900, 'e': 5500, 'f': 3300, 'g': 9900, 'h': 5500},
    {'a': 'A', 'b': 'H', 'c': 'A', 'd': 'H', 'e': 'A', 'f': 'A', 'g': 'H', 'h': 'H'}, 34100],
   {'points': 1850, 'reason': 'roster', 'salary': 34200, 'valid': False}),
  ('normal control 4',
   [{'CPT': 'e', 'FLEX': ['a', 'e', 'e', 'c', 'f']},
    {'a': -50, 'b': 225, 'c': 1958, 'd': 1333, 'e': -45, 'f': 0, 'g': -45, 'h': 2001},
    {'a': 5500, 'b': 5300, 'c': 3300, 'd': 8700, 'e': 10500, 'f': 10500, 'g': 10500, 'h': 3300},
    {'a': 'H', 'b': 'H', 'c': 'A', 'd': 'A', 'e': 'A', 'f': 'H', 'g': 'A', 'h': 'A'}, 56200],
   {'points': 1750, 'reason': 'roster', 'salary': 56100, 'valid': False})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*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 fixtureActualExpectedOutcome
regression: captain half-point rounding{'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}{'points': 2817, 'reason': 'cap', 'salary': 46600, 'valid': False}Passed
partial repair probe: captain half-point rounding{'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}{'points': 8878, 'reason': 'roster', 'salary': 50800, 'valid': False}Passed
second regression{'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}{'points': 9451, 'reason': None, 'salary': 39000, 'valid': True}Passed
normal control 1{'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}{'points': 3403, 'reason': 'roster', 'salary': 50800, 'valid': False}Passed
normal control 2{'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}{'points': 3228, 'reason': 'roster', 'salary': 39600, 'valid': False}Passed
normal control 3{'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}{'points': 4966, 'reason': 'roster', 'salary': 49200, 'valid': False}Passed
normal control 4{'points': 6127, 'reason': None, 'salary': 46800, 'valid': True}{'points': 6127, 'reason': None, 'salary': 46800, 'valid': True}Passed

SHA-256 / 734f0f3c3037bcb7a5f3c5e05ee12b3fa46a6f0ef24845de3a44da13673083e0

Verification & scope

A deterministic toy scoring contract stipulated for this example; it is not the rulebook of any real fantasy platform. 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:36.830090+00:00.

Case digest / b4c2c538c19df966d3399cd510f68d7c6d34f7826d517fc0347c0ce224e830d9