{"abstract":"Truncated rankings change the Borda point scale.","category":"Voting rule computation","checks":6,"contract":"For unique candidate names and a unique partial ranking, return scores in candidate order; ranked position i earns m-1-i and omitted candidates earn zero.","evaluation_group":"model-f836da41740928d7","failed_approach":"Padding unranked candidates assigns them arbitrary positive points.","family":"z-voting_rules-borda-truncation","id":"FA-12741","implementations":{"attempt":{"sha256":"80c592578a8513a3d3613d3a21f0bdadd04160974eaa52672de202149ed63203","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(candidates, ranking):\n    full = ranking + [c for c in candidates if c not in ranking]\n    return [len(candidates)-1-full.index(c) for c in candidates]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncs = list(range(N+3))\ncheck('single ranked candidate', solve(cs,[0]), [N+2]+[0]*(N+2))\ncheck('empty ranking', solve(cs,[]), [0]*len(cs))\ncheck('two ranked candidates', solve(cs,[1,0]), [N+1,N+2]+[0]*(N+1))\ncheck('complete ranking', solve([0,1,2],[2,0,1]), [1,0,2])\ncheck('single candidate', solve([0],[0]), [0])\ncheck('omitted candidate retains zero', solve([0,1,2,3],[3,2]), [0,0,2,3])\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":"ef8c745d811d166b021d4f0ec75ca0127b8f716043453d1f26e2da18dd69c5e3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(candidates, ranking):\n    return [len(ranking)-1-ranking.index(c) if c in ranking else 0 for c in candidates]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncs = list(range(N+3))\ncheck('single ranked candidate', solve(cs,[0]), [N+2]+[0]*(N+2))\ncheck('empty ranking', solve(cs,[]), [0]*len(cs))\ncheck('two ranked candidates', solve(cs,[1,0]), [N+1,N+2]+[0]*(N+1))\ncheck('complete ranking', solve([0,1,2],[2,0,1]), [1,0,2])\ncheck('single candidate', solve([0],[0]), [0])\ncheck('omitted candidate retains zero', solve([0,1,2,3],[3,2]), [0,0,2,3])\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"},"fixed":{"sha256":"7efc2fb0a4b1f8d34bba042e853686bbada3c8b09823af8951330e090c6f4c4d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(candidates, ranking):\n    return [len(candidates)-1-ranking.index(c) if c in ranking else 0 for c in candidates]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncs = list(range(N+3))\ncheck('single ranked candidate', solve(cs,[0]), [N+2]+[0]*(N+2))\ncheck('empty ranking', solve(cs,[]), [0]*len(cs))\ncheck('two ranked candidates', solve(cs,[1,0]), [N+1,N+2]+[0]*(N+1))\ncheck('complete ranking', solve([0,1,2],[2,0,1]), [1,0,2])\ncheck('single candidate', solve([0],[0]), [0])\ncheck('omitted candidate retains zero', solve([0,1,2,3],[3,2]), [0,0,2,3])\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-borda-truncation","generated_at":"2026-09-29T14:38:59.697261+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.","repair":"Award m-1-position to ranked candidates, and zero to unranked candidates.","root_cause":"The number ranked replaces the fixed candidate count.","sha256":"c406bba74456505f5811b542d2c7841d5616f78151a7e091210920d2375a5b1c","title":"Truncated rankings change the Borda point scale · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.427,"exit_code":1,"observations":[{"actual":[3,2,1,0],"check":"single ranked candidate","expected":[3,0,0,0],"passed":false},{"actual":[3,2,1,0],"check":"empty ranking","expected":[0,0,0,0],"passed":false},{"actual":[2,3,1,0],"check":"two ranked candidates","expected":[2,3,0,0],"passed":false},{"actual":[1,0,2],"check":"complete ranking","expected":[1,0,2],"passed":true},{"actual":[0],"check":"single candidate","expected":[0],"passed":true},{"actual":[1,0,2,3],"check":"omitted candidate retains zero","expected":[0,0,2,3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"single ranked candidate\", \"actual\": [3, 2, 1, 0], \"expected\": [3, 0, 0, 0], \"passed\": false}, {\"check\": \"empty ranking\", \"actual\": [3, 2, 1, 0], \"expected\": [0, 0, 0, 0], \"passed\": false}, {\"check\": \"two ranked candidates\", \"actual\": [2, 3, 1, 0], \"expected\": [2, 3, 0, 0], \"passed\": false}, {\"check\": \"complete ranking\", \"actual\": [1, 0, 2], \"expected\": [1, 0, 2], \"passed\": true}, {\"check\": \"single candidate\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"omitted candidate retains zero\", \"actual\": [1, 0, 2, 3], \"expected\": [0, 0, 2, 3], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.169,"exit_code":1,"observations":[{"actual":[0,0,0,0],"check":"single ranked candidate","expected":[3,0,0,0],"passed":false},{"actual":[0,0,0,0],"check":"empty ranking","expected":[0,0,0,0],"passed":true},{"actual":[0,1,0,0],"check":"two ranked candidates","expected":[2,3,0,0],"passed":false},{"actual":[1,0,2],"check":"complete ranking","expected":[1,0,2],"passed":true},{"actual":[0],"check":"single candidate","expected":[0],"passed":true},{"actual":[0,0,0,1],"check":"omitted candidate retains zero","expected":[0,0,2,3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"single ranked candidate\", \"actual\": [0, 0, 0, 0], \"expected\": [3, 0, 0, 0], \"passed\": false}, {\"check\": \"empty ranking\", \"actual\": [0, 0, 0, 0], \"expected\": [0, 0, 0, 0], \"passed\": true}, {\"check\": \"two ranked candidates\", \"actual\": [0, 1, 0, 0], \"expected\": [2, 3, 0, 0], \"passed\": false}, {\"check\": \"complete ranking\", \"actual\": [1, 0, 2], \"expected\": [1, 0, 2], \"passed\": true}, {\"check\": \"single candidate\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"omitted candidate retains zero\", \"actual\": [0, 0, 0, 1], \"expected\": [0, 0, 2, 3], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.49,"exit_code":0,"observations":[{"actual":[3,0,0,0],"check":"single ranked candidate","expected":[3,0,0,0],"passed":true},{"actual":[0,0,0,0],"check":"empty ranking","expected":[0,0,0,0],"passed":true},{"actual":[2,3,0,0],"check":"two ranked candidates","expected":[2,3,0,0],"passed":true},{"actual":[1,0,2],"check":"complete ranking","expected":[1,0,2],"passed":true},{"actual":[0],"check":"single candidate","expected":[0],"passed":true},{"actual":[0,0,2,3],"check":"omitted candidate retains zero","expected":[0,0,2,3],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"single ranked candidate\", \"actual\": [3, 0, 0, 0], \"expected\": [3, 0, 0, 0], \"passed\": true}, {\"check\": \"empty ranking\", \"actual\": [0, 0, 0, 0], \"expected\": [0, 0, 0, 0], \"passed\": true}, {\"check\": \"two ranked candidates\", \"actual\": [2, 3, 0, 0], \"expected\": [2, 3, 0, 0], \"passed\": true}, {\"check\": \"complete ranking\", \"actual\": [1, 0, 2], \"expected\": [1, 0, 2], \"passed\": true}, {\"check\": \"single candidate\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"omitted candidate retains zero\", \"actual\": [0, 0, 2, 3], \"expected\": [0, 0, 2, 3], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}