{"abstract":"Six- and eight-stone handicaps receive tengen as an extra stone.","category":"Go territory scoring","checks":8,"contract":"Input [size, count]. Star line e = 2 (0-based) below 13x13 else 3; f = size-1-e; mid = size//2. Counts outside 2..9 give []. Even boards allow at most 4. Order: [e,f],[f,e],[f,f],[e,e]; counts 6-9 add [mid,e],[mid,f]; 8-9 add [e,mid],[f,mid]; odd counts from 5 add the centre last.","contract_signature":"x","evaluation_group":"w2-go-territory-scoring-handicap-points","failed_approach":"Testing odd parity adds tengen to a three-stone handicap.","family":"w2-go-territory-scoring-handicap-points-centre-stone-parity","id":"FA-82956","implementations":{"attempt":{"sha256":"0718d7ba17580f6c995955f5d77878c7da049e6ef5c68ef1d1fad691ca143084","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    size, count = x\n    if count < 2 or count > 9:\n        return []\n    if size % 2 == 0 and count > 4:\n        return []\n    e = 2 if size < 13 else 3\n    f = size - 1 - e\n    mid = size // 2\n    pts = [[e, f], [f, e], [f, f], [e, e]]\n    if count >= 4:\n        pts = pts[:4]\n    else:\n        pts = pts[:count]\n    if count in (6, 7, 8, 9):\n        pts += [[mid, e], [mid, f]]\n    if count in (8, 9):\n        pts += [[e, mid], [f, mid]]\n    if count % 2 == 1:\n        pts.append([mid, mid])\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[7, 6], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]]], [[7, 8], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3]]], [[7, 9], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]]], [[7, 10], []], [[9, 0], []], [[9, 1], []], [[9, 2], [[2, 6], [6, 2]]], [[14, 3], [[3, 10], [10, 3], [10, 10]]]], [[[9, 3], [[2, 6], [6, 2], [6, 6]]], [[9, 4], [[2, 6], [6, 2], [6, 6], [2, 2]]], [[9, 5], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 4]]], [[9, 6], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6]]], [[9, 7], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6], [4, 4]]], [[9, 8], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6], [2, 4], [6, 4]]], [[9, 9], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6], [2, 4], [6, 4], [4, 4]]], [[10, 3], [[2, 7], [7, 2], [7, 7]]]], [[[9, 10], []], [[10, 0], []], [[10, 1], []], [[10, 2], [[2, 7], [7, 2]]], [[10, 3], [[2, 7], [7, 2], [7, 7]]], [[10, 4], [[2, 7], [7, 2], [7, 7], [2, 2]]], [[13, 6], [[3, 9], [9, 3], [9, 9], [3, 3], [6, 3], [6, 9]]], [[15, 3], [[3, 11], [11, 3], [11, 11]]]], [[[10, 6], []], [[10, 7], []], [[10, 8], []], [[10, 9], []], [[10, 10], []], [[11, 0], []], [[11, 3], [[2, 8], [8, 2], [8, 8]]], [[15, 8], [[3, 11], [11, 3], [11, 11], [3, 3], [7, 3], [7, 11], [3, 7], [11, 7]]]], [[[7, 6], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]]], [[11, 3], [[2, 8], [8, 2], [8, 8]]], [[11, 4], [[2, 8], [8, 2], [8, 8], [2, 2]]], [[11, 5], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 5]]], [[11, 6], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 2], [5, 8]]], [[11, 7], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 2], [5, 8], [5, 5]]], [[11, 8], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 2], [5, 8], [2, 5], [8, 5]]], [[19, 3], [[3, 15], [15, 3], [15, 15]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"handicap placement 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":"9e522a5b46b496344674a64d3d7e57b37b2f6aaff60d946a3f2cddaca4ec4f5f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    size, count = x\n    if count < 2 or count > 9:\n        return []\n    if size % 2 == 0 and count > 4:\n        return []\n    e = 2 if size < 13 else 3\n    f = size - 1 - e\n    mid = size // 2\n    pts = [[e, f], [f, e], [f, f], [e, e]]\n    if count >= 4:\n        pts = pts[:4]\n    else:\n        pts = pts[:count]\n    if count in (6, 7, 8, 9):\n        pts += [[mid, e], [mid, f]]\n    if count in (8, 9):\n        pts += [[e, mid], [f, mid]]\n    if count >= 5:\n        pts.append([mid, mid])\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[7, 6], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]]], [[7, 8], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3]]], [[7, 9], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]]], [[7, 10], []], [[9, 0], []], [[9, 1], []], [[9, 2], [[2, 6], [6, 2]]], [[14, 3], [[3, 10], [10, 3], [10, 10]]]], [[[9, 3], [[2, 6], [6, 2], [6, 6]]], [[9, 4], [[2, 6], [6, 2], [6, 6], [2, 2]]], [[9, 5], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 4]]], [[9, 6], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6]]], [[9, 7], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6], [4, 4]]], [[9, 8], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6], [2, 4], [6, 4]]], [[9, 9], [[2, 6], [6, 2], [6, 6], [2, 2], [4, 2], [4, 6], [2, 4], [6, 4], [4, 4]]], [[10, 3], [[2, 7], [7, 2], [7, 7]]]], [[[9, 10], []], [[10, 0], []], [[10, 1], []], [[10, 2], [[2, 7], [7, 2]]], [[10, 3], [[2, 7], [7, 2], [7, 7]]], [[10, 4], [[2, 7], [7, 2], [7, 7], [2, 2]]], [[13, 6], [[3, 9], [9, 3], [9, 9], [3, 3], [6, 3], [6, 9]]], [[15, 3], [[3, 11], [11, 3], [11, 11]]]], [[[10, 6], []], [[10, 7], []], [[10, 8], []], [[10, 9], []], [[10, 10], []], [[11, 0], []], [[11, 3], [[2, 8], [8, 2], [8, 8]]], [[15, 8], [[3, 11], [11, 3], [11, 11], [3, 3], [7, 3], [7, 11], [3, 7], [11, 7]]]], [[[7, 6], [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]]], [[11, 3], [[2, 8], [8, 2], [8, 8]]], [[11, 4], [[2, 8], [8, 2], [8, 8], [2, 2]]], [[11, 5], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 5]]], [[11, 6], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 2], [5, 8]]], [[11, 7], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 2], [5, 8], [5, 5]]], [[11, 8], [[2, 8], [8, 2], [8, 8], [2, 2], [5, 2], [5, 8], [2, 5], [8, 5]]], [[19, 3], [[3, 15], [15, 3], [15, 15]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"handicap placement 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-handicap-points-centre-stone-parity","generated_at":"2026-09-29T14:50:16.926621+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":"The centre is added for every count of five or more.","sha256":"cb60c6a6af3451e351819ca5810b8b4b65f6bf0cc932b39250d7721c9f9d8ddb","title":"Even handicaps get a centre stone · 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":38.548,"exit_code":1,"observations":[{"actual":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4]],"check":"handicap placement case 0","expected":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4]],"passed":true},{"actual":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3]],"check":"handicap placement case 1","expected":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3]],"passed":true},{"actual":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3],[3,3]],"check":"handicap placement case 2","expected":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3],[3,3]],"passed":true},{"actual":[],"check":"handicap placement case 3","expected":[],"passed":true},{"actual":[],"check":"handicap placement case 4","expected":[],"passed":true},{"actual":[],"check":"handicap placement case 5","expected":[],"passed":true},{"actual":[[2,6],[6,2]],"check":"handicap placement case 6","expected":[[2,6],[6,2]],"passed":true},{"actual":[[3,10],[10,3],[10,10],[7,7]],"check":"handicap placement case 7","expected":[[3,10],[10,3],[10,10]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"handicap placement case 0\", \"actual\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]], \"expected\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]], \"passed\": true}, {\"check\": \"handicap placement case 1\", \"actual\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3]], \"expected\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3]], \"passed\": true}, {\"check\": \"handicap placement case 2\", \"actual\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]], \"expected\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]], \"passed\": true}, {\"check\": \"handicap placement case 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"handicap placement case 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"handicap placement case 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"handicap placement case 6\", \"actual\": [[2, 6], [6, 2]], \"expected\": [[2, 6], [6, 2]], \"passed\": true}, {\"check\": \"handicap placement case 7\", \"actual\": [[3, 10], [10, 3], [10, 10], [7, 7]], \"expected\": [[3, 10], [10, 3], [10, 10]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.42,"exit_code":1,"observations":[{"actual":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[3,3]],"check":"handicap placement case 0","expected":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4]],"passed":false},{"actual":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3],[3,3]],"check":"handicap placement case 1","expected":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3]],"passed":false},{"actual":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3],[3,3]],"check":"handicap placement case 2","expected":[[2,4],[4,2],[4,4],[2,2],[3,2],[3,4],[2,3],[4,3],[3,3]],"passed":true},{"actual":[],"check":"handicap placement case 3","expected":[],"passed":true},{"actual":[],"check":"handicap placement case 4","expected":[],"passed":true},{"actual":[],"check":"handicap placement case 5","expected":[],"passed":true},{"actual":[[2,6],[6,2]],"check":"handicap placement case 6","expected":[[2,6],[6,2]],"passed":true},{"actual":[[3,10],[10,3],[10,10]],"check":"handicap placement case 7","expected":[[3,10],[10,3],[10,10]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"handicap placement case 0\", \"actual\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [3, 3]], \"expected\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4]], \"passed\": false}, {\"check\": \"handicap placement case 1\", \"actual\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]], \"expected\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3]], \"passed\": false}, {\"check\": \"handicap placement case 2\", \"actual\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]], \"expected\": [[2, 4], [4, 2], [4, 4], [2, 2], [3, 2], [3, 4], [2, 3], [4, 3], [3, 3]], \"passed\": true}, {\"check\": \"handicap placement case 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"handicap placement case 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"handicap placement case 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"handicap placement case 6\", \"actual\": [[2, 6], [6, 2]], \"expected\": [[2, 6], [6, 2]], \"passed\": true}, {\"check\": \"handicap placement case 7\", \"actual\": [[3, 10], [10, 3], [10, 10]], \"expected\": [[3, 10], [10, 3], [10, 10]], \"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."}}