{"abstract":"Triple ko and longer cycles are accepted as legal.","category":"Go territory scoring","checks":8,"contract":"Input [history, candidate_board, player_to_move_after, mode]; history is a list of [board, player_to_move]. Positional mode forbids any earlier board equal to the candidate; situational mode additionally requires the same player to move. Return the earliest matching history index or \"legal\".","evaluation_group":"w2-go-territory-scoring-superko","failed_approach":"Widening the window to the last four positions still misses longer cycles and reports shifted positions.","family":"w2-go-territory-scoring-superko-history-window","id":"FA-82921","implementations":{"attempt":{"sha256":"48b767beeb750d28b877b513137fefee03f66455390070d1d3ae3f84286e0dec","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    history, cand, mover, mode = x\n    key = tuple(cand)\n    for idx, (past, to_move) in list(enumerate(history))[-4:]:\n        if tuple(past) != key:\n            continue\n        if mode == 'situational' and to_move != mover:\n            continue\n        return idx\n    return 'legal'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[['.B', '..'], 'W'], [['.B', 'WW'], 'W']], ['.B', 'WW'], 'B', 'positional'], 1], [[[[['B.', '..'], 'W'], [['.B', 'WB'], 'W'], [['WW', 'BW'], 'W']], ['.B', 'WB'], 'B', 'situational'], 'legal'], [[[[['.W', 'W.'], 'W'], [['BW', 'W.'], 'B'], [['.B', '..'], 'B'], [['.B', '.B'], 'B'], [['B.', 'WB'], 'W'], [['.B', '..'], 'W']], ['.B', '..'], 'W', 'situational'], 5], [[[[['W.', '.B'], 'B'], [['WB', 'WB'], 'W'], [['WB', 'WB'], 'W'], [['.B', 'BB'], 'B']], ['WB', 'WB'], 'W', 'situational'], 1], [[[[['BW', 'W.'], 'B'], [['W.', 'BB'], 'B']], ['BW', 'W.'], 'B', 'positional'], 0], [[[[['..', 'W.'], 'B'], [['.W', '..'], 'B'], [['B.', 'BW'], 'W']], ['..', 'W.'], 'B', 'positional'], 0], [[[[['...', '...', '.B.'], 'B'], [['.B.', '.BW', 'B.W'], 'B'], [['BW.', 'W.W', '.W.'], 'B']], ['B.W', '..B', 'W.W'], 'W', 'positional'], 'legal'], [[[[['B.', '..'], 'B'], [['.W', 'B.'], 'B'], [['WW', 'BB'], 'B'], [['..', '..'], 'B'], [['.W', '.W'], 'W'], [['WW', 'BB'], 'W'], [['..', '..'], 'B']], ['WW', 'BB'], 'W', 'positional'], 2]], [[[[[['.W', 'W.'], 'W'], [['BW', 'W.'], 'B'], [['.B', '..'], 'B'], [['.B', '.B'], 'B'], [['B.', 'WB'], 'W'], [['.B', '..'], 'W']], ['.B', '..'], 'W', 'situational'], 5], [[[[['.BW', '.BB', '..B'], 'B']], ['.BW', '.BB', '..B'], 'W', 'situational'], 'legal'], [[[[['B.', 'W.'], 'W'], [['..', '.B'], 'B'], [['W.', 'BW'], 'B'], [['BB', 'B.'], 'B']], ['..', '.B'], 'B', 'positional'], 1], [[[[['WB.', 'WB.', '.BB'], 'B'], [['BW.', 'B..', '.WB'], 'B'], [['..B', '..W', '...'], 'W'], [['..B', '..B', 'W..'], 'W']], ['BW.', 'B..', '.WB'], 'W', 'situational'], 'legal'], [[[[['...', 'BW.', 'BBW'], 'B'], [['.W.', '..B', 'BBW'], 'B'], [['W.B', '.W.', '...'], 'B'], [['.WB', '.BW', '..W'], 'W'], [['...', 'W.B', 'W.B'], 'B']], ['.WW', '.W.', 'BW.'], 'B', 'positional'], 'legal'], [[[[['WW', 'W.'], 'W'], [['.W', '.W'], 'W'], [['..', 'B.'], 'B'], [['.W', '.W'], 'B'], [['W.', '..'], 'W'], [['..', 'WB'], 'W']], ['.W', '.W'], 'W', 'situational'], 1], [[[[['B.B', '.W.', 'WWB'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['.B.', 'W..', '.W.'], 'B'], [['.WW', '..B', 'BWW'], 'B'], [['.B.', '.B.', 'W.W'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['B.B', '.B.', '.BB'], 'B']], ['..B', 'WB.', '.B.'], 'W', 'situational'], 1], [[[[['B.B', 'B.B', '.BW'], 'W']], ['B.B', 'B.B', '.BW'], 'W', 'situational'], 0]], [[[[[['.W', 'WB'], 'B'], [['.W', '.W'], 'W'], [['.W', '.W'], 'B'], [['BB', '.B'], 'B'], [['.W', '.W'], 'B'], [['..', '..'], 'B']], ['.W', '.W'], 'B', 'situational'], 2], [[[[['WW.', '...', '..B'], 'B']], ['WW.', '...', '..B'], 'W', 'positional'], 0], [[[[['.BW', '...', '.W.'], 'B'], [['W..', '.B.', 'BBB'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['BW.', '.W.', '.B.'], 'W'], [['BBW', 'WW.', '...'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['B..', '...', 'B.B'], 'B']], ['WWW', 'WBB', '.WW'], 'B', 'positional'], 2], [[[[['..W', '.BW', 'W.W'], 'W'], [['W..', '.W.', '.W.'], 'W'], [['WWW', 'W.W', '...'], 'B'], [['WBB', 'WWB', 'B..'], 'W'], [['BB.', '.WB', '..B'], 'W'], [['W.W', 'B.B', '.B.'], 'B']], ['BBW', 'B..', 'B.W'], 'W', 'situational'], 'legal'], [[[[['B.B', 'WB.', '...'], 'W'], [['.W.', 'BWW', 'W..'], 'B']], ['B.B', 'WB.', '...'], 'B', 'situational'], 'legal'], [[[[['..', 'B.'], 'W'], [['.B', 'WB'], 'B'], [['..', '.W'], 'B'], [['..', '.W'], 'W'], [['.B', 'B.'], 'B']], ['..', '.W'], 'W', 'situational'], 3], [[[[['B..', '..B', 'W.B'], 'W']], ['B..', '..B', 'W.B'], 'W', 'positional'], 0], [[[[['BW.', 'W.B', '...'], 'B'], [['W.B', '.B.', 'WWB'], 'W'], [['W..', '.BB', '..W'], 'W'], [['.W.', 'BWW', '...'], 'B'], [['...', '.B.', 'B..'], 'W']], ['BW.', 'W.B', '...'], 'B', 'situational'], 0]], [[[[[['B.B', '.W.', 'WWB'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['.B.', 'W..', '.W.'], 'B'], [['.WW', '..B', 'BWW'], 'B'], [['.B.', '.B.', 'W.W'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['B.B', '.B.', '.BB'], 'B']], ['..B', 'WB.', '.B.'], 'W', 'situational'], 1], [[[[['W.', '..'], 'B'], [['..', 'B.'], 'W'], [['.B', '.B'], 'B'], [['B.', 'BW'], 'W'], [['BB', '..'], 'W']], ['..', 'WW'], 'B', 'situational'], 'legal'], [[[[['WWW', '..B', 'B..'], 'B'], [['..W', 'W.B', '.B.'], 'B'], [['..B', '...', '.B.'], 'W']], ['..W', '..W', 'B.W'], 'W', 'positional'], 'legal'], [[[[['.B', 'B.'], 'B'], [['.B', 'B.'], 'B'], [['BW', '..'], 'B'], [['.B', 'B.'], 'B'], [['.B', 'BB'], 'B']], ['.B', 'B.'], 'B', 'situational'], 0], [[[[['W.', '.W'], 'B'], [['B.', '..'], 'B'], [['WB', '..'], 'B'], [['BW', '.W'], 'W']], ['BW', '.W'], 'B', 'positional'], 3], [[[[['B.W', 'W.W', 'B.W'], 'W'], [['BWB', '.BW', 'B..'], 'W'], [['..W', 'B..', 'B..'], 'B'], [['WWW', 'B.B', 'WW.'], 'W'], [['.BB', '.WB', '..B'], 'B']], ['BBB', '.W.', 'W.W'], 'B', 'positional'], 'legal'], [[[[['...', '.W.', 'BWW'], 'B'], [['BWB', 'W.W', 'WBW'], 'B'], [['...', '...', '...'], 'B'], [['..W', '.WB', 'B..'], 'B'], [['WBW', 'WWB', 'WB.'], 'W']], ['...', '.W.', 'BWW'], 'W', 'positional'], 0], [[[[['BW', 'WW'], 'B'], [['.B', 'B.'], 'W'], [['..', '..'], 'W'], [['.B', '.B'], 'W'], [['WW', '.W'], 'W'], [['B.', '..'], 'B'], [['.B', 'B.'], 'W'], [['..', '.B'], 'B']], ['.B', 'B.'], 'W', 'situational'], 1]], [[[[[['.BW', '...', '.W.'], 'B'], [['W..', '.B.', 'BBB'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['BW.', '.W.', '.B.'], 'W'], [['BBW', 'WW.', '...'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['B..', '...', 'B.B'], 'B']], ['WWW', 'WBB', '.WW'], 'B', 'positional'], 2], [[[[['...', '.W.', 'BWW'], 'B'], [['BWB', 'W.W', 'WBW'], 'B'], [['...', '...', '...'], 'B'], [['..W', '.WB', 'B..'], 'B'], [['WBW', 'WWB', 'WB.'], 'W']], ['...', '.W.', 'BWW'], 'W', 'positional'], 0], [[[[['.B', 'B.'], 'W'], [['B.', 'W.'], 'W']], ['.B', 'B.'], 'B', 'situational'], 'legal'], [[[[['.W.', 'W..', 'B.W'], 'W'], [['WW.', '.W.', '...'], 'B'], [['.BB', '..W', 'WBW'], 'B'], [['.W.', 'BW.', 'BB.'], 'W']], ['WWW', '..W', 'WW.'], 'B', 'positional'], 'legal'], [[[[['..W', 'BBW', '.W.'], 'B'], [['..B', 'WBW', 'BW.'], 'W'], [['.B.', '..B', 'B..'], 'W']], ['..W', 'BBW', '.W.'], 'B', 'situational'], 0], [[[[['BW.', 'W.B', '...'], 'B'], [['W.B', '.B.', 'WWB'], 'W'], [['W..', '.BB', '..W'], 'W'], [['.W.', 'BWW', '...'], 'B'], [['...', '.B.', 'B..'], 'W']], ['BW.', 'W.B', '...'], 'B', 'situational'], 0], [[[[['BB.', 'BB.', 'WBB'], 'B'], [['..B', 'BW.', 'BBB'], 'W']], ['..B', 'BW.', 'BBB'], 'B', 'situational'], 'legal'], [[[[['.W', '.B'], 'B'], [['.B', '..'], 'W'], [['.B', '..'], 'W'], [['BB', '.B'], 'B']], ['.B', '..'], 'W', 'positional'], 1]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"superko 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":"a445c489ac5c58034da8d1f393151c19184fd7e7dffa806bd8bc470b50d0ee5a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    history, cand, mover, mode = x\n    key = tuple(cand)\n    for idx, (past, to_move) in list(enumerate(history))[-2:-1]:\n        if tuple(past) != key:\n            continue\n        if mode == 'situational' and to_move != mover:\n            continue\n        return idx\n    return 'legal'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[['.B', '..'], 'W'], [['.B', 'WW'], 'W']], ['.B', 'WW'], 'B', 'positional'], 1], [[[[['B.', '..'], 'W'], [['.B', 'WB'], 'W'], [['WW', 'BW'], 'W']], ['.B', 'WB'], 'B', 'situational'], 'legal'], [[[[['.W', 'W.'], 'W'], [['BW', 'W.'], 'B'], [['.B', '..'], 'B'], [['.B', '.B'], 'B'], [['B.', 'WB'], 'W'], [['.B', '..'], 'W']], ['.B', '..'], 'W', 'situational'], 5], [[[[['W.', '.B'], 'B'], [['WB', 'WB'], 'W'], [['WB', 'WB'], 'W'], [['.B', 'BB'], 'B']], ['WB', 'WB'], 'W', 'situational'], 1], [[[[['BW', 'W.'], 'B'], [['W.', 'BB'], 'B']], ['BW', 'W.'], 'B', 'positional'], 0], [[[[['..', 'W.'], 'B'], [['.W', '..'], 'B'], [['B.', 'BW'], 'W']], ['..', 'W.'], 'B', 'positional'], 0], [[[[['...', '...', '.B.'], 'B'], [['.B.', '.BW', 'B.W'], 'B'], [['BW.', 'W.W', '.W.'], 'B']], ['B.W', '..B', 'W.W'], 'W', 'positional'], 'legal'], [[[[['B.', '..'], 'B'], [['.W', 'B.'], 'B'], [['WW', 'BB'], 'B'], [['..', '..'], 'B'], [['.W', '.W'], 'W'], [['WW', 'BB'], 'W'], [['..', '..'], 'B']], ['WW', 'BB'], 'W', 'positional'], 2]], [[[[[['.W', 'W.'], 'W'], [['BW', 'W.'], 'B'], [['.B', '..'], 'B'], [['.B', '.B'], 'B'], [['B.', 'WB'], 'W'], [['.B', '..'], 'W']], ['.B', '..'], 'W', 'situational'], 5], [[[[['.BW', '.BB', '..B'], 'B']], ['.BW', '.BB', '..B'], 'W', 'situational'], 'legal'], [[[[['B.', 'W.'], 'W'], [['..', '.B'], 'B'], [['W.', 'BW'], 'B'], [['BB', 'B.'], 'B']], ['..', '.B'], 'B', 'positional'], 1], [[[[['WB.', 'WB.', '.BB'], 'B'], [['BW.', 'B..', '.WB'], 'B'], [['..B', '..W', '...'], 'W'], [['..B', '..B', 'W..'], 'W']], ['BW.', 'B..', '.WB'], 'W', 'situational'], 'legal'], [[[[['...', 'BW.', 'BBW'], 'B'], [['.W.', '..B', 'BBW'], 'B'], [['W.B', '.W.', '...'], 'B'], [['.WB', '.BW', '..W'], 'W'], [['...', 'W.B', 'W.B'], 'B']], ['.WW', '.W.', 'BW.'], 'B', 'positional'], 'legal'], [[[[['WW', 'W.'], 'W'], [['.W', '.W'], 'W'], [['..', 'B.'], 'B'], [['.W', '.W'], 'B'], [['W.', '..'], 'W'], [['..', 'WB'], 'W']], ['.W', '.W'], 'W', 'situational'], 1], [[[[['B.B', '.W.', 'WWB'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['.B.', 'W..', '.W.'], 'B'], [['.WW', '..B', 'BWW'], 'B'], [['.B.', '.B.', 'W.W'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['B.B', '.B.', '.BB'], 'B']], ['..B', 'WB.', '.B.'], 'W', 'situational'], 1], [[[[['B.B', 'B.B', '.BW'], 'W']], ['B.B', 'B.B', '.BW'], 'W', 'situational'], 0]], [[[[[['.W', 'WB'], 'B'], [['.W', '.W'], 'W'], [['.W', '.W'], 'B'], [['BB', '.B'], 'B'], [['.W', '.W'], 'B'], [['..', '..'], 'B']], ['.W', '.W'], 'B', 'situational'], 2], [[[[['WW.', '...', '..B'], 'B']], ['WW.', '...', '..B'], 'W', 'positional'], 0], [[[[['.BW', '...', '.W.'], 'B'], [['W..', '.B.', 'BBB'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['BW.', '.W.', '.B.'], 'W'], [['BBW', 'WW.', '...'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['B..', '...', 'B.B'], 'B']], ['WWW', 'WBB', '.WW'], 'B', 'positional'], 2], [[[[['..W', '.BW', 'W.W'], 'W'], [['W..', '.W.', '.W.'], 'W'], [['WWW', 'W.W', '...'], 'B'], [['WBB', 'WWB', 'B..'], 'W'], [['BB.', '.WB', '..B'], 'W'], [['W.W', 'B.B', '.B.'], 'B']], ['BBW', 'B..', 'B.W'], 'W', 'situational'], 'legal'], [[[[['B.B', 'WB.', '...'], 'W'], [['.W.', 'BWW', 'W..'], 'B']], ['B.B', 'WB.', '...'], 'B', 'situational'], 'legal'], [[[[['..', 'B.'], 'W'], [['.B', 'WB'], 'B'], [['..', '.W'], 'B'], [['..', '.W'], 'W'], [['.B', 'B.'], 'B']], ['..', '.W'], 'W', 'situational'], 3], [[[[['B..', '..B', 'W.B'], 'W']], ['B..', '..B', 'W.B'], 'W', 'positional'], 0], [[[[['BW.', 'W.B', '...'], 'B'], [['W.B', '.B.', 'WWB'], 'W'], [['W..', '.BB', '..W'], 'W'], [['.W.', 'BWW', '...'], 'B'], [['...', '.B.', 'B..'], 'W']], ['BW.', 'W.B', '...'], 'B', 'situational'], 0]], [[[[[['B.B', '.W.', 'WWB'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['.B.', 'W..', '.W.'], 'B'], [['.WW', '..B', 'BWW'], 'B'], [['.B.', '.B.', 'W.W'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['B.B', '.B.', '.BB'], 'B']], ['..B', 'WB.', '.B.'], 'W', 'situational'], 1], [[[[['W.', '..'], 'B'], [['..', 'B.'], 'W'], [['.B', '.B'], 'B'], [['B.', 'BW'], 'W'], [['BB', '..'], 'W']], ['..', 'WW'], 'B', 'situational'], 'legal'], [[[[['WWW', '..B', 'B..'], 'B'], [['..W', 'W.B', '.B.'], 'B'], [['..B', '...', '.B.'], 'W']], ['..W', '..W', 'B.W'], 'W', 'positional'], 'legal'], [[[[['.B', 'B.'], 'B'], [['.B', 'B.'], 'B'], [['BW', '..'], 'B'], [['.B', 'B.'], 'B'], [['.B', 'BB'], 'B']], ['.B', 'B.'], 'B', 'situational'], 0], [[[[['W.', '.W'], 'B'], [['B.', '..'], 'B'], [['WB', '..'], 'B'], [['BW', '.W'], 'W']], ['BW', '.W'], 'B', 'positional'], 3], [[[[['B.W', 'W.W', 'B.W'], 'W'], [['BWB', '.BW', 'B..'], 'W'], [['..W', 'B..', 'B..'], 'B'], [['WWW', 'B.B', 'WW.'], 'W'], [['.BB', '.WB', '..B'], 'B']], ['BBB', '.W.', 'W.W'], 'B', 'positional'], 'legal'], [[[[['...', '.W.', 'BWW'], 'B'], [['BWB', 'W.W', 'WBW'], 'B'], [['...', '...', '...'], 'B'], [['..W', '.WB', 'B..'], 'B'], [['WBW', 'WWB', 'WB.'], 'W']], ['...', '.W.', 'BWW'], 'W', 'positional'], 0], [[[[['BW', 'WW'], 'B'], [['.B', 'B.'], 'W'], [['..', '..'], 'W'], [['.B', '.B'], 'W'], [['WW', '.W'], 'W'], [['B.', '..'], 'B'], [['.B', 'B.'], 'W'], [['..', '.B'], 'B']], ['.B', 'B.'], 'W', 'situational'], 1]], [[[[[['.BW', '...', '.W.'], 'B'], [['W..', '.B.', 'BBB'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['BW.', '.W.', '.B.'], 'W'], [['BBW', 'WW.', '...'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['B..', '...', 'B.B'], 'B']], ['WWW', 'WBB', '.WW'], 'B', 'positional'], 2], [[[[['...', '.W.', 'BWW'], 'B'], [['BWB', 'W.W', 'WBW'], 'B'], [['...', '...', '...'], 'B'], [['..W', '.WB', 'B..'], 'B'], [['WBW', 'WWB', 'WB.'], 'W']], ['...', '.W.', 'BWW'], 'W', 'positional'], 0], [[[[['.B', 'B.'], 'W'], [['B.', 'W.'], 'W']], ['.B', 'B.'], 'B', 'situational'], 'legal'], [[[[['.W.', 'W..', 'B.W'], 'W'], [['WW.', '.W.', '...'], 'B'], [['.BB', '..W', 'WBW'], 'B'], [['.W.', 'BW.', 'BB.'], 'W']], ['WWW', '..W', 'WW.'], 'B', 'positional'], 'legal'], [[[[['..W', 'BBW', '.W.'], 'B'], [['..B', 'WBW', 'BW.'], 'W'], [['.B.', '..B', 'B..'], 'W']], ['..W', 'BBW', '.W.'], 'B', 'situational'], 0], [[[[['BW.', 'W.B', '...'], 'B'], [['W.B', '.B.', 'WWB'], 'W'], [['W..', '.BB', '..W'], 'W'], [['.W.', 'BWW', '...'], 'B'], [['...', '.B.', 'B..'], 'W']], ['BW.', 'W.B', '...'], 'B', 'situational'], 0], [[[[['BB.', 'BB.', 'WBB'], 'B'], [['..B', 'BW.', 'BBB'], 'W']], ['..B', 'BW.', 'BBB'], 'B', 'situational'], 'legal'], [[[[['.W', '.B'], 'B'], [['.B', '..'], 'W'], [['.B', '..'], 'W'], [['BB', '.B'], 'B']], ['.B', '..'], 'W', 'positional'], 1]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"superko 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":"94058bf5c484b1e5cccad0eaca09ca31927676d402192ee04facbb0c9bec9140","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    history, cand, mover, mode = x\n    key = tuple(cand)\n    for idx, (past, to_move) in enumerate(history):\n        if tuple(past) != key:\n            continue\n        if mode == 'situational' and to_move != mover:\n            continue\n        return idx\n    return 'legal'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[['.B', '..'], 'W'], [['.B', 'WW'], 'W']], ['.B', 'WW'], 'B', 'positional'], 1], [[[[['B.', '..'], 'W'], [['.B', 'WB'], 'W'], [['WW', 'BW'], 'W']], ['.B', 'WB'], 'B', 'situational'], 'legal'], [[[[['.W', 'W.'], 'W'], [['BW', 'W.'], 'B'], [['.B', '..'], 'B'], [['.B', '.B'], 'B'], [['B.', 'WB'], 'W'], [['.B', '..'], 'W']], ['.B', '..'], 'W', 'situational'], 5], [[[[['W.', '.B'], 'B'], [['WB', 'WB'], 'W'], [['WB', 'WB'], 'W'], [['.B', 'BB'], 'B']], ['WB', 'WB'], 'W', 'situational'], 1], [[[[['BW', 'W.'], 'B'], [['W.', 'BB'], 'B']], ['BW', 'W.'], 'B', 'positional'], 0], [[[[['..', 'W.'], 'B'], [['.W', '..'], 'B'], [['B.', 'BW'], 'W']], ['..', 'W.'], 'B', 'positional'], 0], [[[[['...', '...', '.B.'], 'B'], [['.B.', '.BW', 'B.W'], 'B'], [['BW.', 'W.W', '.W.'], 'B']], ['B.W', '..B', 'W.W'], 'W', 'positional'], 'legal'], [[[[['B.', '..'], 'B'], [['.W', 'B.'], 'B'], [['WW', 'BB'], 'B'], [['..', '..'], 'B'], [['.W', '.W'], 'W'], [['WW', 'BB'], 'W'], [['..', '..'], 'B']], ['WW', 'BB'], 'W', 'positional'], 2]], [[[[[['.W', 'W.'], 'W'], [['BW', 'W.'], 'B'], [['.B', '..'], 'B'], [['.B', '.B'], 'B'], [['B.', 'WB'], 'W'], [['.B', '..'], 'W']], ['.B', '..'], 'W', 'situational'], 5], [[[[['.BW', '.BB', '..B'], 'B']], ['.BW', '.BB', '..B'], 'W', 'situational'], 'legal'], [[[[['B.', 'W.'], 'W'], [['..', '.B'], 'B'], [['W.', 'BW'], 'B'], [['BB', 'B.'], 'B']], ['..', '.B'], 'B', 'positional'], 1], [[[[['WB.', 'WB.', '.BB'], 'B'], [['BW.', 'B..', '.WB'], 'B'], [['..B', '..W', '...'], 'W'], [['..B', '..B', 'W..'], 'W']], ['BW.', 'B..', '.WB'], 'W', 'situational'], 'legal'], [[[[['...', 'BW.', 'BBW'], 'B'], [['.W.', '..B', 'BBW'], 'B'], [['W.B', '.W.', '...'], 'B'], [['.WB', '.BW', '..W'], 'W'], [['...', 'W.B', 'W.B'], 'B']], ['.WW', '.W.', 'BW.'], 'B', 'positional'], 'legal'], [[[[['WW', 'W.'], 'W'], [['.W', '.W'], 'W'], [['..', 'B.'], 'B'], [['.W', '.W'], 'B'], [['W.', '..'], 'W'], [['..', 'WB'], 'W']], ['.W', '.W'], 'W', 'situational'], 1], [[[[['B.B', '.W.', 'WWB'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['.B.', 'W..', '.W.'], 'B'], [['.WW', '..B', 'BWW'], 'B'], [['.B.', '.B.', 'W.W'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['B.B', '.B.', '.BB'], 'B']], ['..B', 'WB.', '.B.'], 'W', 'situational'], 1], [[[[['B.B', 'B.B', '.BW'], 'W']], ['B.B', 'B.B', '.BW'], 'W', 'situational'], 0]], [[[[[['.W', 'WB'], 'B'], [['.W', '.W'], 'W'], [['.W', '.W'], 'B'], [['BB', '.B'], 'B'], [['.W', '.W'], 'B'], [['..', '..'], 'B']], ['.W', '.W'], 'B', 'situational'], 2], [[[[['WW.', '...', '..B'], 'B']], ['WW.', '...', '..B'], 'W', 'positional'], 0], [[[[['.BW', '...', '.W.'], 'B'], [['W..', '.B.', 'BBB'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['BW.', '.W.', '.B.'], 'W'], [['BBW', 'WW.', '...'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['B..', '...', 'B.B'], 'B']], ['WWW', 'WBB', '.WW'], 'B', 'positional'], 2], [[[[['..W', '.BW', 'W.W'], 'W'], [['W..', '.W.', '.W.'], 'W'], [['WWW', 'W.W', '...'], 'B'], [['WBB', 'WWB', 'B..'], 'W'], [['BB.', '.WB', '..B'], 'W'], [['W.W', 'B.B', '.B.'], 'B']], ['BBW', 'B..', 'B.W'], 'W', 'situational'], 'legal'], [[[[['B.B', 'WB.', '...'], 'W'], [['.W.', 'BWW', 'W..'], 'B']], ['B.B', 'WB.', '...'], 'B', 'situational'], 'legal'], [[[[['..', 'B.'], 'W'], [['.B', 'WB'], 'B'], [['..', '.W'], 'B'], [['..', '.W'], 'W'], [['.B', 'B.'], 'B']], ['..', '.W'], 'W', 'situational'], 3], [[[[['B..', '..B', 'W.B'], 'W']], ['B..', '..B', 'W.B'], 'W', 'positional'], 0], [[[[['BW.', 'W.B', '...'], 'B'], [['W.B', '.B.', 'WWB'], 'W'], [['W..', '.BB', '..W'], 'W'], [['.W.', 'BWW', '...'], 'B'], [['...', '.B.', 'B..'], 'W']], ['BW.', 'W.B', '...'], 'B', 'situational'], 0]], [[[[[['B.B', '.W.', 'WWB'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['.B.', 'W..', '.W.'], 'B'], [['.WW', '..B', 'BWW'], 'B'], [['.B.', '.B.', 'W.W'], 'B'], [['..B', 'WB.', '.B.'], 'W'], [['B.B', '.B.', '.BB'], 'B']], ['..B', 'WB.', '.B.'], 'W', 'situational'], 1], [[[[['W.', '..'], 'B'], [['..', 'B.'], 'W'], [['.B', '.B'], 'B'], [['B.', 'BW'], 'W'], [['BB', '..'], 'W']], ['..', 'WW'], 'B', 'situational'], 'legal'], [[[[['WWW', '..B', 'B..'], 'B'], [['..W', 'W.B', '.B.'], 'B'], [['..B', '...', '.B.'], 'W']], ['..W', '..W', 'B.W'], 'W', 'positional'], 'legal'], [[[[['.B', 'B.'], 'B'], [['.B', 'B.'], 'B'], [['BW', '..'], 'B'], [['.B', 'B.'], 'B'], [['.B', 'BB'], 'B']], ['.B', 'B.'], 'B', 'situational'], 0], [[[[['W.', '.W'], 'B'], [['B.', '..'], 'B'], [['WB', '..'], 'B'], [['BW', '.W'], 'W']], ['BW', '.W'], 'B', 'positional'], 3], [[[[['B.W', 'W.W', 'B.W'], 'W'], [['BWB', '.BW', 'B..'], 'W'], [['..W', 'B..', 'B..'], 'B'], [['WWW', 'B.B', 'WW.'], 'W'], [['.BB', '.WB', '..B'], 'B']], ['BBB', '.W.', 'W.W'], 'B', 'positional'], 'legal'], [[[[['...', '.W.', 'BWW'], 'B'], [['BWB', 'W.W', 'WBW'], 'B'], [['...', '...', '...'], 'B'], [['..W', '.WB', 'B..'], 'B'], [['WBW', 'WWB', 'WB.'], 'W']], ['...', '.W.', 'BWW'], 'W', 'positional'], 0], [[[[['BW', 'WW'], 'B'], [['.B', 'B.'], 'W'], [['..', '..'], 'W'], [['.B', '.B'], 'W'], [['WW', '.W'], 'W'], [['B.', '..'], 'B'], [['.B', 'B.'], 'W'], [['..', '.B'], 'B']], ['.B', 'B.'], 'W', 'situational'], 1]], [[[[[['.BW', '...', '.W.'], 'B'], [['W..', '.B.', 'BBB'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['BW.', '.W.', '.B.'], 'W'], [['BBW', 'WW.', '...'], 'B'], [['WWW', 'WBB', '.WW'], 'B'], [['B..', '...', 'B.B'], 'B']], ['WWW', 'WBB', '.WW'], 'B', 'positional'], 2], [[[[['...', '.W.', 'BWW'], 'B'], [['BWB', 'W.W', 'WBW'], 'B'], [['...', '...', '...'], 'B'], [['..W', '.WB', 'B..'], 'B'], [['WBW', 'WWB', 'WB.'], 'W']], ['...', '.W.', 'BWW'], 'W', 'positional'], 0], [[[[['.B', 'B.'], 'W'], [['B.', 'W.'], 'W']], ['.B', 'B.'], 'B', 'situational'], 'legal'], [[[[['.W.', 'W..', 'B.W'], 'W'], [['WW.', '.W.', '...'], 'B'], [['.BB', '..W', 'WBW'], 'B'], [['.W.', 'BW.', 'BB.'], 'W']], ['WWW', '..W', 'WW.'], 'B', 'positional'], 'legal'], [[[[['..W', 'BBW', '.W.'], 'B'], [['..B', 'WBW', 'BW.'], 'W'], [['.B.', '..B', 'B..'], 'W']], ['..W', 'BBW', '.W.'], 'B', 'situational'], 0], [[[[['BW.', 'W.B', '...'], 'B'], [['W.B', '.B.', 'WWB'], 'W'], [['W..', '.BB', '..W'], 'W'], [['.W.', 'BWW', '...'], 'B'], [['...', '.B.', 'B..'], 'W']], ['BW.', 'W.B', '...'], 'B', 'situational'], 0], [[[[['BB.', 'BB.', 'WBB'], 'B'], [['..B', 'BW.', 'BBB'], 'W']], ['..B', 'BW.', 'BBB'], 'B', 'situational'], 'legal'], [[[[['.W', '.B'], 'B'], [['.B', '..'], 'W'], [['.B', '..'], 'W'], [['BB', '.B'], 'B']], ['.B', '..'], 'W', 'positional'], 1]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"superko 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-superko-history-window","generated_at":"2026-09-29T14:50:16.621923+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":"Scan the entire game history.","root_cause":"The scan is restricted to the single previous-but-one position, i.e. a simple ko test.","sha256":"a928c8d838742a2eb37c0b10fce5ce741f9d5dea91181d11f87a75bf14840603","title":"Superko only compares against the position before the last move · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.939,"exit_code":1,"observations":[{"actual":1,"check":"superko case 0","expected":1,"passed":true},{"actual":"legal","check":"superko case 1","expected":"legal","passed":true},{"actual":5,"check":"superko case 2","expected":5,"passed":true},{"actual":1,"check":"superko case 3","expected":1,"passed":true},{"actual":0,"check":"superko case 4","expected":0,"passed":true},{"actual":0,"check":"superko case 5","expected":0,"passed":true},{"actual":"legal","check":"superko case 6","expected":"legal","passed":true},{"actual":5,"check":"superko case 7","expected":2,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"superko case 0\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"superko case 1\", \"actual\": \"legal\", \"expected\": \"legal\", \"passed\": true}, {\"check\": \"superko case 2\", \"actual\": 5, \"expected\": 5, \"passed\": true}, {\"check\": \"superko case 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"superko case 4\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"superko case 5\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"superko case 6\", \"actual\": \"legal\", \"expected\": \"legal\", \"passed\": true}, {\"check\": \"superko case 7\", \"actual\": 5, \"expected\": 2, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.828,"exit_code":1,"observations":[{"actual":"legal","check":"superko case 0","expected":1,"passed":false},{"actual":"legal","check":"superko case 1","expected":"legal","passed":true},{"actual":"legal","check":"superko case 2","expected":5,"passed":false},{"actual":2,"check":"superko case 3","expected":1,"passed":false},{"actual":0,"check":"superko case 4","expected":0,"passed":true},{"actual":"legal","check":"superko case 5","expected":0,"passed":false},{"actual":"legal","check":"superko case 6","expected":"legal","passed":true},{"actual":5,"check":"superko case 7","expected":2,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"superko case 0\", \"actual\": \"legal\", \"expected\": 1, \"passed\": false}, {\"check\": \"superko case 1\", \"actual\": \"legal\", \"expected\": \"legal\", \"passed\": true}, {\"check\": \"superko case 2\", \"actual\": \"legal\", \"expected\": 5, \"passed\": false}, {\"check\": \"superko case 3\", \"actual\": 2, \"expected\": 1, \"passed\": false}, {\"check\": \"superko case 4\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"superko case 5\", \"actual\": \"legal\", \"expected\": 0, \"passed\": false}, {\"check\": \"superko case 6\", \"actual\": \"legal\", \"expected\": \"legal\", \"passed\": true}, {\"check\": \"superko case 7\", \"actual\": 5, \"expected\": 2, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.901,"exit_code":0,"observations":[{"actual":1,"check":"superko case 0","expected":1,"passed":true},{"actual":"legal","check":"superko case 1","expected":"legal","passed":true},{"actual":5,"check":"superko case 2","expected":5,"passed":true},{"actual":1,"check":"superko case 3","expected":1,"passed":true},{"actual":0,"check":"superko case 4","expected":0,"passed":true},{"actual":0,"check":"superko case 5","expected":0,"passed":true},{"actual":"legal","check":"superko case 6","expected":"legal","passed":true},{"actual":2,"check":"superko case 7","expected":2,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"superko case 0\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"superko case 1\", \"actual\": \"legal\", \"expected\": \"legal\", \"passed\": true}, {\"check\": \"superko case 2\", \"actual\": 5, \"expected\": 5, \"passed\": true}, {\"check\": \"superko case 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"superko case 4\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"superko case 5\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"superko case 6\", \"actual\": \"legal\", \"expected\": \"legal\", \"passed\": true}, {\"check\": \"superko case 7\", \"actual\": 2, \"expected\": 2, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}