{"abstract":"A coordinate equal to size passes validation.","category":"Go territory scoring","checks":8,"contract":"Input [size, count, stones]. Check in order: every stone on the board (\"range\"), no duplicate (\"duplicate\"), exactly count stones and 2 <= count <= 9 (\"count\"). Otherwise \"ok\".","evaluation_group":"w2-go-territory-scoring-free-handicap","failed_approach":"Dropping the lower bound accepts negative coordinates.","family":"w2-go-territory-scoring-free-handicap-placement-range","id":"FA-83326","implementations":{"attempt":{"sha256":"5afab53363e6112145d7e6dac8b82a6d1d6ee7360a5fc74c28d3feb444f741c5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    size, count, stones = x\n    seen = set()\n    for r, c in stones:\n        if not (r < size and c < size):\n            return 'range'\n    for r, c in stones:\n        if (r, c) in seen:\n            return 'duplicate'\n        seen.add((r, c))\n    if len(stones) != count:\n        return 'count'\n    if count < 2 or count > 9:\n        return 'count'\n    return 'ok'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[13, 1, [[6, 7]]], 'count'], [[19, 6, [[11, 2], [8, 5], [4, 4], [13, 0], [13, 0], [18, 7], [16, 11]]], 'duplicate'], [[13, 10, [[2, 5], [11, 3], [10, 11], [11, 4], [8, 9], [8, 12], [12, 10], [10, 2], [5, 4], [9, 5], [2, 5]]], 'duplicate'], [[9, 7, [[6, 0], [6, 0], [8, 5], [0, 0], [6, 3], [0, 5], [1, 3]]], 'duplicate'], [[9, 5, [[-1, 7], [0, 2], [8, 4], [4, 1]]], 'range'], [[13, 6, [[3, 6], [11, 11], [4, 13], [9, 0], [1, 1], [12, 9], [3, 6]]], 'range'], [[9, 3, [[8, 1], [5, 2], [6, 2], [7, 2], [8, 1]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range']], [[[19, 4, [[7, 1], [8, 9], [14, 2], [11, 12], [7, 1]]], 'duplicate'], [[19, 1, [[16, 11]]], 'count'], [[9, 4, [[6, 3], [1, 8], [0, 0], [6, 3]]], 'duplicate'], [[13, 6, [[0, 10], [10, 12], [0, 10], [12, 10], [9, 2], [6, 8]]], 'duplicate'], [[19, 8, [[12, 5], [16, 15], [17, 16], [10, 3], [0, 13], [14, 9], [7, 1], [9, 11]]], 'ok'], [[9, 6, [[3, 5], [1, 3], [5, 6], [2, 2], [0, 4], [8, 1], [1, 7]]], 'count'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 9, [[1, 3], [7, 2], [3, 2], [4, 7], [4, 9], [1, 4], [1, 6], [7, 7], [6, 5], [1, 3]]], 'range']], [[[13, 6, [[11, 11], [5, 6], [8, 12], [8, 0], [10, 6], [1, 9], [2, 8]]], 'count'], [[13, 4, [[6, 3], [6, 5], [6, 11]]], 'count'], [[9, 10, [[5, 7], [1, 6], [6, 6], [4, 3], [4, 6], [5, 8], [7, 5], [5, 0], [5, 3], [5, 7]]], 'duplicate'], [[9, 5, [[3, 6], [8, 4], [0, 2], [7, 8], [1, 7]]], 'ok'], [[9, 1, [[1, 5], [7, 2]]], 'count'], [[13, 3, [[10, 0], [0, 11]]], 'count'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 2, [[9, 0], [1, 1]]], 'range']], [[[13, 3, [[5, 9], [5, 9], [2, 6]]], 'duplicate'], [[13, 2, [[1, 3], [12, 8]]], 'ok'], [[19, 4, [[4, 4], [6, 18], [15, 18], [12, 5]]], 'ok'], [[13, 0, []], 'count'], [[19, 5, [[7, 1], [7, 3], [13, 10], [3, 11], [3, 8]]], 'ok'], [[19, 7, [[8, 18], [18, 18], [12, 4], [10, 13], [16, 1], [8, 1], [14, 7], [8, 18]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[13, 8, [[13, 1], [4, 11], [9, 6], [0, 11], [7, 10], [4, 3], [2, 9], [7, 1], [13, 1]]], 'range']], [[[13, 10, [[11, 9], [11, 11], [7, 2], [0, 2], [10, 3], [11, 5], [7, 6], [1, 10], [3, 2], [3, 12]]], 'count'], [[13, 4, [[6, 0], [7, 9], [12, 11], [11, 9], [12, 5]]], 'count'], [[19, 1, [[10, 17], [11, 15]]], 'count'], [[13, 8, [[12, 0], [8, 0], [9, 8], [8, 5], [2, 3], [5, 12], [7, 5], [5, 0]]], 'ok'], [[13, 4, [[3, 7], [1, 12], [0, 11], [4, 6]]], 'ok'], [[13, 2, [[0, 10], [1, 4], [0, 10]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 2, [[0, 9], [1, 1]]], 'range']]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"free 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":"1b1c7aaad628a06316ad3cec1a1cd14cf182f5ba853ed9ef134a2e88c551d64d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    size, count, stones = x\n    seen = set()\n    for r, c in stones:\n        if not (0 <= r <= size and 0 <= c <= size):\n            return 'range'\n    for r, c in stones:\n        if (r, c) in seen:\n            return 'duplicate'\n        seen.add((r, c))\n    if len(stones) != count:\n        return 'count'\n    if count < 2 or count > 9:\n        return 'count'\n    return 'ok'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[13, 1, [[6, 7]]], 'count'], [[19, 6, [[11, 2], [8, 5], [4, 4], [13, 0], [13, 0], [18, 7], [16, 11]]], 'duplicate'], [[13, 10, [[2, 5], [11, 3], [10, 11], [11, 4], [8, 9], [8, 12], [12, 10], [10, 2], [5, 4], [9, 5], [2, 5]]], 'duplicate'], [[9, 7, [[6, 0], [6, 0], [8, 5], [0, 0], [6, 3], [0, 5], [1, 3]]], 'duplicate'], [[9, 5, [[-1, 7], [0, 2], [8, 4], [4, 1]]], 'range'], [[13, 6, [[3, 6], [11, 11], [4, 13], [9, 0], [1, 1], [12, 9], [3, 6]]], 'range'], [[9, 3, [[8, 1], [5, 2], [6, 2], [7, 2], [8, 1]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range']], [[[19, 4, [[7, 1], [8, 9], [14, 2], [11, 12], [7, 1]]], 'duplicate'], [[19, 1, [[16, 11]]], 'count'], [[9, 4, [[6, 3], [1, 8], [0, 0], [6, 3]]], 'duplicate'], [[13, 6, [[0, 10], [10, 12], [0, 10], [12, 10], [9, 2], [6, 8]]], 'duplicate'], [[19, 8, [[12, 5], [16, 15], [17, 16], [10, 3], [0, 13], [14, 9], [7, 1], [9, 11]]], 'ok'], [[9, 6, [[3, 5], [1, 3], [5, 6], [2, 2], [0, 4], [8, 1], [1, 7]]], 'count'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 9, [[1, 3], [7, 2], [3, 2], [4, 7], [4, 9], [1, 4], [1, 6], [7, 7], [6, 5], [1, 3]]], 'range']], [[[13, 6, [[11, 11], [5, 6], [8, 12], [8, 0], [10, 6], [1, 9], [2, 8]]], 'count'], [[13, 4, [[6, 3], [6, 5], [6, 11]]], 'count'], [[9, 10, [[5, 7], [1, 6], [6, 6], [4, 3], [4, 6], [5, 8], [7, 5], [5, 0], [5, 3], [5, 7]]], 'duplicate'], [[9, 5, [[3, 6], [8, 4], [0, 2], [7, 8], [1, 7]]], 'ok'], [[9, 1, [[1, 5], [7, 2]]], 'count'], [[13, 3, [[10, 0], [0, 11]]], 'count'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 2, [[9, 0], [1, 1]]], 'range']], [[[13, 3, [[5, 9], [5, 9], [2, 6]]], 'duplicate'], [[13, 2, [[1, 3], [12, 8]]], 'ok'], [[19, 4, [[4, 4], [6, 18], [15, 18], [12, 5]]], 'ok'], [[13, 0, []], 'count'], [[19, 5, [[7, 1], [7, 3], [13, 10], [3, 11], [3, 8]]], 'ok'], [[19, 7, [[8, 18], [18, 18], [12, 4], [10, 13], [16, 1], [8, 1], [14, 7], [8, 18]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[13, 8, [[13, 1], [4, 11], [9, 6], [0, 11], [7, 10], [4, 3], [2, 9], [7, 1], [13, 1]]], 'range']], [[[13, 10, [[11, 9], [11, 11], [7, 2], [0, 2], [10, 3], [11, 5], [7, 6], [1, 10], [3, 2], [3, 12]]], 'count'], [[13, 4, [[6, 0], [7, 9], [12, 11], [11, 9], [12, 5]]], 'count'], [[19, 1, [[10, 17], [11, 15]]], 'count'], [[13, 8, [[12, 0], [8, 0], [9, 8], [8, 5], [2, 3], [5, 12], [7, 5], [5, 0]]], 'ok'], [[13, 4, [[3, 7], [1, 12], [0, 11], [4, 6]]], 'ok'], [[13, 2, [[0, 10], [1, 4], [0, 10]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 2, [[0, 9], [1, 1]]], 'range']]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"free 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"},"fixed":{"sha256":"c07a3dc5cd40c31717d7a0026e57c099a7ac0e8fb9f43cd9b9892a7dbd225826","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    size, count, stones = x\n    seen = set()\n    for r, c in stones:\n        if not (0 <= r < size and 0 <= c < size):\n            return 'range'\n    for r, c in stones:\n        if (r, c) in seen:\n            return 'duplicate'\n        seen.add((r, c))\n    if len(stones) != count:\n        return 'count'\n    if count < 2 or count > 9:\n        return 'count'\n    return 'ok'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[13, 1, [[6, 7]]], 'count'], [[19, 6, [[11, 2], [8, 5], [4, 4], [13, 0], [13, 0], [18, 7], [16, 11]]], 'duplicate'], [[13, 10, [[2, 5], [11, 3], [10, 11], [11, 4], [8, 9], [8, 12], [12, 10], [10, 2], [5, 4], [9, 5], [2, 5]]], 'duplicate'], [[9, 7, [[6, 0], [6, 0], [8, 5], [0, 0], [6, 3], [0, 5], [1, 3]]], 'duplicate'], [[9, 5, [[-1, 7], [0, 2], [8, 4], [4, 1]]], 'range'], [[13, 6, [[3, 6], [11, 11], [4, 13], [9, 0], [1, 1], [12, 9], [3, 6]]], 'range'], [[9, 3, [[8, 1], [5, 2], [6, 2], [7, 2], [8, 1]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range']], [[[19, 4, [[7, 1], [8, 9], [14, 2], [11, 12], [7, 1]]], 'duplicate'], [[19, 1, [[16, 11]]], 'count'], [[9, 4, [[6, 3], [1, 8], [0, 0], [6, 3]]], 'duplicate'], [[13, 6, [[0, 10], [10, 12], [0, 10], [12, 10], [9, 2], [6, 8]]], 'duplicate'], [[19, 8, [[12, 5], [16, 15], [17, 16], [10, 3], [0, 13], [14, 9], [7, 1], [9, 11]]], 'ok'], [[9, 6, [[3, 5], [1, 3], [5, 6], [2, 2], [0, 4], [8, 1], [1, 7]]], 'count'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 9, [[1, 3], [7, 2], [3, 2], [4, 7], [4, 9], [1, 4], [1, 6], [7, 7], [6, 5], [1, 3]]], 'range']], [[[13, 6, [[11, 11], [5, 6], [8, 12], [8, 0], [10, 6], [1, 9], [2, 8]]], 'count'], [[13, 4, [[6, 3], [6, 5], [6, 11]]], 'count'], [[9, 10, [[5, 7], [1, 6], [6, 6], [4, 3], [4, 6], [5, 8], [7, 5], [5, 0], [5, 3], [5, 7]]], 'duplicate'], [[9, 5, [[3, 6], [8, 4], [0, 2], [7, 8], [1, 7]]], 'ok'], [[9, 1, [[1, 5], [7, 2]]], 'count'], [[13, 3, [[10, 0], [0, 11]]], 'count'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 2, [[9, 0], [1, 1]]], 'range']], [[[13, 3, [[5, 9], [5, 9], [2, 6]]], 'duplicate'], [[13, 2, [[1, 3], [12, 8]]], 'ok'], [[19, 4, [[4, 4], [6, 18], [15, 18], [12, 5]]], 'ok'], [[13, 0, []], 'count'], [[19, 5, [[7, 1], [7, 3], [13, 10], [3, 11], [3, 8]]], 'ok'], [[19, 7, [[8, 18], [18, 18], [12, 4], [10, 13], [16, 1], [8, 1], [14, 7], [8, 18]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[13, 8, [[13, 1], [4, 11], [9, 6], [0, 11], [7, 10], [4, 3], [2, 9], [7, 1], [13, 1]]], 'range']], [[[13, 10, [[11, 9], [11, 11], [7, 2], [0, 2], [10, 3], [11, 5], [7, 6], [1, 10], [3, 2], [3, 12]]], 'count'], [[13, 4, [[6, 0], [7, 9], [12, 11], [11, 9], [12, 5]]], 'count'], [[19, 1, [[10, 17], [11, 15]]], 'count'], [[13, 8, [[12, 0], [8, 0], [9, 8], [8, 5], [2, 3], [5, 12], [7, 5], [5, 0]]], 'ok'], [[13, 4, [[3, 7], [1, 12], [0, 11], [4, 6]]], 'ok'], [[13, 2, [[0, 10], [1, 4], [0, 10]]], 'duplicate'], [[13, 5, [[2, 1], [6, 10], [6, 4], [2, 0], [0, -1]]], 'range'], [[9, 2, [[0, 9], [1, 1]]], 'range']]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"free 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-free-handicap-placement-range","generated_at":"2026-09-29T14:50:20.646727+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.","repair":"Require 0 <= coordinate < size.","root_cause":"The upper bound is inclusive.","sha256":"f91d409c5564136c4480b6487cfd60d68fa8321f5380d9897ea9f923a005e909","title":"Stones one line beyond the board are accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.713,"exit_code":1,"observations":[{"actual":"count","check":"free placement case 0","expected":"count","passed":true},{"actual":"duplicate","check":"free placement case 1","expected":"duplicate","passed":true},{"actual":"duplicate","check":"free placement case 2","expected":"duplicate","passed":true},{"actual":"duplicate","check":"free placement case 3","expected":"duplicate","passed":true},{"actual":"count","check":"free placement case 4","expected":"range","passed":false},{"actual":"range","check":"free placement case 5","expected":"range","passed":true},{"actual":"duplicate","check":"free placement case 6","expected":"duplicate","passed":true},{"actual":"ok","check":"free placement case 7","expected":"range","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"free placement case 0\", \"actual\": \"count\", \"expected\": \"count\", \"passed\": true}, {\"check\": \"free placement case 1\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 2\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 3\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 4\", \"actual\": \"count\", \"expected\": \"range\", \"passed\": false}, {\"check\": \"free placement case 5\", \"actual\": \"range\", \"expected\": \"range\", \"passed\": true}, {\"check\": \"free placement case 6\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 7\", \"actual\": \"ok\", \"expected\": \"range\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.279,"exit_code":1,"observations":[{"actual":"count","check":"free placement case 0","expected":"count","passed":true},{"actual":"duplicate","check":"free placement case 1","expected":"duplicate","passed":true},{"actual":"duplicate","check":"free placement case 2","expected":"duplicate","passed":true},{"actual":"duplicate","check":"free placement case 3","expected":"duplicate","passed":true},{"actual":"range","check":"free placement case 4","expected":"range","passed":true},{"actual":"duplicate","check":"free placement case 5","expected":"range","passed":false},{"actual":"duplicate","check":"free placement case 6","expected":"duplicate","passed":true},{"actual":"range","check":"free placement case 7","expected":"range","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"free placement case 0\", \"actual\": \"count\", \"expected\": \"count\", \"passed\": true}, {\"check\": \"free placement case 1\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 2\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 3\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 4\", \"actual\": \"range\", \"expected\": \"range\", \"passed\": true}, {\"check\": \"free placement case 5\", \"actual\": \"duplicate\", \"expected\": \"range\", \"passed\": false}, {\"check\": \"free placement case 6\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 7\", \"actual\": \"range\", \"expected\": \"range\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.47,"exit_code":0,"observations":[{"actual":"count","check":"free placement case 0","expected":"count","passed":true},{"actual":"duplicate","check":"free placement case 1","expected":"duplicate","passed":true},{"actual":"duplicate","check":"free placement case 2","expected":"duplicate","passed":true},{"actual":"duplicate","check":"free placement case 3","expected":"duplicate","passed":true},{"actual":"range","check":"free placement case 4","expected":"range","passed":true},{"actual":"range","check":"free placement case 5","expected":"range","passed":true},{"actual":"duplicate","check":"free placement case 6","expected":"duplicate","passed":true},{"actual":"range","check":"free placement case 7","expected":"range","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"free placement case 0\", \"actual\": \"count\", \"expected\": \"count\", \"passed\": true}, {\"check\": \"free placement case 1\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 2\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 3\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 4\", \"actual\": \"range\", \"expected\": \"range\", \"passed\": true}, {\"check\": \"free placement case 5\", \"actual\": \"range\", \"expected\": \"range\", \"passed\": true}, {\"check\": \"free placement case 6\", \"actual\": \"duplicate\", \"expected\": \"duplicate\", \"passed\": true}, {\"check\": \"free placement case 7\", \"actual\": \"range\", \"expected\": \"range\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}