FAILURE MAP
← Case archive

FA-85336 / Fantasy sports scoring / Open access

Long non-scoring plays earn touchdown bonuses · case 01

A 55-yard run tackled at the 5 earns the 50+ touchdown bonus.

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

ROOT CAUSE

The 50+ tier does not check the touchdown flag.

THE FAILURE

The 50+ tier does not check the touchdown flag.

Unsuccessful approach: Exempting receptions from the touchdown check still pays non-scoring catches.

Case contract

Per-play bonus tenths for one player: a touchdown of 50+ yards earns 3, a touchdown of 40-49 yards earns 2 (exclusive tiers); every rushing or receiving play (not passing) of 20+ yards earns 0.5 whether or not it scored; three or more touchdowns in the game earn 2 once.

Why this case matters

Long-play bonuses are layered rules where tier order and play-type filters are easy to get wrong.

1 / The failure

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

N = 1
observations = []
def solve(plays):
    bonus = 0
    for kind, yards, td in plays:
        if yards >= 50:
            bonus += 30
        elif td and yards >= 40:
            bonus += 20
        if kind != 'pass' and yards >= 20:
            bonus += 5
    tds = sum(1 for _, _, td in plays if td)
    if tds >= 3:
        bonus += 20
    return bonus
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: touchdown requirement',
   [[['pass', 44, False], ['rec', 51, False], ['pass', 20, False], ['rec', 5, False]]], 5),
  ('partial repair probe: touchdown requirement',
   [[['pass', 50, True], ['rush', 66, True], ['rush', 41, False], ['rush', 19, False], ['rec', 51, False],
     ['pass', -3, False]]],
   75),
  ('second regression', [[['rec', 19, True], ['rush', 80, False]]], 5),
  ('normal control 1',
   [[['pass', 41, False], ['rush', 20, True], ['rush', -3, True], ['rec', 50, True], ['pass', 20, False]]],
   60),
  ('normal control 2', [[['rec', 39, True]]], 5),
  ('normal control 3', [[['pass', 50, True], ['pass', 19, True], ['rush', 40, False]]], 35),
  ('normal control 4',
   [[['rec', 20, False], ['rush', 5, False], ['rec', 5, True], ['rush', 41, True], ['rec', 51, True]]], 85)],
 [('regression: touchdown requirement', [[['rush', 41, True], ['pass', 51, False]]], 25),
  ('partial repair probe: touchdown requirement',
   [[['rec', 50, False], ['rec', 19, False], ['pass', 49, False]]], 5),
  ('second regression', [[['pass', -3, False], ['pass', 51, False]]], 0),
  ('normal control 1', [[['rush', 5, False], ['pass', 19, False], ['rec', 41, False], ['rush', 49, True]]],
   30),
  ('normal control 2', [[['rec', 51, True]]], 35),
  ('normal control 3', [[['rec', -4, True], ['rec', 20, False], ['rec', 5, True]]], 5),
  ('normal control 4', [[['pass', 41, False], ['pass', 40, False], ['rec', -3, True], ['pass', 19, True]]],
   0)],
 [('regression: touchdown requirement', [[['rush', 51, False], ['pass', 41, True]]], 25),
  ('partial repair probe: touchdown requirement', [[['rec', 51, False]]], 5),
  ('second regression', [[['rush', 40, True], ['rec', 19, False], ['rush', 20, True], ['rush', 50, False]]],
   35),
  ('normal control 1',
   [[['rush', 51, True], ['rec', 40, False], ['rush', 5, True], ['pass', 7, True], ['pass', 49, False]]],
   60),
  ('normal control 2', [[['rec', 19, False]]], 0),
  ('normal control 3', [[['pass', 50, True], ['rec', 50, True], ['rec', 41, True], ['rush', 41, True]]], 135),
  ('normal control 4', [[['rec', -3, False], ['rush', -3, False]]], 0)],
 [('regression: touchdown requirement',
   [[['pass', 5, False], ['rec', 41, False], ['rec', -3, True], ['rec', 40, False], ['pass', 51, False]]],
   10),
  ('partial repair probe: touchdown requirement', [[['rec', 51, False]]], 5),
  ('second regression', [[['rec', 5, False], ['rush', 39, False], ['pass', 51, False]]], 5),
  ('normal control 1', [[['rush', 5, True], ['pass', 5, False], ['rec', 5, True]]], 0),
  ('normal control 2', [[['rush', 33, False], ['pass', 5, False], ['rec', 40, False]]], 10),
  ('normal control 3',
   [[['rec', 41, True], ['rush', 20, False], ['pass', 40, False], ['rec', 39, False], ['rush', 5, False],
     ['rush', 19, False]]],
   35),
  ('normal control 4', [[['pass', 39, True], ['pass', 40, False]]], 0)],
 [('regression: touchdown requirement',
   [[['pass', 39, False], ['pass', 41, True], ['rush', 40, True], ['rec', 50, False], ['rush', 39, False],
     ['rush', 39, True]]],
   80),
  ('partial repair probe: touchdown requirement',
   [[['rush', 19, True], ['pass', 41, False], ['rush', 5, True], ['pass', 50, True], ['rush', 49, True],
     ['rec', 50, False]]],
   80),
  ('second regression', [[['rec', 49, True], ['rush', 19, False], ['rec', 50, False], ['rush', 20, False]]],
   35),
  ('normal control 1', [[['rush', 5, False], ['rush', 32, False], ['pass', 19, False], ['pass', 40, False]]],
   5),
  ('normal control 2',
   [[['rec', 50, True], ['rush', 5, False], ['rec', 5, True], ['rush', -3, True], ['rec', 5, False],
     ['rush', 40, False]]],
   60),
  ('normal control 3',
   [[['pass', 5, False], ['rush', 20, False], ['rush', -3, False], ['rush', 49, False], ['pass', 41, False]]],
   10),
  ('normal control 4', [[['rush', 53, True], ['rec', 19, False], ['pass', -3, True]]], 35)]]
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: touchdown requirement355Failed
partial repair probe: touchdown requirement10575Failed
second regression355Failed
normal control 16060Passed
normal control 255Passed
normal control 33535Passed
normal control 48585Passed

SHA-256 / a887f8447813fade0a26d82d73fe3f3fa4f677885556a4fdde8e1d3dbec4da1c

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(plays):
    bonus = 0
    for kind, yards, td in plays:
        if (td or kind == 'rec') and yards >= 50:
            bonus += 30
        elif td and yards >= 40:
            bonus += 20
        if kind != 'pass' and yards >= 20:
            bonus += 5
    tds = sum(1 for _, _, td in plays if td)
    if tds >= 3:
        bonus += 20
    return bonus
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: touchdown requirement',
   [[['pass', 44, False], ['rec', 51, False], ['pass', 20, False], ['rec', 5, False]]], 5),
  ('partial repair probe: touchdown requirement',
   [[['pass', 50, True], ['rush', 66, True], ['rush', 41, False], ['rush', 19, False], ['rec', 51, False],
     ['pass', -3, False]]],
   75),
  ('second regression', [[['rec', 19, True], ['rush', 80, False]]], 5),
  ('normal control 1',
   [[['pass', 41, False], ['rush', 20, True], ['rush', -3, True], ['rec', 50, True], ['pass', 20, False]]],
   60),
  ('normal control 2', [[['rec', 39, True]]], 5),
  ('normal control 3', [[['pass', 50, True], ['pass', 19, True], ['rush', 40, False]]], 35),
  ('normal control 4',
   [[['rec', 20, False], ['rush', 5, False], ['rec', 5, True], ['rush', 41, True], ['rec', 51, True]]], 85)],
 [('regression: touchdown requirement', [[['rush', 41, True], ['pass', 51, False]]], 25),
  ('partial repair probe: touchdown requirement',
   [[['rec', 50, False], ['rec', 19, False], ['pass', 49, False]]], 5),
  ('second regression', [[['pass', -3, False], ['pass', 51, False]]], 0),
  ('normal control 1', [[['rush', 5, False], ['pass', 19, False], ['rec', 41, False], ['rush', 49, True]]],
   30),
  ('normal control 2', [[['rec', 51, True]]], 35),
  ('normal control 3', [[['rec', -4, True], ['rec', 20, False], ['rec', 5, True]]], 5),
  ('normal control 4', [[['pass', 41, False], ['pass', 40, False], ['rec', -3, True], ['pass', 19, True]]],
   0)],
 [('regression: touchdown requirement', [[['rush', 51, False], ['pass', 41, True]]], 25),
  ('partial repair probe: touchdown requirement', [[['rec', 51, False]]], 5),
  ('second regression', [[['rush', 40, True], ['rec', 19, False], ['rush', 20, True], ['rush', 50, False]]],
   35),
  ('normal control 1',
   [[['rush', 51, True], ['rec', 40, False], ['rush', 5, True], ['pass', 7, True], ['pass', 49, False]]],
   60),
  ('normal control 2', [[['rec', 19, False]]], 0),
  ('normal control 3', [[['pass', 50, True], ['rec', 50, True], ['rec', 41, True], ['rush', 41, True]]], 135),
  ('normal control 4', [[['rec', -3, False], ['rush', -3, False]]], 0)],
 [('regression: touchdown requirement',
   [[['pass', 5, False], ['rec', 41, False], ['rec', -3, True], ['rec', 40, False], ['pass', 51, False]]],
   10),
  ('partial repair probe: touchdown requirement', [[['rec', 51, False]]], 5),
  ('second regression', [[['rec', 5, False], ['rush', 39, False], ['pass', 51, False]]], 5),
  ('normal control 1', [[['rush', 5, True], ['pass', 5, False], ['rec', 5, True]]], 0),
  ('normal control 2', [[['rush', 33, False], ['pass', 5, False], ['rec', 40, False]]], 10),
  ('normal control 3',
   [[['rec', 41, True], ['rush', 20, False], ['pass', 40, False], ['rec', 39, False], ['rush', 5, False],
     ['rush', 19, False]]],
   35),
  ('normal control 4', [[['pass', 39, True], ['pass', 40, False]]], 0)],
 [('regression: touchdown requirement',
   [[['pass', 39, False], ['pass', 41, True], ['rush', 40, True], ['rec', 50, False], ['rush', 39, False],
     ['rush', 39, True]]],
   80),
  ('partial repair probe: touchdown requirement',
   [[['rush', 19, True], ['pass', 41, False], ['rush', 5, True], ['pass', 50, True], ['rush', 49, True],
     ['rec', 50, False]]],
   80),
  ('second regression', [[['rec', 49, True], ['rush', 19, False], ['rec', 50, False], ['rush', 20, False]]],
   35),
  ('normal control 1', [[['rush', 5, False], ['rush', 32, False], ['pass', 19, False], ['pass', 40, False]]],
   5),
  ('normal control 2',
   [[['rec', 50, True], ['rush', 5, False], ['rec', 5, True], ['rush', -3, True], ['rec', 5, False],
     ['rush', 40, False]]],
   60),
  ('normal control 3',
   [[['pass', 5, False], ['rush', 20, False], ['rush', -3, False], ['rush', 49, False], ['pass', 41, False]]],
   10),
  ('normal control 4', [[['rush', 53, True], ['rec', 19, False], ['pass', -3, True]]], 35)]]
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: touchdown requirement355Failed
partial repair probe: touchdown requirement10575Failed
second regression55Passed
normal control 16060Passed
normal control 255Passed
normal control 33535Passed
normal control 48585Passed

SHA-256 / 53dd7bf5ef830f6b2e47bd09871c6912e8607ba327040640b0e25135f01c2cce

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

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:39.375445+00:00.

Case digest / 186124cee67e0d8d3d00032e31eb0ada496bd9aedc3cc33dc762eeb3cb0c3a5a