{"abstract":"A tied rank consumes only one scoring position.","category":"Voting rule computation","checks":6,"contract":"Groups partition all m candidates in rank order. Award each member the exact mean of Borda scores m-1-i for occupied positions, returned as strings in candidate order.","contract_signature":"m, groups","evaluation_group":"model-100be3e49ffffc34","failed_approach":"Assigning the highest occupied score to every tied candidate inflates tied scores.","family":"z-voting_rules-tied-rank-points","id":"FA-12776","implementations":{"attempt":{"sha256":"f123264b7c6964212d0e8c18b4a819b791fa002b8c9408d8500b2b7bd0ad5ddb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(m, groups):\n    out=['0']*m; pos=0\n    for g in groups:\n        for c in g: out[c]=str(m-1-pos)\n        pos+=len(g)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('top tie consumes positions', solve(3,[[0,1],[2]]), ['3/2','3/2','0'])\ncheck('bottom tie', solve(3,[[0],[1,2]]), ['2','1/2','1/2'])\ncheck('all tied varied size', solve(N+1,[list(range(N+1))]), [str(Fraction(N,2))]*(N+1))\ncheck('no ties', solve(3,[[2],[0],[1]]), ['1','0','2'])\ncheck('one candidate', solve(1,[[0]]), ['0'])\ncheck('two distinct ties', solve(4,[[0,2],[1,3]]), ['5/2','1/2','5/2','1/2'])\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":"6e45e47fa16c2d06efce9b2b418c15f25391bb9ecf6e3a41ec6de228da96149e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(m, groups):\n    out=['0']*m\n    for pos,g in enumerate(groups):\n        for c in g: out[c]=str(m-1-pos)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('top tie consumes positions', solve(3,[[0,1],[2]]), ['3/2','3/2','0'])\ncheck('bottom tie', solve(3,[[0],[1,2]]), ['2','1/2','1/2'])\ncheck('all tied varied size', solve(N+1,[list(range(N+1))]), [str(Fraction(N,2))]*(N+1))\ncheck('no ties', solve(3,[[2],[0],[1]]), ['1','0','2'])\ncheck('one candidate', solve(1,[[0]]), ['0'])\ncheck('two distinct ties', solve(4,[[0,2],[1,3]]), ['5/2','1/2','5/2','1/2'])\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":"Abstract counting rules only; excludes jurisdictional law, ballot authentication and election operations. 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":"z-voting_rules-tied-rank-points","generated_at":"2026-09-29T14:39:00.129327+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic toy ballot model makes the stated counting convention executable.","root_cause":"Tie groups advance rank by one instead of by group size.","sha256":"a6fcee379f1a6ec596176d1d532fadbc8dcfe8695da141080c006eb53da037e4","title":"A tied rank consumes only one scoring position · 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":49.157,"exit_code":1,"observations":[{"actual":["2","2","0"],"check":"top tie consumes positions","expected":["3/2","3/2","0"],"passed":false},{"actual":["2","1","1"],"check":"bottom tie","expected":["2","1/2","1/2"],"passed":false},{"actual":["1","1"],"check":"all tied varied size","expected":["1/2","1/2"],"passed":false},{"actual":["1","0","2"],"check":"no ties","expected":["1","0","2"],"passed":true},{"actual":["0"],"check":"one candidate","expected":["0"],"passed":true},{"actual":["3","1","3","1"],"check":"two distinct ties","expected":["5/2","1/2","5/2","1/2"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"top tie consumes positions\", \"actual\": [\"2\", \"2\", \"0\"], \"expected\": [\"3/2\", \"3/2\", \"0\"], \"passed\": false}, {\"check\": \"bottom tie\", \"actual\": [\"2\", \"1\", \"1\"], \"expected\": [\"2\", \"1/2\", \"1/2\"], \"passed\": false}, {\"check\": \"all tied varied size\", \"actual\": [\"1\", \"1\"], \"expected\": [\"1/2\", \"1/2\"], \"passed\": false}, {\"check\": \"no ties\", \"actual\": [\"1\", \"0\", \"2\"], \"expected\": [\"1\", \"0\", \"2\"], \"passed\": true}, {\"check\": \"one candidate\", \"actual\": [\"0\"], \"expected\": [\"0\"], \"passed\": true}, {\"check\": \"two distinct ties\", \"actual\": [\"3\", \"1\", \"3\", \"1\"], \"expected\": [\"5/2\", \"1/2\", \"5/2\", \"1/2\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":48.729,"exit_code":1,"observations":[{"actual":["2","2","1"],"check":"top tie consumes positions","expected":["3/2","3/2","0"],"passed":false},{"actual":["2","1","1"],"check":"bottom tie","expected":["2","1/2","1/2"],"passed":false},{"actual":["1","1"],"check":"all tied varied size","expected":["1/2","1/2"],"passed":false},{"actual":["1","0","2"],"check":"no ties","expected":["1","0","2"],"passed":true},{"actual":["0"],"check":"one candidate","expected":["0"],"passed":true},{"actual":["3","2","3","2"],"check":"two distinct ties","expected":["5/2","1/2","5/2","1/2"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"top tie consumes positions\", \"actual\": [\"2\", \"2\", \"1\"], \"expected\": [\"3/2\", \"3/2\", \"0\"], \"passed\": false}, {\"check\": \"bottom tie\", \"actual\": [\"2\", \"1\", \"1\"], \"expected\": [\"2\", \"1/2\", \"1/2\"], \"passed\": false}, {\"check\": \"all tied varied size\", \"actual\": [\"1\", \"1\"], \"expected\": [\"1/2\", \"1/2\"], \"passed\": false}, {\"check\": \"no ties\", \"actual\": [\"1\", \"0\", \"2\"], \"expected\": [\"1\", \"0\", \"2\"], \"passed\": true}, {\"check\": \"one candidate\", \"actual\": [\"0\"], \"expected\": [\"0\"], \"passed\": true}, {\"check\": \"two distinct ties\", \"actual\": [\"3\", \"2\", \"3\", \"2\"], \"expected\": [\"5/2\", \"1/2\", \"5/2\", \"1/2\"], \"passed\": false}], \"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."}}