{"abstract":"A black king on e5 attacked along the e-file may step back to e6.","category":"Chess move legality","checks":8,"contract":"Input: {\"wk\", \"wr\", \"bk\"} squares (black to move). Return the sorted squares the black king may move to: on the board, not adjacent to the white king, and not attacked by the rook along a rank or file (the white king blocks the rook; the black king's origin does not). Capturing the rook is legal when the rook is not adjacent to the white king.","evaluation_group":"w2-chess_move_legality-krk-escape-squares","failed_approach":"Ignoring all blockers makes the white king transparent to the rook.","family":"w2-chess_move_legality-krk-escape-squares-ray-shield-piece","id":"FA-82711","implementations":{"attempt":{"sha256":"834b35a4057a9d1330add7ce2f6b0b22933be08b9eb1a277f806257f970a0a5b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    def c(q): return ord(q[0])-97,int(q[1])-1\n    wk,wr,bk=c(x['wk']),c(x['wr']),c(x['bk'])\n    def rook_hits(t):\n        if wr==t: return False\n        if wr[0]!=t[0] and wr[1]!=t[1]: return False\n        sf=(t[0]>wr[0])-(t[0]<wr[0]); sr=(t[1]>wr[1])-(t[1]<wr[1])\n        f,r=wr[0]+sf,wr[1]+sr\n        while (f,r)!=t:\n            if (f,r)==bk: return False\n            f+=sf; r+=sr\n        return True\n    out=[]\n    for df in (-1,0,1):\n        for dr in (-1,0,1):\n            if not (df or dr): continue\n            t=(bk[0]+df,bk[1]+dr)\n            if not (0<=t[0]<8 and 0<=t[1]<8): continue\n            if max(abs(t[0]-wk[0]),abs(t[1]-wk[1]))<=1: continue\n            if rook_hits(t): continue\n            out.append(chr(97+t[0])+str(t[1]+1))\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"856c4a47f95e1cf2b236030202d1bff9315d37c0ceb67746c01c3b796d4e09ed","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    def c(q): return ord(q[0])-97,int(q[1])-1\n    wk,wr,bk=c(x['wk']),c(x['wr']),c(x['bk'])\n    def rook_hits(t):\n        if wr==t: return False\n        if wr[0]!=t[0] and wr[1]!=t[1]: return False\n        sf=(t[0]>wr[0])-(t[0]<wr[0]); sr=(t[1]>wr[1])-(t[1]<wr[1])\n        f,r=wr[0]+sf,wr[1]+sr\n        while (f,r)!=t:\n            pass\n            f+=sf; r+=sr\n        return True\n    out=[]\n    for df in (-1,0,1):\n        for dr in (-1,0,1):\n            if not (df or dr): continue\n            t=(bk[0]+df,bk[1]+dr)\n            if not (0<=t[0]<8 and 0<=t[1]<8): continue\n            if max(abs(t[0]-wk[0]),abs(t[1]-wk[1]))<=1: continue\n            if rook_hits(t): continue\n            out.append(chr(97+t[0])+str(t[1]+1))\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"e2b00938c0a781610927f3524fbf48579a7a28c59bb5da11264b8482cbee305f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    def c(q): return ord(q[0])-97,int(q[1])-1\n    wk,wr,bk=c(x['wk']),c(x['wr']),c(x['bk'])\n    def rook_hits(t):\n        if wr==t: return False\n        if wr[0]!=t[0] and wr[1]!=t[1]: return False\n        sf=(t[0]>wr[0])-(t[0]<wr[0]); sr=(t[1]>wr[1])-(t[1]<wr[1])\n        f,r=wr[0]+sf,wr[1]+sr\n        while (f,r)!=t:\n            if (f,r)==wk: return False\n            f+=sf; r+=sr\n        return True\n    out=[]\n    for df in (-1,0,1):\n        for dr in (-1,0,1):\n            if not (df or dr): continue\n            t=(bk[0]+df,bk[1]+dr)\n            if not (0<=t[0]<8 and 0<=t[1]<8): continue\n            if max(abs(t[0]-wk[0]),abs(t[1]-wk[1]))<=1: continue\n            if rook_hits(t): continue\n            out.append(chr(97+t[0])+str(t[1]+1))\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('diagonal rook capture', {'bk': 'e5', 'wk': 'a1', 'wr': 'f4'}, ['d5', 'd6', 'e6', 'f4']),\n  ('back rank mate', {'bk': 'h8', 'wk': 'g6', 'wr': 'a8'}, []),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])],\n [('retreat along rook file', {'bk': 'e5', 'wk': 'a1', 'wr': 'e1'},\n   ['d4', 'd5', 'd6', 'f4', 'f5', 'f6']),\n  ('white king shields', {'bk': 'd5', 'wk': 'e3', 'wr': 'e1'},\n   ['c4', 'c5', 'c6', 'd6', 'e5', 'e6']),\n  ('capture undefended rook', {'bk': 'e5', 'wk': 'a1', 'wr': 'e4'}, ['d5', 'd6', 'e4', 'f5', 'f6']),\n  ('capture defended rook', {'bk': 'e5', 'wk': 'e3', 'wr': 'e4'}, ['d5', 'd6', 'f5', 'f6']),\n  ('rank cut', {'bk': 'd8', 'wk': 'a1', 'wr': 'h6'}, ['c7', 'c8', 'd7', 'e7', 'e8']),\n  ('corner king', {'bk': 'a8', 'wk': 'c3', 'wr': 'b7'}, ['b7']),\n  ('rook far file', {'bk': 'e5', 'wk': 'h1', 'wr': 'c2'},\n   ['d4', 'd5', 'd6', 'e4', 'e6', 'f4', 'f5', 'f6']),\n  ('shield on rank', {'bk': 'e5', 'wk': 'c6', 'wr': 'a6'}, ['d4', 'e4', 'e6', 'f4', 'f5', 'f6'])]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"A deterministic toy model with an explicitly stated contract; boards are {square: piece} with white upper-case and black lower-case pieces; no claim of full FIDE Laws conformance. 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-chess_move_legality-krk-escape-squares-ray-shield-piece","generated_at":"2026-09-29T14:50:14.680807+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Endgame tablebase generators and mate detectors depend on exact escape squares.","repair":"Only the white king can block the rook ray; the moving king's origin is vacated.","root_cause":"The rook ray treats the black king's current square as a blocker, although the king is the piece that moves.","sha256":"c9c227136b7a986a9316c3408f7a3aff29f088049d7d80d6323cf74eae822fd6","title":"Black king hides behind its own origin square · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.213,"exit_code":1,"observations":[{"actual":["d4","d5","d6","e6","f4","f5","f6"],"check":"retreat along rook file","expected":["d4","d5","d6","f4","f5","f6"],"passed":false},{"actual":["c4","c5","c6","d6"],"check":"white king shields","expected":["c4","c5","c6","d6","e5","e6"],"passed":false},{"actual":["d5","d6","e6","f4"],"check":"diagonal rook capture","expected":["d5","d6","e6","f4"],"passed":true},{"actual":[],"check":"back rank mate","expected":[],"passed":true},{"actual":["c7","c8","d7","e7","e8"],"check":"rank cut","expected":["c7","c8","d7","e7","e8"],"passed":true},{"actual":["b7"],"check":"corner king","expected":["b7"],"passed":true},{"actual":["d4","d5","d6","e4","e6","f4","f5","f6"],"check":"rook far file","expected":["d4","d5","d6","e4","e6","f4","f5","f6"],"passed":true},{"actual":["d4","e4","f4","f5"],"check":"shield on rank","expected":["d4","e4","e6","f4","f5","f6"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"retreat along rook file\", \"actual\": [\"d4\", \"d5\", \"d6\", \"e6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"d5\", \"d6\", \"f4\", \"f5\", \"f6\"], \"passed\": false}, {\"check\": \"white king shields\", \"actual\": [\"c4\", \"c5\", \"c6\", \"d6\"], \"expected\": [\"c4\", \"c5\", \"c6\", \"d6\", \"e5\", \"e6\"], \"passed\": false}, {\"check\": \"diagonal rook capture\", \"actual\": [\"d5\", \"d6\", \"e6\", \"f4\"], \"expected\": [\"d5\", \"d6\", \"e6\", \"f4\"], \"passed\": true}, {\"check\": \"back rank mate\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"rank cut\", \"actual\": [\"c7\", \"c8\", \"d7\", \"e7\", \"e8\"], \"expected\": [\"c7\", \"c8\", \"d7\", \"e7\", \"e8\"], \"passed\": true}, {\"check\": \"corner king\", \"actual\": [\"b7\"], \"expected\": [\"b7\"], \"passed\": true}, {\"check\": \"rook far file\", \"actual\": [\"d4\", \"d5\", \"d6\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"d5\", \"d6\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"passed\": true}, {\"check\": \"shield on rank\", \"actual\": [\"d4\", \"e4\", \"f4\", \"f5\"], \"expected\": [\"d4\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.212,"exit_code":1,"observations":[{"actual":["d4","d5","d6","f4","f5","f6"],"check":"retreat along rook file","expected":["d4","d5","d6","f4","f5","f6"],"passed":true},{"actual":["c4","c5","c6","d6"],"check":"white king shields","expected":["c4","c5","c6","d6","e5","e6"],"passed":false},{"actual":["d5","d6","e6","f4"],"check":"diagonal rook capture","expected":["d5","d6","e6","f4"],"passed":true},{"actual":[],"check":"back rank mate","expected":[],"passed":true},{"actual":["c7","c8","d7","e7","e8"],"check":"rank cut","expected":["c7","c8","d7","e7","e8"],"passed":true},{"actual":["b7"],"check":"corner king","expected":["b7"],"passed":true},{"actual":["d4","d5","d6","e4","e6","f4","f5","f6"],"check":"rook far file","expected":["d4","d5","d6","e4","e6","f4","f5","f6"],"passed":true},{"actual":["d4","e4","f4","f5"],"check":"shield on rank","expected":["d4","e4","e6","f4","f5","f6"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"retreat along rook file\", \"actual\": [\"d4\", \"d5\", \"d6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"d5\", \"d6\", \"f4\", \"f5\", \"f6\"], \"passed\": true}, {\"check\": \"white king shields\", \"actual\": [\"c4\", \"c5\", \"c6\", \"d6\"], \"expected\": [\"c4\", \"c5\", \"c6\", \"d6\", \"e5\", \"e6\"], \"passed\": false}, {\"check\": \"diagonal rook capture\", \"actual\": [\"d5\", \"d6\", \"e6\", \"f4\"], \"expected\": [\"d5\", \"d6\", \"e6\", \"f4\"], \"passed\": true}, {\"check\": \"back rank mate\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"rank cut\", \"actual\": [\"c7\", \"c8\", \"d7\", \"e7\", \"e8\"], \"expected\": [\"c7\", \"c8\", \"d7\", \"e7\", \"e8\"], \"passed\": true}, {\"check\": \"corner king\", \"actual\": [\"b7\"], \"expected\": [\"b7\"], \"passed\": true}, {\"check\": \"rook far file\", \"actual\": [\"d4\", \"d5\", \"d6\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"d5\", \"d6\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"passed\": true}, {\"check\": \"shield on rank\", \"actual\": [\"d4\", \"e4\", \"f4\", \"f5\"], \"expected\": [\"d4\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.107,"exit_code":0,"observations":[{"actual":["d4","d5","d6","f4","f5","f6"],"check":"retreat along rook file","expected":["d4","d5","d6","f4","f5","f6"],"passed":true},{"actual":["c4","c5","c6","d6","e5","e6"],"check":"white king shields","expected":["c4","c5","c6","d6","e5","e6"],"passed":true},{"actual":["d5","d6","e6","f4"],"check":"diagonal rook capture","expected":["d5","d6","e6","f4"],"passed":true},{"actual":[],"check":"back rank mate","expected":[],"passed":true},{"actual":["c7","c8","d7","e7","e8"],"check":"rank cut","expected":["c7","c8","d7","e7","e8"],"passed":true},{"actual":["b7"],"check":"corner king","expected":["b7"],"passed":true},{"actual":["d4","d5","d6","e4","e6","f4","f5","f6"],"check":"rook far file","expected":["d4","d5","d6","e4","e6","f4","f5","f6"],"passed":true},{"actual":["d4","e4","e6","f4","f5","f6"],"check":"shield on rank","expected":["d4","e4","e6","f4","f5","f6"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"retreat along rook file\", \"actual\": [\"d4\", \"d5\", \"d6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"d5\", \"d6\", \"f4\", \"f5\", \"f6\"], \"passed\": true}, {\"check\": \"white king shields\", \"actual\": [\"c4\", \"c5\", \"c6\", \"d6\", \"e5\", \"e6\"], \"expected\": [\"c4\", \"c5\", \"c6\", \"d6\", \"e5\", \"e6\"], \"passed\": true}, {\"check\": \"diagonal rook capture\", \"actual\": [\"d5\", \"d6\", \"e6\", \"f4\"], \"expected\": [\"d5\", \"d6\", \"e6\", \"f4\"], \"passed\": true}, {\"check\": \"back rank mate\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"rank cut\", \"actual\": [\"c7\", \"c8\", \"d7\", \"e7\", \"e8\"], \"expected\": [\"c7\", \"c8\", \"d7\", \"e7\", \"e8\"], \"passed\": true}, {\"check\": \"corner king\", \"actual\": [\"b7\"], \"expected\": [\"b7\"], \"passed\": true}, {\"check\": \"rook far file\", \"actual\": [\"d4\", \"d5\", \"d6\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"d5\", \"d6\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"passed\": true}, {\"check\": \"shield on rank\", \"actual\": [\"d4\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"expected\": [\"d4\", \"e4\", \"e6\", \"f4\", \"f5\", \"f6\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}