{"abstract":"Half of a dead group stays alive after a click.","category":"Go territory scoring","checks":8,"contract":"Input [board, dead_points, row, col]. Clicking a stone toggles its whole orthogonally connected chain: if the clicked stone is currently marked, unmark the chain, otherwise mark it. Clicking an empty point changes nothing. Return the sorted distinct dead points.","evaluation_group":"w2-go-territory-scoring-dead-toggle","failed_approach":"XOR-ing the chain flips each stone independently, so a partially marked chain becomes inverted rather than uniform.","family":"w2-go-territory-scoring-dead-toggle-stone-versus-chain-toggle","id":"FA-83131","implementations":{"attempt":{"sha256":"bc97dc198b1083a3cdc2612bfa63a6a8abb4884b9871ad7ceeef5d0e3355eda5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    board, dead, r, c = x\n    n = len(board)\n    m = len(board[0])\n    col = board[r][c]\n    marked = {tuple(p) for p in dead}\n    if col == '.':\n        return sorted([list(p) for p in marked])\n    chain = {(r, c)}\n    stack = [(r, c)]\n    while stack:\n        i, j = stack.pop()\n        for p, q in ((i + 1, j), (i, j + 1), (i - 1, j), (i, j - 1)):\n            if 0 <= p < n and 0 <= q < m and board[p][q] == col and (p, q) not in chain:\n                chain.add((p, q))\n                stack.append((p, q))\n    marked ^= chain\n    return sorted([list(p) for p in marked])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[['.B.', 'B.B', '.B.'], [[1, 0], [1, 2]], 1, 2], [[1, 0]]], [[['.B.', 'B.B', '.B.'], [[1, 2], [0, 1], [1, 0]], 2, 1], [[0, 1], [1, 0], [1, 2], [2, 1]]], [[['B..W', 'B..W', 'B..W', 'B..W'], [[2, 3], [3, 0]], 3, 1], [[2, 3], [3, 0]]], [[['B..W', 'B..W', 'B..W', 'B..W'], [], 1, 1], []], [[['B..W', 'B..W', 'B..W', 'B..W'], [[0, 0]], 3, 0], [[0, 0], [1, 0], [2, 0], [3, 0]]], [[['.BW.', '.BW.', '.BW.', '.BW.'], [[0, 1], [0, 1], [2, 1], [0, 2]], 0, 1], [[0, 2]]], [[['.BW.', '.BW.', '.BW.', '.BW.'], [[0, 2]], 3, 2], [[0, 2], [1, 2], [2, 2], [3, 2]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[1, 0], [3, 2], [1, 0], [0, 2]], 3, 1], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]]], [[[['.BW.', '.BW.', '.BW.', '.BW.'], [], 3, 1], [[0, 1], [1, 1], [2, 1], [3, 1]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [[3, 3], [1, 2]], 3, 1], [[1, 2], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [[4, 2], [4, 2], [1, 2], [0, 2]], 3, 2], [[0, 2], [1, 2], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [], 3, 4], [[3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[2, 2]], 4, 0], [[2, 2]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[2, 3], [3, 0]], 2, 1], [[2, 3], [3, 0]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[3, 2], [3, 1]], 3, 4], [[3, 1], [3, 2], [3, 4]]], [[['BBB.', '.B..', 'B...', 'BBW.'], [[2, 0], [3, 1], [0, 0]], 0, 1], [[0, 0], [0, 1], [0, 2], [1, 1], [2, 0], [3, 1]]]], [[[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [], 3, 4], [[3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['W....', '.....', '.....', '.....', '....B'], [[4, 4], [0, 0]], 0, 0], [[4, 4]]], [[['W....', '.....', '.....', '.....', '....B'], [[4, 4], [4, 4], [0, 0]], 0, 0], [[4, 4]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [], 3, 0], [[3, 0]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [[0, 1]], 4, 2], [[0, 1]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [[2, 2], [1, 3], [1, 3]], 4, 1], [[1, 3], [2, 2]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[0, 3]], 0, 0], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['BWWW', 'B.WW', 'W.WB', 'WWWW'], [[3, 1], [1, 0], [1, 0]], 2, 0], [[0, 1], [0, 2], [0, 3], [1, 0], [1, 2], [1, 3], [2, 0], [2, 2], [3, 0], [3, 1], [3, 2], [3, 3]]]], [[[['BBBB', 'B..B', 'B..B', 'BBBB'], [], 2, 3], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[1, 0], [3, 2], [1, 0], [0, 2]], 3, 1], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['WWW', 'W.W', 'WWW'], [[0, 1], [1, 2], [1, 2]], 0, 1], []], [[['WWW', 'W.W', 'WWW'], [[0, 1], [0, 0]], 1, 1], [[0, 0], [0, 1]]], [[['WWW', 'W.W', 'WWW'], [[1, 2], [0, 2], [2, 1]], 1, 1], [[0, 2], [1, 2], [2, 1]]], [[['B.W', '...', 'W.B'], [], 2, 2], [[2, 2]]], [[['B.W', '...', 'W.B'], [[2, 2], [0, 2], [0, 0]], 0, 2], [[0, 0], [2, 2]]], [[['BBW', 'B..', 'BB.', 'BBW', 'WBB'], [[1, 0], [2, 1]], 1, 0], []]], [[[['B.W', '...', 'W.B'], [], 0, 2], [[0, 2]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [], 0, 1], [[0, 1]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [], 4, 3], [[4, 3]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [[1, 0], [1, 0]], 4, 3], [[1, 0], [4, 3]]], [[['BW.', 'BW.', 'BW.'], [], 2, 0], [[0, 0], [1, 0], [2, 0]]], [[['BW.', 'BW.', 'BW.'], [[2, 1], [1, 1], [1, 1]], 0, 0], [[0, 0], [1, 0], [1, 1], [2, 0], [2, 1]]], [[['BW.', 'BW.', 'BW.'], [[2, 1], [2, 1]], 0, 1], [[0, 1], [1, 1], [2, 1]]], [[['..WWW', 'WW.WB', '..B..'], [[0, 4], [1, 1], [1, 0]], 0, 3], [[0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 3]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"dead marks 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":"a84b925cbff4566e03bec7329d352453c53fe5c8d37114fa1ce357f8bed065b5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    board, dead, r, c = x\n    n = len(board)\n    m = len(board[0])\n    col = board[r][c]\n    marked = {tuple(p) for p in dead}\n    if col == '.':\n        return sorted([list(p) for p in marked])\n    chain = {(r, c)}\n    stack = [(r, c)]\n    while stack:\n        i, j = stack.pop()\n        for p, q in ((i + 1, j), (i, j + 1), (i - 1, j), (i, j - 1)):\n            if 0 <= p < n and 0 <= q < m and board[p][q] == col and (p, q) not in chain:\n                chain.add((p, q))\n                stack.append((p, q))\n    marked ^= {(r, c)}\n    return sorted([list(p) for p in marked])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[['.B.', 'B.B', '.B.'], [[1, 0], [1, 2]], 1, 2], [[1, 0]]], [[['.B.', 'B.B', '.B.'], [[1, 2], [0, 1], [1, 0]], 2, 1], [[0, 1], [1, 0], [1, 2], [2, 1]]], [[['B..W', 'B..W', 'B..W', 'B..W'], [[2, 3], [3, 0]], 3, 1], [[2, 3], [3, 0]]], [[['B..W', 'B..W', 'B..W', 'B..W'], [], 1, 1], []], [[['B..W', 'B..W', 'B..W', 'B..W'], [[0, 0]], 3, 0], [[0, 0], [1, 0], [2, 0], [3, 0]]], [[['.BW.', '.BW.', '.BW.', '.BW.'], [[0, 1], [0, 1], [2, 1], [0, 2]], 0, 1], [[0, 2]]], [[['.BW.', '.BW.', '.BW.', '.BW.'], [[0, 2]], 3, 2], [[0, 2], [1, 2], [2, 2], [3, 2]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[1, 0], [3, 2], [1, 0], [0, 2]], 3, 1], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]]], [[[['.BW.', '.BW.', '.BW.', '.BW.'], [], 3, 1], [[0, 1], [1, 1], [2, 1], [3, 1]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [[3, 3], [1, 2]], 3, 1], [[1, 2], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [[4, 2], [4, 2], [1, 2], [0, 2]], 3, 2], [[0, 2], [1, 2], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [], 3, 4], [[3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[2, 2]], 4, 0], [[2, 2]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[2, 3], [3, 0]], 2, 1], [[2, 3], [3, 0]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[3, 2], [3, 1]], 3, 4], [[3, 1], [3, 2], [3, 4]]], [[['BBB.', '.B..', 'B...', 'BBW.'], [[2, 0], [3, 1], [0, 0]], 0, 1], [[0, 0], [0, 1], [0, 2], [1, 1], [2, 0], [3, 1]]]], [[[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [], 3, 4], [[3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['W....', '.....', '.....', '.....', '....B'], [[4, 4], [0, 0]], 0, 0], [[4, 4]]], [[['W....', '.....', '.....', '.....', '....B'], [[4, 4], [4, 4], [0, 0]], 0, 0], [[4, 4]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [], 3, 0], [[3, 0]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [[0, 1]], 4, 2], [[0, 1]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [[2, 2], [1, 3], [1, 3]], 4, 1], [[1, 3], [2, 2]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[0, 3]], 0, 0], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['BWWW', 'B.WW', 'W.WB', 'WWWW'], [[3, 1], [1, 0], [1, 0]], 2, 0], [[0, 1], [0, 2], [0, 3], [1, 0], [1, 2], [1, 3], [2, 0], [2, 2], [3, 0], [3, 1], [3, 2], [3, 3]]]], [[[['BBBB', 'B..B', 'B..B', 'BBBB'], [], 2, 3], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[1, 0], [3, 2], [1, 0], [0, 2]], 3, 1], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['WWW', 'W.W', 'WWW'], [[0, 1], [1, 2], [1, 2]], 0, 1], []], [[['WWW', 'W.W', 'WWW'], [[0, 1], [0, 0]], 1, 1], [[0, 0], [0, 1]]], [[['WWW', 'W.W', 'WWW'], [[1, 2], [0, 2], [2, 1]], 1, 1], [[0, 2], [1, 2], [2, 1]]], [[['B.W', '...', 'W.B'], [], 2, 2], [[2, 2]]], [[['B.W', '...', 'W.B'], [[2, 2], [0, 2], [0, 0]], 0, 2], [[0, 0], [2, 2]]], [[['BBW', 'B..', 'BB.', 'BBW', 'WBB'], [[1, 0], [2, 1]], 1, 0], []]], [[[['B.W', '...', 'W.B'], [], 0, 2], [[0, 2]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [], 0, 1], [[0, 1]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [], 4, 3], [[4, 3]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [[1, 0], [1, 0]], 4, 3], [[1, 0], [4, 3]]], [[['BW.', 'BW.', 'BW.'], [], 2, 0], [[0, 0], [1, 0], [2, 0]]], [[['BW.', 'BW.', 'BW.'], [[2, 1], [1, 1], [1, 1]], 0, 0], [[0, 0], [1, 0], [1, 1], [2, 0], [2, 1]]], [[['BW.', 'BW.', 'BW.'], [[2, 1], [2, 1]], 0, 1], [[0, 1], [1, 1], [2, 1]]], [[['..WWW', 'WW.WB', '..B..'], [[0, 4], [1, 1], [1, 0]], 0, 3], [[0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 3]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"dead marks 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":"29f97d801144b3701b582725ad3324ef8df0a91b637fe5557219e9b295fd7eb0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    board, dead, r, c = x\n    n = len(board)\n    m = len(board[0])\n    col = board[r][c]\n    marked = {tuple(p) for p in dead}\n    if col == '.':\n        return sorted([list(p) for p in marked])\n    chain = {(r, c)}\n    stack = [(r, c)]\n    while stack:\n        i, j = stack.pop()\n        for p, q in ((i + 1, j), (i, j + 1), (i - 1, j), (i, j - 1)):\n            if 0 <= p < n and 0 <= q < m and board[p][q] == col and (p, q) not in chain:\n                chain.add((p, q))\n                stack.append((p, q))\n    if (r, c) in marked:\n        marked -= chain\n    else:\n        marked |= chain\n    return sorted([list(p) for p in marked])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[['.B.', 'B.B', '.B.'], [[1, 0], [1, 2]], 1, 2], [[1, 0]]], [[['.B.', 'B.B', '.B.'], [[1, 2], [0, 1], [1, 0]], 2, 1], [[0, 1], [1, 0], [1, 2], [2, 1]]], [[['B..W', 'B..W', 'B..W', 'B..W'], [[2, 3], [3, 0]], 3, 1], [[2, 3], [3, 0]]], [[['B..W', 'B..W', 'B..W', 'B..W'], [], 1, 1], []], [[['B..W', 'B..W', 'B..W', 'B..W'], [[0, 0]], 3, 0], [[0, 0], [1, 0], [2, 0], [3, 0]]], [[['.BW.', '.BW.', '.BW.', '.BW.'], [[0, 1], [0, 1], [2, 1], [0, 2]], 0, 1], [[0, 2]]], [[['.BW.', '.BW.', '.BW.', '.BW.'], [[0, 2]], 3, 2], [[0, 2], [1, 2], [2, 2], [3, 2]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[1, 0], [3, 2], [1, 0], [0, 2]], 3, 1], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]]], [[[['.BW.', '.BW.', '.BW.', '.BW.'], [], 3, 1], [[0, 1], [1, 1], [2, 1], [3, 1]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [[3, 3], [1, 2]], 3, 1], [[1, 2], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [[4, 2], [4, 2], [1, 2], [0, 2]], 3, 2], [[0, 2], [1, 2], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [], 3, 4], [[3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[2, 2]], 4, 0], [[2, 2]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[2, 3], [3, 0]], 2, 1], [[2, 3], [3, 0]]], [[['B.B.W', '.B.W.', 'B.BW.', 'BBW.W', '..W..'], [[3, 2], [3, 1]], 3, 4], [[3, 1], [3, 2], [3, 4]]], [[['BBB.', '.B..', 'B...', 'BBW.'], [[2, 0], [3, 1], [0, 0]], 0, 1], [[0, 0], [0, 1], [0, 2], [1, 1], [2, 0], [3, 1]]]], [[[['..B..', '..B..', 'BBBBB', 'WWWWW', '..W..'], [], 3, 4], [[3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [4, 2]]], [[['W....', '.....', '.....', '.....', '....B'], [[4, 4], [0, 0]], 0, 0], [[4, 4]]], [[['W....', '.....', '.....', '.....', '....B'], [[4, 4], [4, 4], [0, 0]], 0, 0], [[4, 4]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [], 3, 0], [[3, 0]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [[0, 1]], 4, 2], [[0, 1]]], [[['.W.B.', 'W.WB.', '.WB..', 'WB...', 'B....'], [[2, 2], [1, 3], [1, 3]], 4, 1], [[1, 3], [2, 2]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[0, 3]], 0, 0], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['BWWW', 'B.WW', 'W.WB', 'WWWW'], [[3, 1], [1, 0], [1, 0]], 2, 0], [[0, 1], [0, 2], [0, 3], [1, 0], [1, 2], [1, 3], [2, 0], [2, 2], [3, 0], [3, 1], [3, 2], [3, 3]]]], [[[['BBBB', 'B..B', 'B..B', 'BBBB'], [], 2, 3], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['BBBB', 'B..B', 'B..B', 'BBBB'], [[1, 0], [3, 2], [1, 0], [0, 2]], 3, 1], [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]]], [[['WWW', 'W.W', 'WWW'], [[0, 1], [1, 2], [1, 2]], 0, 1], []], [[['WWW', 'W.W', 'WWW'], [[0, 1], [0, 0]], 1, 1], [[0, 0], [0, 1]]], [[['WWW', 'W.W', 'WWW'], [[1, 2], [0, 2], [2, 1]], 1, 1], [[0, 2], [1, 2], [2, 1]]], [[['B.W', '...', 'W.B'], [], 2, 2], [[2, 2]]], [[['B.W', '...', 'W.B'], [[2, 2], [0, 2], [0, 0]], 0, 2], [[0, 0], [2, 2]]], [[['BBW', 'B..', 'BB.', 'BBW', 'WBB'], [[1, 0], [2, 1]], 1, 0], []]], [[[['B.W', '...', 'W.B'], [], 0, 2], [[0, 2]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [], 0, 1], [[0, 1]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [], 4, 3], [[4, 3]]], [[['.B...', 'B....', '.....', '....W', '...W.'], [[1, 0], [1, 0]], 4, 3], [[1, 0], [4, 3]]], [[['BW.', 'BW.', 'BW.'], [], 2, 0], [[0, 0], [1, 0], [2, 0]]], [[['BW.', 'BW.', 'BW.'], [[2, 1], [1, 1], [1, 1]], 0, 0], [[0, 0], [1, 0], [1, 1], [2, 0], [2, 1]]], [[['BW.', 'BW.', 'BW.'], [[2, 1], [2, 1]], 0, 1], [[0, 1], [1, 1], [2, 1]]], [[['..WWW', 'WW.WB', '..B..'], [[0, 4], [1, 1], [1, 0]], 0, 3], [[0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 3]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"dead marks 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-dead-toggle-stone-versus-chain-toggle","generated_at":"2026-09-29T14:50:18.741770+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":"Toggle the entire chain as one unit.","root_cause":"The toggle flips membership of the single point.","sha256":"2b4fef242cd06d375c05f33ba41241a4e613771f4e7083fc1f5b326879ec5999","title":"Clicking toggles only the clicked stone · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.516,"exit_code":1,"observations":[{"actual":[[1,0]],"check":"dead marks case 0","expected":[[1,0]],"passed":true},{"actual":[[0,1],[1,0],[1,2],[2,1]],"check":"dead marks case 1","expected":[[0,1],[1,0],[1,2],[2,1]],"passed":true},{"actual":[[2,3],[3,0]],"check":"dead marks case 2","expected":[[2,3],[3,0]],"passed":true},{"actual":[],"check":"dead marks case 3","expected":[],"passed":true},{"actual":[[1,0],[2,0],[3,0]],"check":"dead marks case 4","expected":[[0,0],[1,0],[2,0],[3,0]],"passed":false},{"actual":[[0,2],[1,1],[3,1]],"check":"dead marks case 5","expected":[[0,2]],"passed":false},{"actual":[[1,2],[2,2],[3,2]],"check":"dead marks case 6","expected":[[0,2],[1,2],[2,2],[3,2]],"passed":false},{"actual":[[0,0],[0,1],[0,3],[1,3],[2,0],[2,3],[3,0],[3,1],[3,3]],"check":"dead marks case 7","expected":[[0,0],[0,1],[0,2],[0,3],[1,0],[1,3],[2,0],[2,3],[3,0],[3,1],[3,2],[3,3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dead marks case 0\", \"actual\": [[1, 0]], \"expected\": [[1, 0]], \"passed\": true}, {\"check\": \"dead marks case 1\", \"actual\": [[0, 1], [1, 0], [1, 2], [2, 1]], \"expected\": [[0, 1], [1, 0], [1, 2], [2, 1]], \"passed\": true}, {\"check\": \"dead marks case 2\", \"actual\": [[2, 3], [3, 0]], \"expected\": [[2, 3], [3, 0]], \"passed\": true}, {\"check\": \"dead marks case 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dead marks case 4\", \"actual\": [[1, 0], [2, 0], [3, 0]], \"expected\": [[0, 0], [1, 0], [2, 0], [3, 0]], \"passed\": false}, {\"check\": \"dead marks case 5\", \"actual\": [[0, 2], [1, 1], [3, 1]], \"expected\": [[0, 2]], \"passed\": false}, {\"check\": \"dead marks case 6\", \"actual\": [[1, 2], [2, 2], [3, 2]], \"expected\": [[0, 2], [1, 2], [2, 2], [3, 2]], \"passed\": false}, {\"check\": \"dead marks case 7\", \"actual\": [[0, 0], [0, 1], [0, 3], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 3]], \"expected\": [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.055,"exit_code":1,"observations":[{"actual":[[1,0]],"check":"dead marks case 0","expected":[[1,0]],"passed":true},{"actual":[[0,1],[1,0],[1,2],[2,1]],"check":"dead marks case 1","expected":[[0,1],[1,0],[1,2],[2,1]],"passed":true},{"actual":[[2,3],[3,0]],"check":"dead marks case 2","expected":[[2,3],[3,0]],"passed":true},{"actual":[],"check":"dead marks case 3","expected":[],"passed":true},{"actual":[[0,0],[3,0]],"check":"dead marks case 4","expected":[[0,0],[1,0],[2,0],[3,0]],"passed":false},{"actual":[[0,2],[2,1]],"check":"dead marks case 5","expected":[[0,2]],"passed":false},{"actual":[[0,2],[3,2]],"check":"dead marks case 6","expected":[[0,2],[1,2],[2,2],[3,2]],"passed":false},{"actual":[[0,2],[1,0],[3,1],[3,2]],"check":"dead marks case 7","expected":[[0,0],[0,1],[0,2],[0,3],[1,0],[1,3],[2,0],[2,3],[3,0],[3,1],[3,2],[3,3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dead marks case 0\", \"actual\": [[1, 0]], \"expected\": [[1, 0]], \"passed\": true}, {\"check\": \"dead marks case 1\", \"actual\": [[0, 1], [1, 0], [1, 2], [2, 1]], \"expected\": [[0, 1], [1, 0], [1, 2], [2, 1]], \"passed\": true}, {\"check\": \"dead marks case 2\", \"actual\": [[2, 3], [3, 0]], \"expected\": [[2, 3], [3, 0]], \"passed\": true}, {\"check\": \"dead marks case 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dead marks case 4\", \"actual\": [[0, 0], [3, 0]], \"expected\": [[0, 0], [1, 0], [2, 0], [3, 0]], \"passed\": false}, {\"check\": \"dead marks case 5\", \"actual\": [[0, 2], [2, 1]], \"expected\": [[0, 2]], \"passed\": false}, {\"check\": \"dead marks case 6\", \"actual\": [[0, 2], [3, 2]], \"expected\": [[0, 2], [1, 2], [2, 2], [3, 2]], \"passed\": false}, {\"check\": \"dead marks case 7\", \"actual\": [[0, 2], [1, 0], [3, 1], [3, 2]], \"expected\": [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.112,"exit_code":0,"observations":[{"actual":[[1,0]],"check":"dead marks case 0","expected":[[1,0]],"passed":true},{"actual":[[0,1],[1,0],[1,2],[2,1]],"check":"dead marks case 1","expected":[[0,1],[1,0],[1,2],[2,1]],"passed":true},{"actual":[[2,3],[3,0]],"check":"dead marks case 2","expected":[[2,3],[3,0]],"passed":true},{"actual":[],"check":"dead marks case 3","expected":[],"passed":true},{"actual":[[0,0],[1,0],[2,0],[3,0]],"check":"dead marks case 4","expected":[[0,0],[1,0],[2,0],[3,0]],"passed":true},{"actual":[[0,2]],"check":"dead marks case 5","expected":[[0,2]],"passed":true},{"actual":[[0,2],[1,2],[2,2],[3,2]],"check":"dead marks case 6","expected":[[0,2],[1,2],[2,2],[3,2]],"passed":true},{"actual":[[0,0],[0,1],[0,2],[0,3],[1,0],[1,3],[2,0],[2,3],[3,0],[3,1],[3,2],[3,3]],"check":"dead marks case 7","expected":[[0,0],[0,1],[0,2],[0,3],[1,0],[1,3],[2,0],[2,3],[3,0],[3,1],[3,2],[3,3]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"dead marks case 0\", \"actual\": [[1, 0]], \"expected\": [[1, 0]], \"passed\": true}, {\"check\": \"dead marks case 1\", \"actual\": [[0, 1], [1, 0], [1, 2], [2, 1]], \"expected\": [[0, 1], [1, 0], [1, 2], [2, 1]], \"passed\": true}, {\"check\": \"dead marks case 2\", \"actual\": [[2, 3], [3, 0]], \"expected\": [[2, 3], [3, 0]], \"passed\": true}, {\"check\": \"dead marks case 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"dead marks case 4\", \"actual\": [[0, 0], [1, 0], [2, 0], [3, 0]], \"expected\": [[0, 0], [1, 0], [2, 0], [3, 0]], \"passed\": true}, {\"check\": \"dead marks case 5\", \"actual\": [[0, 2]], \"expected\": [[0, 2]], \"passed\": true}, {\"check\": \"dead marks case 6\", \"actual\": [[0, 2], [1, 2], [2, 2], [3, 2]], \"expected\": [[0, 2], [1, 2], [2, 2], [3, 2]], \"passed\": true}, {\"check\": \"dead marks case 7\", \"actual\": [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]], \"expected\": [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 3], [2, 0], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}