FA-84311 / Sports scoring and tiebreakers / Open access
Jumps scored in metres instead of centimetres · case 01
Every jump scores zero or is off by a point after conversion.
ROOT CAUSE
The jump performance is left in metres, so the base is negative.
VERIFIED REPAIR
Convert jumps to whole centimetres with rounding.
Unsuccessful approach: Truncating p * 100 turns 2.01 m into 200 cm because of binary floating point.
Case contract
Combined-events points. Coefficients (A, B, C, kind): 100m (25.4347, 18, 1.81, track), 400m (1.53775, 82, 1.81, track), 1500m (0.03768, 480, 1.85, track), long_jump (0.14354, 220, 1.4, jump), high_jump (0.8465, 75, 1.42, jump), shot_put (51.39, 1.5, 1.05, throw). Track performances are seconds, 1500m as "m:ss.hh"; jumps are given in metres but scored in whole centimetres (rounded); throws in metres. Track points = floor(A * (B - P) ** C), field points = floor(A * (P - B) ** C); a non-positive base scores 0.
Why this case matters
Combined-event scoring tables are implemented from formulas with mixed units and orientations.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(event, perf):
TABLE = {'100m': (25.4347, 18, 1.81, 'track'), '400m': (1.53775, 82, 1.81, 'track'),
'1500m': (0.03768, 480, 1.85, 'track'), 'long_jump': (0.14354, 220, 1.4, 'jump'),
'high_jump': (0.8465, 75, 1.42, 'jump'), 'shot_put': (51.39, 1.5, 1.05, 'throw')}
A, B, C, kind = TABLE[event]
if kind == 'track':
if ':' in perf:
m, s = perf.split(':')
p = int(m) * 60 + float(s)
else:
p = float(perf)
base = B - p
else:
p = float(perf)
if kind == 'jump':
p = p
base = p - B
if base <= 0:
return 0
return int(math.floor(A * base ** C))
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 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.96'), 767),
('regression: jump centimetres', ('long_jump', '4.77'), 339),
('variant scenario 1', ('400m', '56.96'), 522),
('variant scenario 2', ('shot_put', '13.92'), 723)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.87'), 687),
('regression: jump centimetres', ('high_jump', '2.03'), 831),
('variant scenario 1', ('1500m', '4:51.27'), 611),
('variant scenario 2', ('100m', '11.99'), 653)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.83'), 653),
('regression: jump centimetres', ('high_jump', '2.07'), 868),
('variant scenario 1', ('400m', '59.82'), 419),
('variant scenario 2', ('100m', '12.37'), 580)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('long_jump', '5.64'), 510),
('regression: jump centimetres', ('long_jump', '4.02'), 209),
('variant scenario 1', ('shot_put', '12.10'), 612),
('variant scenario 2', ('high_jump', '1.75'), 585)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.76'), 593),
('regression: jump centimetres', ('high_jump', '2.01'), 813),
('variant scenario 1', ('400m', '51.67'), 739),
('variant scenario 2', ('high_jump', '2.18'), 973)]]
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 100m | 975 | 975 | Passed |
| control long jump | 0 | 935 | Failed |
| control shot put | 790 | 790 | Passed |
| control 1500m | 745 | 745 | Passed |
| boundary slower than base | 0 | 0 | Passed |
| control high jump | 0 | 813 | Failed |
| regression: jump centimetres | 0 | 767 | Failed |
| regression: jump centimetres | 0 | 339 | Failed |
| variant scenario 1 | 522 | 522 | Passed |
| variant scenario 2 | 723 | 723 | Passed |
SHA-256 / 1fe23fa40a47cc22be5a91e5f4a0675ad0959d587aba2c19fb3d35464a4b7c23
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(event, perf):
TABLE = {'100m': (25.4347, 18, 1.81, 'track'), '400m': (1.53775, 82, 1.81, 'track'),
'1500m': (0.03768, 480, 1.85, 'track'), 'long_jump': (0.14354, 220, 1.4, 'jump'),
'high_jump': (0.8465, 75, 1.42, 'jump'), 'shot_put': (51.39, 1.5, 1.05, 'throw')}
A, B, C, kind = TABLE[event]
if kind == 'track':
if ':' in perf:
m, s = perf.split(':')
p = int(m) * 60 + float(s)
else:
p = float(perf)
base = B - p
else:
p = float(perf)
if kind == 'jump':
p = int(p * 100)
base = p - B
if base <= 0:
return 0
return int(math.floor(A * base ** C))
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 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.96'), 767),
('regression: jump centimetres', ('long_jump', '4.77'), 339),
('variant scenario 1', ('400m', '56.96'), 522),
('variant scenario 2', ('shot_put', '13.92'), 723)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.87'), 687),
('regression: jump centimetres', ('high_jump', '2.03'), 831),
('variant scenario 1', ('1500m', '4:51.27'), 611),
('variant scenario 2', ('100m', '11.99'), 653)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.83'), 653),
('regression: jump centimetres', ('high_jump', '2.07'), 868),
('variant scenario 1', ('400m', '59.82'), 419),
('variant scenario 2', ('100m', '12.37'), 580)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('long_jump', '5.64'), 510),
('regression: jump centimetres', ('long_jump', '4.02'), 209),
('variant scenario 1', ('shot_put', '12.10'), 612),
('variant scenario 2', ('high_jump', '1.75'), 585)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.76'), 593),
('regression: jump centimetres', ('high_jump', '2.01'), 813),
('variant scenario 1', ('400m', '51.67'), 739),
('variant scenario 2', ('high_jump', '2.18'), 973)]]
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 100m | 975 | 975 | Passed |
| control long jump | 935 | 935 | Passed |
| control shot put | 790 | 790 | Passed |
| control 1500m | 745 | 745 | Passed |
| boundary slower than base | 0 | 0 | Passed |
| control high jump | 803 | 813 | Failed |
| regression: jump centimetres | 767 | 767 | Passed |
| regression: jump centimetres | 337 | 339 | Failed |
| variant scenario 1 | 522 | 522 | Passed |
| variant scenario 2 | 723 | 723 | Passed |
SHA-256 / 0657d844a6f29b54a591c36624208348fc7ca0c5b5fe8581a0116ab7a7416c71
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(event, perf):
TABLE = {'100m': (25.4347, 18, 1.81, 'track'), '400m': (1.53775, 82, 1.81, 'track'),
'1500m': (0.03768, 480, 1.85, 'track'), 'long_jump': (0.14354, 220, 1.4, 'jump'),
'high_jump': (0.8465, 75, 1.42, 'jump'), 'shot_put': (51.39, 1.5, 1.05, 'throw')}
A, B, C, kind = TABLE[event]
if kind == 'track':
if ':' in perf:
m, s = perf.split(':')
p = int(m) * 60 + float(s)
else:
p = float(perf)
base = B - p
else:
p = float(perf)
if kind == 'jump':
p = round(p * 100)
base = p - B
if base <= 0:
return 0
return int(math.floor(A * base ** C))
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 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.96'), 767),
('regression: jump centimetres', ('long_jump', '4.77'), 339),
('variant scenario 1', ('400m', '56.96'), 522),
('variant scenario 2', ('shot_put', '13.92'), 723)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.87'), 687),
('regression: jump centimetres', ('high_jump', '2.03'), 831),
('variant scenario 1', ('1500m', '4:51.27'), 611),
('variant scenario 2', ('100m', '11.99'), 653)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.83'), 653),
('regression: jump centimetres', ('high_jump', '2.07'), 868),
('variant scenario 1', ('400m', '59.82'), 419),
('variant scenario 2', ('100m', '12.37'), 580)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('long_jump', '5.64'), 510),
('regression: jump centimetres', ('long_jump', '4.02'), 209),
('variant scenario 1', ('shot_put', '12.10'), 612),
('variant scenario 2', ('high_jump', '1.75'), 585)],
[('control 100m', ('100m', '10.50'), 975),
('control long jump', ('long_jump', '7.50'), 935),
('control shot put', ('shot_put', '15.00'), 790),
('control 1500m', ('1500m', '4:30.00'), 745),
('boundary slower than base', ('100m', '18.50'), 0),
('control high jump', ('high_jump', '2.01'), 813),
('regression: jump centimetres', ('high_jump', '1.76'), 593),
('regression: jump centimetres', ('high_jump', '2.01'), 813),
('variant scenario 1', ('400m', '51.67'), 739),
('variant scenario 2', ('high_jump', '2.18'), 973)]]
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 100m | 975 | 975 | Passed |
| control long jump | 935 | 935 | Passed |
| control shot put | 790 | 790 | Passed |
| control 1500m | 745 | 745 | Passed |
| boundary slower than base | 0 | 0 | Passed |
| control high jump | 813 | 813 | Passed |
| regression: jump centimetres | 767 | 767 | Passed |
| regression: jump centimetres | 339 | 339 | Passed |
| variant scenario 1 | 522 | 522 | Passed |
| variant scenario 2 | 723 | 723 | Passed |
SHA-256 / 604274185d36bccfe485916ac4aa7ae24a4809f9b9aee605133d227b1562a320
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.782805+00:00.
Case digest / 6d9acd8d0b594dd493ffd965400697fc5e94525e73c634b8d04744c8f1bf50f8