{"abstract":"A 6.5 komi is applied as 65 points.","category":"Go territory scoring","checks":8,"contract":"Input [terr_b, terr_w, prisoners_taken_by_b, prisoners_taken_by_w, komi_tenths]. Prisoners are filled into the opponent territory. Return [remaining_b, remaining_w, result] with result \"B+x.y\", \"W+x.y\" or \"Jigo\".","contract_signature":"x","evaluation_group":"w2-go-territory-scoring-counting-fill","failed_approach":"Adding komi to black inverts compensation.","family":"w2-go-territory-scoring-counting-fill-komi-units","id":"FA-83281","implementations":{"attempt":{"sha256":"64b0557883fd863d7bdd9efaa00fdeddda49c76546c0e29ef4be64699f566ffa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    tb, tw, capb, capw, komi = x\n    rb = tb - capw\n    rw = tw - capb\n    margin = (rb - rw) * 10 + komi\n    if margin > 0:\n        return [rb, rw, 'B+%d.%d' % (margin // 10, margin % 10)]\n    if margin < 0:\n        return [rb, rw, 'W+%d.%d' % (-margin // 10, -margin % 10)]\n    return [rb, rw, 'Jigo']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[44, 3, 1, 3, 65], [41, 2, 'B+32.5']], [[31, 42, 12, 7, 65], [24, 30, 'W+12.5']], [[20, 16, 5, 13, 55], [7, 11, 'W+9.5']], [[7, 12, 1, 1, 0], [6, 11, 'W+5.0']], [[57, 51, 11, 14, 60], [43, 40, 'W+3.0']], [[14, 2, 6, 14, 55], [0, -4, 'W+1.5']], [[10, 29, 4, 12, 0], [-2, 25, 'W+27.0']], [[17, 11, 9, 5, 65], [12, 2, 'B+3.5']]], [[[31, 13, 3, 5, 60], [26, 10, 'B+10.0']], [[24, 29, 2, 6, 60], [18, 27, 'W+15.0']], [[50, 59, 12, 13, 65], [37, 47, 'W+16.5']], [[32, 52, 11, 8, 60], [24, 41, 'W+23.0']], [[25, 7, 1, 2, 55], [23, 6, 'B+11.5']], [[30, 17, 12, 4, 55], [26, 5, 'B+15.5']], [[16, 26, 14, 6, 55], [10, 12, 'W+7.5']], [[49, 59, 5, 1, 0], [48, 54, 'W+6.0']]], [[[31, 42, 12, 7, 65], [24, 30, 'W+12.5']], [[16, 26, 14, 6, 55], [10, 12, 'W+7.5']], [[16, 18, 10, 1, 0], [15, 8, 'B+7.0']], [[17, 45, 8, 5, 65], [12, 37, 'W+31.5']], [[58, 37, 7, 9, 65], [49, 30, 'B+12.5']], [[4, 43, 4, 8, 55], [-4, 39, 'W+48.5']], [[21, 46, 14, 12, 60], [9, 32, 'W+29.0']], [[29, 34, 10, 3, 65], [26, 24, 'W+4.5']]], [[[14, 2, 6, 14, 55], [0, -4, 'W+1.5']], [[21, 46, 14, 12, 60], [9, 32, 'W+29.0']], [[36, 8, 7, 10, 0], [26, 1, 'B+25.0']], [[6, 35, 1, 11, 0], [-5, 34, 'W+39.0']], [[59, 43, 8, 7, 60], [52, 35, 'B+11.0']], [[28, 47, 10, 7, 55], [21, 37, 'W+21.5']], [[47, 35, 0, 13, 55], [34, 35, 'W+6.5']], [[54, 46, 14, 3, 60], [51, 32, 'B+13.0']]], [[[50, 59, 12, 13, 65], [37, 47, 'W+16.5']], [[54, 46, 14, 3, 60], [51, 32, 'B+13.0']], [[16, 9, 5, 2, 0], [14, 4, 'B+10.0']], [[28, 30, 7, 3, 0], [25, 23, 'B+2.0']], [[31, 9, 0, 3, 55], [28, 9, 'B+13.5']], [[48, 31, 13, 10, 65], [38, 18, 'B+13.5']], [[39, 29, 11, 0, 0], [39, 18, 'B+21.0']], [[49, 19, 13, 0, 65], [49, 6, 'B+36.5']]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"counting case %d\" % i, 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":"3e3f239d364e6d72c3e3a2b861ab2cb71337f9caf0c442a38604687a38877a07","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    tb, tw, capb, capw, komi = x\n    rb = tb - capw\n    rw = tw - capb\n    margin = (rb - rw - komi) * 10\n    if margin > 0:\n        return [rb, rw, 'B+%d.%d' % (margin // 10, margin % 10)]\n    if margin < 0:\n        return [rb, rw, 'W+%d.%d' % (-margin // 10, -margin % 10)]\n    return [rb, rw, 'Jigo']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[44, 3, 1, 3, 65], [41, 2, 'B+32.5']], [[31, 42, 12, 7, 65], [24, 30, 'W+12.5']], [[20, 16, 5, 13, 55], [7, 11, 'W+9.5']], [[7, 12, 1, 1, 0], [6, 11, 'W+5.0']], [[57, 51, 11, 14, 60], [43, 40, 'W+3.0']], [[14, 2, 6, 14, 55], [0, -4, 'W+1.5']], [[10, 29, 4, 12, 0], [-2, 25, 'W+27.0']], [[17, 11, 9, 5, 65], [12, 2, 'B+3.5']]], [[[31, 13, 3, 5, 60], [26, 10, 'B+10.0']], [[24, 29, 2, 6, 60], [18, 27, 'W+15.0']], [[50, 59, 12, 13, 65], [37, 47, 'W+16.5']], [[32, 52, 11, 8, 60], [24, 41, 'W+23.0']], [[25, 7, 1, 2, 55], [23, 6, 'B+11.5']], [[30, 17, 12, 4, 55], [26, 5, 'B+15.5']], [[16, 26, 14, 6, 55], [10, 12, 'W+7.5']], [[49, 59, 5, 1, 0], [48, 54, 'W+6.0']]], [[[31, 42, 12, 7, 65], [24, 30, 'W+12.5']], [[16, 26, 14, 6, 55], [10, 12, 'W+7.5']], [[16, 18, 10, 1, 0], [15, 8, 'B+7.0']], [[17, 45, 8, 5, 65], [12, 37, 'W+31.5']], [[58, 37, 7, 9, 65], [49, 30, 'B+12.5']], [[4, 43, 4, 8, 55], [-4, 39, 'W+48.5']], [[21, 46, 14, 12, 60], [9, 32, 'W+29.0']], [[29, 34, 10, 3, 65], [26, 24, 'W+4.5']]], [[[14, 2, 6, 14, 55], [0, -4, 'W+1.5']], [[21, 46, 14, 12, 60], [9, 32, 'W+29.0']], [[36, 8, 7, 10, 0], [26, 1, 'B+25.0']], [[6, 35, 1, 11, 0], [-5, 34, 'W+39.0']], [[59, 43, 8, 7, 60], [52, 35, 'B+11.0']], [[28, 47, 10, 7, 55], [21, 37, 'W+21.5']], [[47, 35, 0, 13, 55], [34, 35, 'W+6.5']], [[54, 46, 14, 3, 60], [51, 32, 'B+13.0']]], [[[50, 59, 12, 13, 65], [37, 47, 'W+16.5']], [[54, 46, 14, 3, 60], [51, 32, 'B+13.0']], [[16, 9, 5, 2, 0], [14, 4, 'B+10.0']], [[28, 30, 7, 3, 0], [25, 23, 'B+2.0']], [[31, 9, 0, 3, 55], [28, 9, 'B+13.5']], [[48, 31, 13, 10, 65], [38, 18, 'B+13.5']], [[39, 29, 11, 0, 0], [39, 18, 'B+21.0']], [[49, 19, 13, 0, 65], [49, 6, 'B+36.5']]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"counting case %d\" % i, 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":"Small rectangular toy boards given as strings of B, W and dot; a bounded teaching model of one scoring or bookkeeping rule, not a complete rules engine or server implementation. 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-go-territory-scoring-counting-fill-komi-units","generated_at":"2026-09-29T14:50:20.054260+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Go servers and scoring tools compute this value automatically; a wrong answer changes a game result.","root_cause":"Komi is subtracted before the tenths conversion.","sha256":"f72b40f478e50dbd01ac2c5c77e3e9c11a0b3f91614fa00f3b0db47b6a0dc2f1","title":"Komi tenths are multiplied again by ten · 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":45.21,"exit_code":1,"observations":[{"actual":[41,2,"B+45.5"],"check":"counting case 0","expected":[41,2,"B+32.5"],"passed":false},{"actual":[24,30,"B+0.5"],"check":"counting case 1","expected":[24,30,"W+12.5"],"passed":false},{"actual":[7,11,"B+1.5"],"check":"counting case 2","expected":[7,11,"W+9.5"],"passed":false},{"actual":[6,11,"W+5.0"],"check":"counting case 3","expected":[6,11,"W+5.0"],"passed":true},{"actual":[43,40,"B+9.0"],"check":"counting case 4","expected":[43,40,"W+3.0"],"passed":false},{"actual":[0,-4,"B+9.5"],"check":"counting case 5","expected":[0,-4,"W+1.5"],"passed":false},{"actual":[-2,25,"W+27.0"],"check":"counting case 6","expected":[-2,25,"W+27.0"],"passed":true},{"actual":[12,2,"B+16.5"],"check":"counting case 7","expected":[12,2,"B+3.5"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"counting case 0\", \"actual\": [41, 2, \"B+45.5\"], \"expected\": [41, 2, \"B+32.5\"], \"passed\": false}, {\"check\": \"counting case 1\", \"actual\": [24, 30, \"B+0.5\"], \"expected\": [24, 30, \"W+12.5\"], \"passed\": false}, {\"check\": \"counting case 2\", \"actual\": [7, 11, \"B+1.5\"], \"expected\": [7, 11, \"W+9.5\"], \"passed\": false}, {\"check\": \"counting case 3\", \"actual\": [6, 11, \"W+5.0\"], \"expected\": [6, 11, \"W+5.0\"], \"passed\": true}, {\"check\": \"counting case 4\", \"actual\": [43, 40, \"B+9.0\"], \"expected\": [43, 40, \"W+3.0\"], \"passed\": false}, {\"check\": \"counting case 5\", \"actual\": [0, -4, \"B+9.5\"], \"expected\": [0, -4, \"W+1.5\"], \"passed\": false}, {\"check\": \"counting case 6\", \"actual\": [-2, 25, \"W+27.0\"], \"expected\": [-2, 25, \"W+27.0\"], \"passed\": true}, {\"check\": \"counting case 7\", \"actual\": [12, 2, \"B+16.5\"], \"expected\": [12, 2, \"B+3.5\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.495,"exit_code":1,"observations":[{"actual":[41,2,"W+26.0"],"check":"counting case 0","expected":[41,2,"B+32.5"],"passed":false},{"actual":[24,30,"W+71.0"],"check":"counting case 1","expected":[24,30,"W+12.5"],"passed":false},{"actual":[7,11,"W+59.0"],"check":"counting case 2","expected":[7,11,"W+9.5"],"passed":false},{"actual":[6,11,"W+5.0"],"check":"counting case 3","expected":[6,11,"W+5.0"],"passed":true},{"actual":[43,40,"W+57.0"],"check":"counting case 4","expected":[43,40,"W+3.0"],"passed":false},{"actual":[0,-4,"W+51.0"],"check":"counting case 5","expected":[0,-4,"W+1.5"],"passed":false},{"actual":[-2,25,"W+27.0"],"check":"counting case 6","expected":[-2,25,"W+27.0"],"passed":true},{"actual":[12,2,"W+55.0"],"check":"counting case 7","expected":[12,2,"B+3.5"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"counting case 0\", \"actual\": [41, 2, \"W+26.0\"], \"expected\": [41, 2, \"B+32.5\"], \"passed\": false}, {\"check\": \"counting case 1\", \"actual\": [24, 30, \"W+71.0\"], \"expected\": [24, 30, \"W+12.5\"], \"passed\": false}, {\"check\": \"counting case 2\", \"actual\": [7, 11, \"W+59.0\"], \"expected\": [7, 11, \"W+9.5\"], \"passed\": false}, {\"check\": \"counting case 3\", \"actual\": [6, 11, \"W+5.0\"], \"expected\": [6, 11, \"W+5.0\"], \"passed\": true}, {\"check\": \"counting case 4\", \"actual\": [43, 40, \"W+57.0\"], \"expected\": [43, 40, \"W+3.0\"], \"passed\": false}, {\"check\": \"counting case 5\", \"actual\": [0, -4, \"W+51.0\"], \"expected\": [0, -4, \"W+1.5\"], \"passed\": false}, {\"check\": \"counting case 6\", \"actual\": [-2, 25, \"W+27.0\"], \"expected\": [-2, 25, \"W+27.0\"], \"passed\": true}, {\"check\": \"counting case 7\", \"actual\": [12, 2, \"W+55.0\"], \"expected\": [12, 2, \"B+3.5\"], \"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."}}