{"abstract":"Performances just below a points boundary receive the next point.","category":"Sports scoring and tiebreakers","checks":10,"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.","contract_signature":"event, perf","evaluation_group":"w2-sports-scoring-decathlon-points-table","failed_approach":"Taking the ceiling awards the extra point even more often.","family":"w2-sports-scoring-decathlon-points-table-points-truncation","id":"FA-84306","implementations":{"attempt":{"sha256":"4941a38a1a98b2cb114be130bf8f000cd7ec06bd90fb742bdf885bfa9bcedb94","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(event, perf):\n    TABLE = {'100m': (25.4347, 18, 1.81, 'track'), '400m': (1.53775, 82, 1.81, 'track'),\n             '1500m': (0.03768, 480, 1.85, 'track'), 'long_jump': (0.14354, 220, 1.4, 'jump'),\n             'high_jump': (0.8465, 75, 1.42, 'jump'), 'shot_put': (51.39, 1.5, 1.05, 'throw')}\n    A, B, C, kind = TABLE[event]\n    if kind == 'track':\n        if ':' in perf:\n            m, s = perf.split(':')\n            p = int(m) * 60 + float(s)\n        else:\n            p = float(perf)\n        base = B - p\n    else:\n        p = float(perf)\n        if kind == 'jump':\n            p = round(p * 100)\n        base = p - B\n    if base <= 0:\n        return 0\n    return int(math.ceil(A * base ** C))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('1500m', '5:09.37'), 507),\n  ('regression: points truncation', ('400m', '48.73'), 874),\n  ('variant scenario 1', ('long_jump', '4.80'), 345),\n  ('variant scenario 2', ('100m', '10.72'), 924)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('1500m', '4:30.23'), 743),\n  ('variant scenario 1', ('400m', '54.00'), 640),\n  ('variant scenario 2', ('100m', '12.08'), 635)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('400m', '52.84'), 688),\n  ('variant scenario 1', ('shot_put', '14.30'), 747),\n  ('variant scenario 2', ('400m', '57.67'), 496)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('400m', '57.13'), 516),\n  ('regression: points truncation', ('1500m', '4:24.78'), 779),\n  ('variant scenario 1', ('100m', '12.43'), 569),\n  ('variant scenario 2', ('long_jump', '2.34'), 5)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('shot_put', '6.39'), 272),\n  ('regression: points truncation', ('long_jump', '2.50'), 16),\n  ('variant scenario 1', ('high_jump', '2.16'), 953),\n  ('variant scenario 2', ('400m', '47.27'), 945)]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"6765d93f225effe09f9e75e9ca5af584d500d7277e946af106e6f41d416a2fd7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(event, perf):\n    TABLE = {'100m': (25.4347, 18, 1.81, 'track'), '400m': (1.53775, 82, 1.81, 'track'),\n             '1500m': (0.03768, 480, 1.85, 'track'), 'long_jump': (0.14354, 220, 1.4, 'jump'),\n             'high_jump': (0.8465, 75, 1.42, 'jump'), 'shot_put': (51.39, 1.5, 1.05, 'throw')}\n    A, B, C, kind = TABLE[event]\n    if kind == 'track':\n        if ':' in perf:\n            m, s = perf.split(':')\n            p = int(m) * 60 + float(s)\n        else:\n            p = float(perf)\n        base = B - p\n    else:\n        p = float(perf)\n        if kind == 'jump':\n            p = round(p * 100)\n        base = p - B\n    if base <= 0:\n        return 0\n    return int(round(A * base ** C))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('1500m', '5:09.37'), 507),\n  ('regression: points truncation', ('400m', '48.73'), 874),\n  ('variant scenario 1', ('long_jump', '4.80'), 345),\n  ('variant scenario 2', ('100m', '10.72'), 924)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('1500m', '4:30.23'), 743),\n  ('variant scenario 1', ('400m', '54.00'), 640),\n  ('variant scenario 2', ('100m', '12.08'), 635)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('400m', '52.84'), 688),\n  ('variant scenario 1', ('shot_put', '14.30'), 747),\n  ('variant scenario 2', ('400m', '57.67'), 496)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('400m', '57.13'), 516),\n  ('regression: points truncation', ('1500m', '4:24.78'), 779),\n  ('variant scenario 1', ('100m', '12.43'), 569),\n  ('variant scenario 2', ('long_jump', '2.34'), 5)],\n [('control 100m', ('100m', '10.50'), 975),\n  ('control long jump', ('long_jump', '7.50'), 935),\n  ('control shot put', ('shot_put', '15.00'), 790),\n  ('control 1500m', ('1500m', '4:30.00'), 745),\n  ('boundary slower than base', ('100m', '18.50'), 0),\n  ('control high jump', ('high_jump', '2.01'), 813),\n  ('regression: points truncation', ('shot_put', '6.39'), 272),\n  ('regression: points truncation', ('long_jump', '2.50'), 16),\n  ('variant scenario 1', ('high_jump', '2.16'), 953),\n  ('variant scenario 2', ('400m', '47.27'), 945)]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-sports-scoring-decathlon-points-table-points-truncation","generated_at":"2026-09-29T14:50:29.738981+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Combined-event scoring tables are implemented from formulas with mixed units and orientations.","root_cause":"The formula result is rounded to the nearest integer.","sha256":"dc79cbe61086db806ded5629525a01a9ec91391a00b117e763aae88022fd19e1","title":"Decathlon points rounded instead of truncated · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.975,"exit_code":1,"observations":[{"actual":976,"check":"control 100m","expected":975,"passed":false},{"actual":936,"check":"control long jump","expected":935,"passed":false},{"actual":791,"check":"control shot put","expected":790,"passed":false},{"actual":746,"check":"control 1500m","expected":745,"passed":false},{"actual":0,"check":"boundary slower than base","expected":0,"passed":true},{"actual":814,"check":"control high jump","expected":813,"passed":false},{"actual":508,"check":"regression: points truncation","expected":507,"passed":false},{"actual":875,"check":"regression: points truncation","expected":874,"passed":false},{"actual":346,"check":"variant scenario 1","expected":345,"passed":false},{"actual":925,"check":"variant scenario 2","expected":924,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control 100m\", \"actual\": 976, \"expected\": 975, \"passed\": false}, {\"check\": \"control long jump\", \"actual\": 936, \"expected\": 935, \"passed\": false}, {\"check\": \"control shot put\", \"actual\": 791, \"expected\": 790, \"passed\": false}, {\"check\": \"control 1500m\", \"actual\": 746, \"expected\": 745, \"passed\": false}, {\"check\": \"boundary slower than base\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"control high jump\", \"actual\": 814, \"expected\": 813, \"passed\": false}, {\"check\": \"regression: points truncation\", \"actual\": 508, \"expected\": 507, \"passed\": false}, {\"check\": \"regression: points truncation\", \"actual\": 875, \"expected\": 874, \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": 346, \"expected\": 345, \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": 925, \"expected\": 924, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.12,"exit_code":1,"observations":[{"actual":976,"check":"control 100m","expected":975,"passed":false},{"actual":935,"check":"control long jump","expected":935,"passed":true},{"actual":790,"check":"control shot put","expected":790,"passed":true},{"actual":745,"check":"control 1500m","expected":745,"passed":true},{"actual":0,"check":"boundary slower than base","expected":0,"passed":true},{"actual":813,"check":"control high jump","expected":813,"passed":true},{"actual":507,"check":"regression: points truncation","expected":507,"passed":true},{"actual":875,"check":"regression: points truncation","expected":874,"passed":false},{"actual":345,"check":"variant scenario 1","expected":345,"passed":true},{"actual":924,"check":"variant scenario 2","expected":924,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control 100m\", \"actual\": 976, \"expected\": 975, \"passed\": false}, {\"check\": \"control long jump\", \"actual\": 935, \"expected\": 935, \"passed\": true}, {\"check\": \"control shot put\", \"actual\": 790, \"expected\": 790, \"passed\": true}, {\"check\": \"control 1500m\", \"actual\": 745, \"expected\": 745, \"passed\": true}, {\"check\": \"boundary slower than base\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"control high jump\", \"actual\": 813, \"expected\": 813, \"passed\": true}, {\"check\": \"regression: points truncation\", \"actual\": 507, \"expected\": 507, \"passed\": true}, {\"check\": \"regression: points truncation\", \"actual\": 875, \"expected\": 874, \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": 345, \"expected\": 345, \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": 924, \"expected\": 924, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}