{"abstract":"Two players tied on the top index receive 3 and 2.","category":"Fantasy sports scoring","checks":7,"contract":"Allocate bonus points from a per-match performance index: rank players by index descending; positions 1, 2, 3 earn 3, 2, 1. Tied players all receive the award of the first position their group occupies and consume as many positions as the group size, so a two-way tie for first earns 3 each and the next player 1. Players whose index is 0 or below never receive bonus. Return name -> bonus for awarded players.","contract_signature":"bps","evaluation_group":"w2-fantasy-sports-scoring-bonus-point-ranks","failed_approach":"Capping groups at two players still splits three-way ties.","family":"w2-fantasy-sports-scoring-bonus-point-ranks-tie-grouping","id":"FA-85276","implementations":{"attempt":{"sha256":"c7ea498cdb00ebc07336395f662f2081b44671600bde3538bcfea4e5dd4eb4dc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(bps):\n    ordered = sorted(bps.items(), key=lambda kv: (-kv[1], kv[0]))\n    award = [3, 2, 1]\n    out = {}\n    pos = 0\n    i = 0\n    while i < len(ordered) and pos < 3:\n        j = i\n        while j < len(ordered) and ordered[j][1] == ordered[i][1] and j - i < 2:\n            j += 1\n        for name, v in ordered[i:j]:\n            if v > 0:\n                out[name] = award[pos]\n        pos += j - i\n        i = j\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: tie grouping', [{'bo': 12, 'ce': 34, 'di': -2, 'ek': 39, 'fu': 30, 'gi': 30, 'ho': 27}],\n   {'ce': 2, 'ek': 3, 'fu': 1, 'gi': 1}),\n  ('partial repair probe: tie grouping', [{'ax': -2, 'ce': 30, 'ek': 23, 'fu': 34, 'gi': 30, 'ho': 30}],\n   {'ce': 2, 'fu': 3, 'gi': 2, 'ho': 2}),\n  ('second regression', [{'ax': 27, 'bo': -2, 'ek': 27}], {'ax': 3, 'ek': 3}),\n  ('normal control 1', [{'ax': 4, 'bo': 30, 'ce': 34, 'di': 12, 'ek': 21, 'fu': 12, 'gi': 12, 'ho': 12}],\n   {'bo': 2, 'ce': 3, 'ek': 1}),\n  ('normal control 2', [{'ax': 12, 'bo': 27, 'ce': 32, 'di': 33, 'ek': -2, 'gi': 0, 'ho': 12}],\n   {'bo': 1, 'ce': 2, 'di': 3}),\n  ('normal control 3', [{'ax': 27, 'bo': 19, 'ek': 30, 'fu': 34}], {'ax': 1, 'ek': 2, 'fu': 3}),\n  ('normal control 4', [{'ax': 0, 'ek': 30, 'gi': 34}], {'ek': 2, 'gi': 3})],\n [('regression: tie grouping', [{'ax': 34, 'bo': 30, 'di': 30, 'ek': 0, 'gi': 12, 'ho': 34}],\n   {'ax': 3, 'bo': 1, 'di': 1, 'ho': 3}),\n  ('partial repair probe: tie grouping', [{'ax': 34, 'bo': 34, 'ce': -2, 'di': 30, 'fu': 34, 'gi': 0}],\n   {'ax': 3, 'bo': 3, 'fu': 3}),\n  ('second regression', [{'ax': 30, 'bo': 27, 'di': 34, 'ek': -3, 'gi': 30}], {'ax': 2, 'di': 3, 'gi': 2}),\n  ('normal control 1', [{'ce': 30, 'di': 0, 'ek': -2}], {'ce': 3}),\n  ('normal control 2', [{'ax': 27, 'ce': -2, 'ek': 3, 'ho': 34}], {'ax': 2, 'ek': 1, 'ho': 3}),\n  ('normal control 3', [{'ek': 0, 'gi': 30, 'ho': 34}], {'gi': 2, 'ho': 3}),\n  ('normal control 4', [{'ax': -2, 'ce': 34, 'ek': -2, 'fu': 8, 'gi': -2}], {'ce': 3, 'fu': 2})],\n [('regression: tie grouping', [{'ax': 0, 'ce': 12, 'gi': 12}], {'ce': 3, 'gi': 3}),\n  ('partial repair probe: tie grouping', [{'bo': 34, 'di': 12, 'ek': 34, 'fu': 30, 'gi': 34, 'ho': 30}],\n   {'bo': 3, 'ek': 3, 'gi': 3}),\n  ('second regression', [{'ax': 34, 'bo': -3, 'ek': 34, 'ho': 30}], {'ax': 3, 'ek': 3, 'ho': 1}),\n  ('normal control 1', [{'ce': 12, 'fu': 30, 'gi': 0, 'ho': 35}], {'ce': 1, 'fu': 2, 'ho': 3}),\n  ('normal control 2', [{'bo': 21, 'di': 30, 'ho': 0}], {'bo': 2, 'di': 3}),\n  ('normal control 3', [{'di': 12, 'ek': 27, 'gi': 6}], {'di': 2, 'ek': 3, 'gi': 1}),\n  ('normal control 4', [{'di': 30, 'ek': 38, 'gi': 23}], {'di': 2, 'ek': 3, 'gi': 1})],\n [('regression: tie grouping', [{'bo': 34, 'ce': 30, 'di': 33, 'ek': 0, 'fu': 30, 'gi': -2, 'ho': 34}],\n   {'bo': 3, 'di': 1, 'ho': 3}),\n  ('partial repair probe: tie grouping', [{'ax': 34, 'di': 34, 'ek': 6, 'fu': 12, 'gi': 30, 'ho': 34}],\n   {'ax': 3, 'di': 3, 'ho': 3}),\n  ('second regression', [{'ax': 30, 'bo': 12, 'ce': 31, 'di': 27, 'ek': 27, 'gi': 12, 'ho': 12}],\n   {'ax': 2, 'ce': 3, 'di': 1, 'ek': 1}),\n  ('normal control 1', [{'bo': -2, 'di': -2, 'gi': 10, 'ho': 12}], {'gi': 2, 'ho': 3}),\n  ('normal control 2', [{'ax': 27, 'bo': 13, 'ce': 34, 'ek': -2, 'fu': 31, 'gi': 27, 'ho': 30}],\n   {'ce': 3, 'fu': 2, 'ho': 1}),\n  ('normal control 3', [{'bo': 34, 'ce': 0, 'ek': 30}], {'bo': 3, 'ek': 2}),\n  ('normal control 4', [{'ce': 34, 'di': -2, 'fu': 33, 'gi': 12, 'ho': 27}], {'ce': 3, 'fu': 2, 'ho': 1})],\n [('regression: tie grouping', [{'ax': 12, 'ce': 30, 'di': 34, 'ek': 0, 'gi': -2, 'ho': 30}],\n   {'ce': 2, 'di': 3, 'ho': 2}),\n  ('partial repair probe: tie grouping',\n   [{'ax': 30, 'bo': 30, 'ce': 30, 'di': -2, 'ek': 34, 'fu': 0, 'gi': 30, 'ho': 30}],\n   {'ax': 2, 'bo': 2, 'ce': 2, 'ek': 3, 'gi': 2, 'ho': 2}),\n  ('second regression', [{'ax': 0, 'bo': 34, 'di': 0, 'ek': 3, 'fu': 34, 'ho': 0}],\n   {'bo': 3, 'ek': 1, 'fu': 3}),\n  ('normal control 1', [{'ax': 12, 'bo': 0, 'di': 8, 'ho': 14}], {'ax': 2, 'di': 1, 'ho': 3}),\n  ('normal control 2', [{'ce': -2, 'fu': -2, 'gi': -2}], {}),\n  ('normal control 3', [{'ax': 27, 'di': -2, 'gi': 34, 'ho': -2}], {'ax': 2, 'gi': 3}),\n  ('normal control 4', [{'ax': 0, 'ce': 12, 'di': 30}], {'ce': 2, 'di': 3})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*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":"4a23f978d4fff14e70212df7fd30a0de9d67d5ceeedf21d827540215ab25fa2c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(bps):\n    ordered = sorted(bps.items(), key=lambda kv: (-kv[1], kv[0]))\n    award = [3, 2, 1]\n    out = {}\n    pos = 0\n    i = 0\n    while i < len(ordered) and pos < 3:\n        j = i\n        j += 1\n        for name, v in ordered[i:j]:\n            if v > 0:\n                out[name] = award[pos]\n        pos += j - i\n        i = j\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: tie grouping', [{'bo': 12, 'ce': 34, 'di': -2, 'ek': 39, 'fu': 30, 'gi': 30, 'ho': 27}],\n   {'ce': 2, 'ek': 3, 'fu': 1, 'gi': 1}),\n  ('partial repair probe: tie grouping', [{'ax': -2, 'ce': 30, 'ek': 23, 'fu': 34, 'gi': 30, 'ho': 30}],\n   {'ce': 2, 'fu': 3, 'gi': 2, 'ho': 2}),\n  ('second regression', [{'ax': 27, 'bo': -2, 'ek': 27}], {'ax': 3, 'ek': 3}),\n  ('normal control 1', [{'ax': 4, 'bo': 30, 'ce': 34, 'di': 12, 'ek': 21, 'fu': 12, 'gi': 12, 'ho': 12}],\n   {'bo': 2, 'ce': 3, 'ek': 1}),\n  ('normal control 2', [{'ax': 12, 'bo': 27, 'ce': 32, 'di': 33, 'ek': -2, 'gi': 0, 'ho': 12}],\n   {'bo': 1, 'ce': 2, 'di': 3}),\n  ('normal control 3', [{'ax': 27, 'bo': 19, 'ek': 30, 'fu': 34}], {'ax': 1, 'ek': 2, 'fu': 3}),\n  ('normal control 4', [{'ax': 0, 'ek': 30, 'gi': 34}], {'ek': 2, 'gi': 3})],\n [('regression: tie grouping', [{'ax': 34, 'bo': 30, 'di': 30, 'ek': 0, 'gi': 12, 'ho': 34}],\n   {'ax': 3, 'bo': 1, 'di': 1, 'ho': 3}),\n  ('partial repair probe: tie grouping', [{'ax': 34, 'bo': 34, 'ce': -2, 'di': 30, 'fu': 34, 'gi': 0}],\n   {'ax': 3, 'bo': 3, 'fu': 3}),\n  ('second regression', [{'ax': 30, 'bo': 27, 'di': 34, 'ek': -3, 'gi': 30}], {'ax': 2, 'di': 3, 'gi': 2}),\n  ('normal control 1', [{'ce': 30, 'di': 0, 'ek': -2}], {'ce': 3}),\n  ('normal control 2', [{'ax': 27, 'ce': -2, 'ek': 3, 'ho': 34}], {'ax': 2, 'ek': 1, 'ho': 3}),\n  ('normal control 3', [{'ek': 0, 'gi': 30, 'ho': 34}], {'gi': 2, 'ho': 3}),\n  ('normal control 4', [{'ax': -2, 'ce': 34, 'ek': -2, 'fu': 8, 'gi': -2}], {'ce': 3, 'fu': 2})],\n [('regression: tie grouping', [{'ax': 0, 'ce': 12, 'gi': 12}], {'ce': 3, 'gi': 3}),\n  ('partial repair probe: tie grouping', [{'bo': 34, 'di': 12, 'ek': 34, 'fu': 30, 'gi': 34, 'ho': 30}],\n   {'bo': 3, 'ek': 3, 'gi': 3}),\n  ('second regression', [{'ax': 34, 'bo': -3, 'ek': 34, 'ho': 30}], {'ax': 3, 'ek': 3, 'ho': 1}),\n  ('normal control 1', [{'ce': 12, 'fu': 30, 'gi': 0, 'ho': 35}], {'ce': 1, 'fu': 2, 'ho': 3}),\n  ('normal control 2', [{'bo': 21, 'di': 30, 'ho': 0}], {'bo': 2, 'di': 3}),\n  ('normal control 3', [{'di': 12, 'ek': 27, 'gi': 6}], {'di': 2, 'ek': 3, 'gi': 1}),\n  ('normal control 4', [{'di': 30, 'ek': 38, 'gi': 23}], {'di': 2, 'ek': 3, 'gi': 1})],\n [('regression: tie grouping', [{'bo': 34, 'ce': 30, 'di': 33, 'ek': 0, 'fu': 30, 'gi': -2, 'ho': 34}],\n   {'bo': 3, 'di': 1, 'ho': 3}),\n  ('partial repair probe: tie grouping', [{'ax': 34, 'di': 34, 'ek': 6, 'fu': 12, 'gi': 30, 'ho': 34}],\n   {'ax': 3, 'di': 3, 'ho': 3}),\n  ('second regression', [{'ax': 30, 'bo': 12, 'ce': 31, 'di': 27, 'ek': 27, 'gi': 12, 'ho': 12}],\n   {'ax': 2, 'ce': 3, 'di': 1, 'ek': 1}),\n  ('normal control 1', [{'bo': -2, 'di': -2, 'gi': 10, 'ho': 12}], {'gi': 2, 'ho': 3}),\n  ('normal control 2', [{'ax': 27, 'bo': 13, 'ce': 34, 'ek': -2, 'fu': 31, 'gi': 27, 'ho': 30}],\n   {'ce': 3, 'fu': 2, 'ho': 1}),\n  ('normal control 3', [{'bo': 34, 'ce': 0, 'ek': 30}], {'bo': 3, 'ek': 2}),\n  ('normal control 4', [{'ce': 34, 'di': -2, 'fu': 33, 'gi': 12, 'ho': 27}], {'ce': 3, 'fu': 2, 'ho': 1})],\n [('regression: tie grouping', [{'ax': 12, 'ce': 30, 'di': 34, 'ek': 0, 'gi': -2, 'ho': 30}],\n   {'ce': 2, 'di': 3, 'ho': 2}),\n  ('partial repair probe: tie grouping',\n   [{'ax': 30, 'bo': 30, 'ce': 30, 'di': -2, 'ek': 34, 'fu': 0, 'gi': 30, 'ho': 30}],\n   {'ax': 2, 'bo': 2, 'ce': 2, 'ek': 3, 'gi': 2, 'ho': 2}),\n  ('second regression', [{'ax': 0, 'bo': 34, 'di': 0, 'ek': 3, 'fu': 34, 'ho': 0}],\n   {'bo': 3, 'ek': 1, 'fu': 3}),\n  ('normal control 1', [{'ax': 12, 'bo': 0, 'di': 8, 'ho': 14}], {'ax': 2, 'di': 1, 'ho': 3}),\n  ('normal control 2', [{'ce': -2, 'fu': -2, 'gi': -2}], {}),\n  ('normal control 3', [{'ax': 27, 'di': -2, 'gi': 34, 'ho': -2}], {'ax': 2, 'gi': 3}),\n  ('normal control 4', [{'ax': 0, 'ce': 12, 'di': 30}], {'ce': 2, 'di': 3})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*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":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-fantasy-sports-scoring-bonus-point-ranks-tie-grouping","generated_at":"2026-09-29T14:50:38.961706+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Bonus allocation with ties is a compact but contested rule in football fantasy games.","root_cause":"Each player is processed as its own group, so name order breaks ties.","sha256":"394031d618e5c599bba422a2e91c69e06000a7824c261fe12a93f85769c7999d","title":"Tied indices split by name order · 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.813,"exit_code":1,"observations":[{"actual":{"ce":2,"ek":3,"fu":1,"gi":1},"check":"regression: tie grouping","expected":{"ce":2,"ek":3,"fu":1,"gi":1},"passed":true},{"actual":{"ce":2,"fu":3,"gi":2},"check":"partial repair probe: tie grouping","expected":{"ce":2,"fu":3,"gi":2,"ho":2},"passed":false},{"actual":{"ax":3,"ek":3},"check":"second regression","expected":{"ax":3,"ek":3},"passed":true},{"actual":{"bo":2,"ce":3,"ek":1},"check":"normal control 1","expected":{"bo":2,"ce":3,"ek":1},"passed":true},{"actual":{"bo":1,"ce":2,"di":3},"check":"normal control 2","expected":{"bo":1,"ce":2,"di":3},"passed":true},{"actual":{"ax":1,"ek":2,"fu":3},"check":"normal control 3","expected":{"ax":1,"ek":2,"fu":3},"passed":true},{"actual":{"ek":2,"gi":3},"check":"normal control 4","expected":{"ek":2,"gi":3},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tie grouping\", \"actual\": {\"ek\": 3, \"ce\": 2, \"fu\": 1, \"gi\": 1}, \"expected\": {\"ce\": 2, \"ek\": 3, \"fu\": 1, \"gi\": 1}, \"passed\": true}, {\"check\": \"partial repair probe: tie grouping\", \"actual\": {\"fu\": 3, \"ce\": 2, \"gi\": 2}, \"expected\": {\"ce\": 2, \"fu\": 3, \"gi\": 2, \"ho\": 2}, \"passed\": false}, {\"check\": \"second regression\", \"actual\": {\"ax\": 3, \"ek\": 3}, \"expected\": {\"ax\": 3, \"ek\": 3}, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": {\"ce\": 3, \"bo\": 2, \"ek\": 1}, \"expected\": {\"bo\": 2, \"ce\": 3, \"ek\": 1}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"di\": 3, \"ce\": 2, \"bo\": 1}, \"expected\": {\"bo\": 1, \"ce\": 2, \"di\": 3}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"fu\": 3, \"ek\": 2, \"ax\": 1}, \"expected\": {\"ax\": 1, \"ek\": 2, \"fu\": 3}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"gi\": 3, \"ek\": 2}, \"expected\": {\"ek\": 2, \"gi\": 3}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.674,"exit_code":1,"observations":[{"actual":{"ce":2,"ek":3,"fu":1},"check":"regression: tie grouping","expected":{"ce":2,"ek":3,"fu":1,"gi":1},"passed":false},{"actual":{"ce":2,"fu":3,"gi":1},"check":"partial repair probe: tie grouping","expected":{"ce":2,"fu":3,"gi":2,"ho":2},"passed":false},{"actual":{"ax":3,"ek":2},"check":"second regression","expected":{"ax":3,"ek":3},"passed":false},{"actual":{"bo":2,"ce":3,"ek":1},"check":"normal control 1","expected":{"bo":2,"ce":3,"ek":1},"passed":true},{"actual":{"bo":1,"ce":2,"di":3},"check":"normal control 2","expected":{"bo":1,"ce":2,"di":3},"passed":true},{"actual":{"ax":1,"ek":2,"fu":3},"check":"normal control 3","expected":{"ax":1,"ek":2,"fu":3},"passed":true},{"actual":{"ek":2,"gi":3},"check":"normal control 4","expected":{"ek":2,"gi":3},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tie grouping\", \"actual\": {\"ek\": 3, \"ce\": 2, \"fu\": 1}, \"expected\": {\"ce\": 2, \"ek\": 3, \"fu\": 1, \"gi\": 1}, \"passed\": false}, {\"check\": \"partial repair probe: tie grouping\", \"actual\": {\"fu\": 3, \"ce\": 2, \"gi\": 1}, \"expected\": {\"ce\": 2, \"fu\": 3, \"gi\": 2, \"ho\": 2}, \"passed\": false}, {\"check\": \"second regression\", \"actual\": {\"ax\": 3, \"ek\": 2}, \"expected\": {\"ax\": 3, \"ek\": 3}, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": {\"ce\": 3, \"bo\": 2, \"ek\": 1}, \"expected\": {\"bo\": 2, \"ce\": 3, \"ek\": 1}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"di\": 3, \"ce\": 2, \"bo\": 1}, \"expected\": {\"bo\": 1, \"ce\": 2, \"di\": 3}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"fu\": 3, \"ek\": 2, \"ax\": 1}, \"expected\": {\"ax\": 1, \"ek\": 2, \"fu\": 3}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"gi\": 3, \"ek\": 2}, \"expected\": {\"ek\": 2, \"gi\": 3}, \"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."}}