{"abstract":"The ending pass, not the first pass, earns the half point.","category":"Go territory scoring","checks":8,"contract":"Input [area_b, area_w, passes, komi_tenths]. The first player ever to pass takes the button worth half a point. Return [black_tenths, white_tenths, winner] with winner B, W or draw.","contract_signature":"x","evaluation_group":"w2-go-territory-scoring-button-go","failed_approach":"Awarding it to whoever passed more often ignores the order of passes.","family":"w2-go-territory-scoring-button-go-button-recipient","id":"FA-83181","implementations":{"attempt":{"sha256":"ec4008ecb6705aa4195824cd15563a3038d39e3b8cbde2c2a8cae5244ab793cb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    ab, aw, passes, komi = x\n    sb = ab * 10\n    sw = aw * 10 + komi\n    if passes:\n        if passes.count('B') >= passes.count('W'):\n            sb += 5\n        else:\n            sw += 5\n    winner = 'B' if sb > sw else 'W' if sw > sb else 'draw'\n    return [sb, sw, winner]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[179, 170, ['W', 'B'], 0], [1790, 1705, 'B']], [[171, 180, ['W', 'B', 'B'], 60], [1710, 1865, 'W']], [[186, 187, ['B', 'W'], 0], [1865, 1870, 'W']], [[187, 178, ['W'], 60], [1870, 1845, 'B']], [[178, 183, ['W', 'W', 'W'], 60], [1780, 1895, 'W']], [[179, 185, ['W'], 60], [1790, 1915, 'W']], [[174, 182, ['W', 'B', 'B'], 5], [1740, 1830, 'W']], [[174, 182, ['W', 'B', 'B'], 5], [1740, 1830, 'W']]], [[[186, 187, ['B', 'W'], 0], [1865, 1870, 'W']], [[186, 183, [], 60], [1860, 1890, 'W']], [[191, 181, ['B', 'W', 'W'], 0], [1915, 1810, 'B']], [[186, 178, ['W', 'B'], 5], [1860, 1790, 'B']], [[187, 185, ['W'], 70], [1870, 1925, 'W']], [[178, 182, ['B', 'B'], 5], [1785, 1825, 'W']], [[176, 188, ['W', 'W'], 5], [1760, 1890, 'W']], [[176, 188, ['W', 'B'], 60], [1760, 1945, 'W']]], [[[174, 182, ['W', 'B', 'B'], 5], [1740, 1830, 'W']], [[186, 178, ['W', 'B'], 5], [1860, 1790, 'B']], [[175, 191, [], 5], [1750, 1915, 'W']], [[186, 183, ['W', 'W', 'W'], 5], [1860, 1840, 'B']], [[170, 181, [], 0], [1700, 1810, 'W']], [[179, 175, ['W'], 60], [1790, 1815, 'W']], [[190, 180, ['B', 'W', 'W'], 70], [1905, 1870, 'B']], [[176, 182, ['W', 'W', 'W'], 70], [1760, 1895, 'W']]], [[[176, 182, ['W', 'W', 'W'], 70], [1760, 1895, 'W']], [[179, 189, [], 60], [1790, 1950, 'W']], [[172, 174, [], 5], [1720, 1745, 'W']], [[177, 171, ['W'], 70], [1770, 1785, 'W']], [[179, 182, ['B'], 0], [1795, 1820, 'W']], [[182, 174, ['B', 'B'], 70], [1825, 1810, 'B']], [[179, 175, ['W', 'W', 'B'], 60], [1790, 1815, 'W']], [[173, 178, ['W', 'B'], 70], [1730, 1855, 'W']]], [[[178, 189, ['W'], 0], [1780, 1895, 'W']], [[177, 171, ['B'], 60], [1775, 1770, 'B']], [[175, 176, ['B'], 5], [1755, 1765, 'W']], [[182, 185, ['B', 'W'], 60], [1825, 1910, 'W']], [[179, 175, ['W', 'W', 'B'], 60], [1790, 1815, 'W']], [[181, 180, ['B', 'B'], 70], [1815, 1870, 'W']], [[173, 178, ['W', 'B'], 70], [1730, 1855, 'W']], [[170, 179, ['W', 'B'], 5], [1700, 1800, 'W']]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"button 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":"6560801d00d3d086f7392db7191931ae8a8b718c0a690076a18338b5a49b3a77","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    ab, aw, passes, komi = x\n    sb = ab * 10\n    sw = aw * 10 + komi\n    if passes:\n        if passes[-1] == 'B':\n            sb += 5\n        else:\n            sw += 5\n    winner = 'B' if sb > sw else 'W' if sw > sb else 'draw'\n    return [sb, sw, winner]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[179, 170, ['W', 'B'], 0], [1790, 1705, 'B']], [[171, 180, ['W', 'B', 'B'], 60], [1710, 1865, 'W']], [[186, 187, ['B', 'W'], 0], [1865, 1870, 'W']], [[187, 178, ['W'], 60], [1870, 1845, 'B']], [[178, 183, ['W', 'W', 'W'], 60], [1780, 1895, 'W']], [[179, 185, ['W'], 60], [1790, 1915, 'W']], [[174, 182, ['W', 'B', 'B'], 5], [1740, 1830, 'W']], [[174, 182, ['W', 'B', 'B'], 5], [1740, 1830, 'W']]], [[[186, 187, ['B', 'W'], 0], [1865, 1870, 'W']], [[186, 183, [], 60], [1860, 1890, 'W']], [[191, 181, ['B', 'W', 'W'], 0], [1915, 1810, 'B']], [[186, 178, ['W', 'B'], 5], [1860, 1790, 'B']], [[187, 185, ['W'], 70], [1870, 1925, 'W']], [[178, 182, ['B', 'B'], 5], [1785, 1825, 'W']], [[176, 188, ['W', 'W'], 5], [1760, 1890, 'W']], [[176, 188, ['W', 'B'], 60], [1760, 1945, 'W']]], [[[174, 182, ['W', 'B', 'B'], 5], [1740, 1830, 'W']], [[186, 178, ['W', 'B'], 5], [1860, 1790, 'B']], [[175, 191, [], 5], [1750, 1915, 'W']], [[186, 183, ['W', 'W', 'W'], 5], [1860, 1840, 'B']], [[170, 181, [], 0], [1700, 1810, 'W']], [[179, 175, ['W'], 60], [1790, 1815, 'W']], [[190, 180, ['B', 'W', 'W'], 70], [1905, 1870, 'B']], [[176, 182, ['W', 'W', 'W'], 70], [1760, 1895, 'W']]], [[[176, 182, ['W', 'W', 'W'], 70], [1760, 1895, 'W']], [[179, 189, [], 60], [1790, 1950, 'W']], [[172, 174, [], 5], [1720, 1745, 'W']], [[177, 171, ['W'], 70], [1770, 1785, 'W']], [[179, 182, ['B'], 0], [1795, 1820, 'W']], [[182, 174, ['B', 'B'], 70], [1825, 1810, 'B']], [[179, 175, ['W', 'W', 'B'], 60], [1790, 1815, 'W']], [[173, 178, ['W', 'B'], 70], [1730, 1855, 'W']]], [[[178, 189, ['W'], 0], [1780, 1895, 'W']], [[177, 171, ['B'], 60], [1775, 1770, 'B']], [[175, 176, ['B'], 5], [1755, 1765, 'W']], [[182, 185, ['B', 'W'], 60], [1825, 1910, 'W']], [[179, 175, ['W', 'W', 'B'], 60], [1790, 1815, 'W']], [[181, 180, ['B', 'B'], 70], [1815, 1870, 'W']], [[173, 178, ['W', 'B'], 70], [1730, 1855, 'W']], [[170, 179, ['W', 'B'], 5], [1700, 1800, 'W']]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"button 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-button-go-button-recipient","generated_at":"2026-09-29T14:50:19.327452+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 code inspects passes[-1].","sha256":"12440f4c90459987ea067d4aa202111aa5ed088880f8d7a77074bebb5d201588","title":"The button goes to the last player to pass · 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":43.259,"exit_code":1,"observations":[{"actual":[1795,1700,"B"],"check":"button case 0","expected":[1790,1705,"B"],"passed":false},{"actual":[1715,1860,"W"],"check":"button case 1","expected":[1710,1865,"W"],"passed":false},{"actual":[1865,1870,"W"],"check":"button case 2","expected":[1865,1870,"W"],"passed":true},{"actual":[1870,1845,"B"],"check":"button case 3","expected":[1870,1845,"B"],"passed":true},{"actual":[1780,1895,"W"],"check":"button case 4","expected":[1780,1895,"W"],"passed":true},{"actual":[1790,1915,"W"],"check":"button case 5","expected":[1790,1915,"W"],"passed":true},{"actual":[1745,1825,"W"],"check":"button case 6","expected":[1740,1830,"W"],"passed":false},{"actual":[1745,1825,"W"],"check":"button case 7","expected":[1740,1830,"W"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"button case 0\", \"actual\": [1795, 1700, \"B\"], \"expected\": [1790, 1705, \"B\"], \"passed\": false}, {\"check\": \"button case 1\", \"actual\": [1715, 1860, \"W\"], \"expected\": [1710, 1865, \"W\"], \"passed\": false}, {\"check\": \"button case 2\", \"actual\": [1865, 1870, \"W\"], \"expected\": [1865, 1870, \"W\"], \"passed\": true}, {\"check\": \"button case 3\", \"actual\": [1870, 1845, \"B\"], \"expected\": [1870, 1845, \"B\"], \"passed\": true}, {\"check\": \"button case 4\", \"actual\": [1780, 1895, \"W\"], \"expected\": [1780, 1895, \"W\"], \"passed\": true}, {\"check\": \"button case 5\", \"actual\": [1790, 1915, \"W\"], \"expected\": [1790, 1915, \"W\"], \"passed\": true}, {\"check\": \"button case 6\", \"actual\": [1745, 1825, \"W\"], \"expected\": [1740, 1830, \"W\"], \"passed\": false}, {\"check\": \"button case 7\", \"actual\": [1745, 1825, \"W\"], \"expected\": [1740, 1830, \"W\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.004,"exit_code":1,"observations":[{"actual":[1795,1700,"B"],"check":"button case 0","expected":[1790,1705,"B"],"passed":false},{"actual":[1715,1860,"W"],"check":"button case 1","expected":[1710,1865,"W"],"passed":false},{"actual":[1860,1875,"W"],"check":"button case 2","expected":[1865,1870,"W"],"passed":false},{"actual":[1870,1845,"B"],"check":"button case 3","expected":[1870,1845,"B"],"passed":true},{"actual":[1780,1895,"W"],"check":"button case 4","expected":[1780,1895,"W"],"passed":true},{"actual":[1790,1915,"W"],"check":"button case 5","expected":[1790,1915,"W"],"passed":true},{"actual":[1745,1825,"W"],"check":"button case 6","expected":[1740,1830,"W"],"passed":false},{"actual":[1745,1825,"W"],"check":"button case 7","expected":[1740,1830,"W"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"button case 0\", \"actual\": [1795, 1700, \"B\"], \"expected\": [1790, 1705, \"B\"], \"passed\": false}, {\"check\": \"button case 1\", \"actual\": [1715, 1860, \"W\"], \"expected\": [1710, 1865, \"W\"], \"passed\": false}, {\"check\": \"button case 2\", \"actual\": [1860, 1875, \"W\"], \"expected\": [1865, 1870, \"W\"], \"passed\": false}, {\"check\": \"button case 3\", \"actual\": [1870, 1845, \"B\"], \"expected\": [1870, 1845, \"B\"], \"passed\": true}, {\"check\": \"button case 4\", \"actual\": [1780, 1895, \"W\"], \"expected\": [1780, 1895, \"W\"], \"passed\": true}, {\"check\": \"button case 5\", \"actual\": [1790, 1915, \"W\"], \"expected\": [1790, 1915, \"W\"], \"passed\": true}, {\"check\": \"button case 6\", \"actual\": [1745, 1825, \"W\"], \"expected\": [1740, 1830, \"W\"], \"passed\": false}, {\"check\": \"button case 7\", \"actual\": [1745, 1825, \"W\"], \"expected\": [1740, 1830, \"W\"], \"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."}}