{"abstract":"A bishop on f5 is not offered e4, d3 or the capture on c2, and some targets repeat.","category":"Chess move legality","checks":8,"contract":"Input: {\"board\", \"from\": square of a rook, bishop or queen}. Return the sorted pseudo-legal destinations: walk each ray until the edge; an empty square is added, an enemy piece is added and ends the ray, a friendly piece ends the ray without being added.","evaluation_group":"w2-chess_move_legality-slider-ray-walk","failed_approach":"Duplicating (-1,-1) instead drops the south-east diagonal.","family":"w2-chess_move_legality-slider-ray-walk-bishop-direction-set","id":"FA-82381","implementations":{"attempt":{"sha256":"dc010483b844d1308011642d8ad1df7edce52e623421e82ed06fc2e4281f1f09","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=x['board']; sq=x['from']; p=b[sq]\n    f,r=ord(sq[0])-97,int(sq[1])-1\n    dirs={'r':[(1,0),(-1,0),(0,1),(0,-1)],'b':[(1,1),(-1,-1),(-1,1),(-1,-1)]}\n    dirs['q']=dirs['r']+dirs['b']\n    out=[]\n    for df,dr in dirs[p.lower()]:\n        cf,cr=f+df,r+dr\n        while 0<=cf<8 and 0<=cr<8:\n            t=chr(97+cf)+str(cr+1)\n            occ=b.get(t)\n            if occ is None:\n                out.append(t)\n            else:\n                if occ.isupper()!=p.isupper(): out.append(t)\n                break\n            cf+=df; cr+=dr\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])]]\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":"7e753c381002c8d6edf2909e6c2c4ea7775ebf9ae754cbf252af7220cab8be4f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=x['board']; sq=x['from']; p=b[sq]\n    f,r=ord(sq[0])-97,int(sq[1])-1\n    dirs={'r':[(1,0),(-1,0),(0,1),(0,-1)],'b':[(1,1),(1,-1),(-1,1),(1,1)]}\n    dirs['q']=dirs['r']+dirs['b']\n    out=[]\n    for df,dr in dirs[p.lower()]:\n        cf,cr=f+df,r+dr\n        while 0<=cf<8 and 0<=cr<8:\n            t=chr(97+cf)+str(cr+1)\n            occ=b.get(t)\n            if occ is None:\n                out.append(t)\n            else:\n                if occ.isupper()!=p.isupper(): out.append(t)\n                break\n            cf+=df; cr+=dr\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])]]\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":"e04ab25d195caa7843632f87a5c0d203bc7d3c76999e8b5ba00f147a39281558","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=x['board']; sq=x['from']; p=b[sq]\n    f,r=ord(sq[0])-97,int(sq[1])-1\n    dirs={'r':[(1,0),(-1,0),(0,1),(0,-1)],'b':[(1,1),(1,-1),(-1,1),(-1,-1)]}\n    dirs['q']=dirs['r']+dirs['b']\n    out=[]\n    for df,dr in dirs[p.lower()]:\n        cf,cr=f+df,r+dr\n        while 0<=cf<8 and 0<=cr<8:\n            t=chr(97+cf)+str(cr+1)\n            occ=b.get(t)\n            if occ is None:\n                out.append(t)\n            else:\n                if occ.isupper()!=p.isupper(): out.append(t)\n                break\n            cf+=df; cr+=dr\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop corner', {'board': {'e4': 'P', 'h1': 'b'}, 'from': 'h1'}, ['e4', 'f3', 'g2']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])],\n [('rook blocked by enemy', {'board': {'a1': 'R', 'a3': 'p', 'c1': 'N'}, 'from': 'a1'},\n   ['a2', 'a3', 'b1']),\n  ('rook behind enemy',\n   {'board': {'b4': 'b', 'd4': 'R', 'd6': 'p', 'd8': 'k', 'f4': 'P'}, 'from': 'd4'},\n   ['b4', 'c4', 'd1', 'd2', 'd3', 'd5', 'd6', 'e4']),\n  ('bishop centre',\n   {'board': {'b2': 'P', 'b6': 'P', 'd4': 'B', 'f6': 'n', 'g1': 'q'}, 'from': 'd4'},\n   ['c3', 'c5', 'e3', 'e5', 'f2', 'f6', 'g1']),\n  ('queen boxed',\n   {'board': {'d1': 'K', 'd2': 'P', 'e1': 'Q', 'e2': 'P', 'f1': 'B', 'f2': 'P'}, 'from': 'e1'},\n   []),\n  ('queen open', {'board': {'a5': 'R', 'd5': 'q', 'd7': 'p', 'g8': 'P'}, 'from': 'd5'},\n   ['a2', 'a5', 'a8', 'b3', 'b5', 'b7', 'c4', 'c5', 'c6', 'd1', 'd2', 'd3', 'd4', 'd6', 'e4', 'e5',\n    'e6', 'f3', 'f5', 'f7', 'g2', 'g5', 'g8', 'h1', 'h5']),\n  ('black rook top edge', {'board': {'e8': 'k', 'h5': 'P', 'h8': 'r'}, 'from': 'h8'},\n   ['f8', 'g8', 'h5', 'h6', 'h7']),\n  ('queen along diagonal capture',\n   {'board': {'a3': 'n', 'c1': 'Q', 'c3': 'P', 'h6': 'r'}, 'from': 'c1'},\n   ['a1', 'a3', 'b1', 'b2', 'c2', 'd1', 'd2', 'e1', 'e3', 'f1', 'f4', 'g1', 'g5', 'h1', 'h6']),\n  ('bishop sw ray', {'board': {'c2': 'r', 'f5': 'B', 'h7': 'p'}, 'from': 'f5'},\n   ['c2', 'c8', 'd3', 'd7', 'e4', 'e6', 'g4', 'g6', 'h3', 'h7'])]]\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-slider-ray-walk-bishop-direction-set","generated_at":"2026-09-29T14:50:11.509119+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Move validators gate every move in engines, servers and arbiters; accepting an illegal move or rejecting a legal one corrupts the game record.","repair":"List the four distinct diagonal directions.","root_cause":"The south-west diagonal (-1,-1) was typed as a second (1,1).","sha256":"8cb2f1ee832c2fe1447e8a19c18d8ae4969c9606e3bf7ae4827f3cdaf3576444","title":"Bishop never moves toward a1 · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.177,"exit_code":1,"observations":[{"actual":["a2","a3","b1"],"check":"rook blocked by enemy","expected":["a2","a3","b1"],"passed":true},{"actual":["b4","c4","d1","d2","d3","d5","d6","e4"],"check":"rook behind enemy","expected":["b4","c4","d1","d2","d3","d5","d6","e4"],"passed":true},{"actual":["e4","f3","g2"],"check":"bishop corner","expected":["e4","f3","g2"],"passed":true},{"actual":["c3","c3","c5","e5","f6"],"check":"bishop centre","expected":["c3","c5","e3","e5","f2","f6","g1"],"passed":false},{"actual":[],"check":"queen boxed","expected":[],"passed":true},{"actual":["a2","a2","a5","a8","b3","b3","b5","b7","c4","c4","c5","c6","d1","d2","d3","d4","d6","e5","e6","f5","f7","g5","g8","h5"],"check":"queen open","expected":["a2","a5","a8","b3","b5","b7","c4","c5","c6","d1","d2","d3","d4","d6","e4","e5","e6","f3","f5","f7","g2","g5","g8","h1","h5"],"passed":false},{"actual":["f8","g8","h5","h6","h7"],"check":"black rook top edge","expected":["f8","g8","h5","h6","h7"],"passed":true},{"actual":["a1","a3","b1","b2","c2","d1","d2","e1","e3","f1","f4","g1","g5","h1","h6"],"check":"queen along diagonal capture","expected":["a1","a3","b1","b2","c2","d1","d2","e1","e3","f1","f4","g1","g5","h1","h6"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"rook blocked by enemy\", \"actual\": [\"a2\", \"a3\", \"b1\"], \"expected\": [\"a2\", \"a3\", \"b1\"], \"passed\": true}, {\"check\": \"rook behind enemy\", \"actual\": [\"b4\", \"c4\", \"d1\", \"d2\", \"d3\", \"d5\", \"d6\", \"e4\"], \"expected\": [\"b4\", \"c4\", \"d1\", \"d2\", \"d3\", \"d5\", \"d6\", \"e4\"], \"passed\": true}, {\"check\": \"bishop corner\", \"actual\": [\"e4\", \"f3\", \"g2\"], \"expected\": [\"e4\", \"f3\", \"g2\"], \"passed\": true}, {\"check\": \"bishop centre\", \"actual\": [\"c3\", \"c3\", \"c5\", \"e5\", \"f6\"], \"expected\": [\"c3\", \"c5\", \"e3\", \"e5\", \"f2\", \"f6\", \"g1\"], \"passed\": false}, {\"check\": \"queen boxed\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"queen open\", \"actual\": [\"a2\", \"a2\", \"a5\", \"a8\", \"b3\", \"b3\", \"b5\", \"b7\", \"c4\", \"c4\", \"c5\", \"c6\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e5\", \"e6\", \"f5\", \"f7\", \"g5\", \"g8\", \"h5\"], \"expected\": [\"a2\", \"a5\", \"a8\", \"b3\", \"b5\", \"b7\", \"c4\", \"c5\", \"c6\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e4\", \"e5\", \"e6\", \"f3\", \"f5\", \"f7\", \"g2\", \"g5\", \"g8\", \"h1\", \"h5\"], \"passed\": false}, {\"check\": \"black rook top edge\", \"actual\": [\"f8\", \"g8\", \"h5\", \"h6\", \"h7\"], \"expected\": [\"f8\", \"g8\", \"h5\", \"h6\", \"h7\"], \"passed\": true}, {\"check\": \"queen along diagonal capture\", \"actual\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"expected\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.24,"exit_code":1,"observations":[{"actual":["a2","a3","b1"],"check":"rook blocked by enemy","expected":["a2","a3","b1"],"passed":true},{"actual":["b4","c4","d1","d2","d3","d5","d6","e4"],"check":"rook behind enemy","expected":["b4","c4","d1","d2","d3","d5","d6","e4"],"passed":true},{"actual":["e4","f3","g2"],"check":"bishop corner","expected":["e4","f3","g2"],"passed":true},{"actual":["c5","e3","e5","e5","f2","f6","f6","g1"],"check":"bishop centre","expected":["c3","c5","e3","e5","f2","f6","g1"],"passed":false},{"actual":[],"check":"queen boxed","expected":[],"passed":true},{"actual":["a5","a8","b5","b7","c5","c6","d1","d2","d3","d4","d6","e4","e5","e6","e6","f3","f5","f7","f7","g2","g5","g8","g8","h1","h5"],"check":"queen open","expected":["a2","a5","a8","b3","b5","b7","c4","c5","c6","d1","d2","d3","d4","d6","e4","e5","e6","f3","f5","f7","g2","g5","g8","h1","h5"],"passed":false},{"actual":["f8","g8","h5","h6","h7"],"check":"black rook top edge","expected":["f8","g8","h5","h6","h7"],"passed":true},{"actual":["a1","a3","b1","b2","c2","d1","d2","d2","e1","e3","e3","f1","f4","f4","g1","g5","g5","h1","h6","h6"],"check":"queen along diagonal capture","expected":["a1","a3","b1","b2","c2","d1","d2","e1","e3","f1","f4","g1","g5","h1","h6"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"rook blocked by enemy\", \"actual\": [\"a2\", \"a3\", \"b1\"], \"expected\": [\"a2\", \"a3\", \"b1\"], \"passed\": true}, {\"check\": \"rook behind enemy\", \"actual\": [\"b4\", \"c4\", \"d1\", \"d2\", \"d3\", \"d5\", \"d6\", \"e4\"], \"expected\": [\"b4\", \"c4\", \"d1\", \"d2\", \"d3\", \"d5\", \"d6\", \"e4\"], \"passed\": true}, {\"check\": \"bishop corner\", \"actual\": [\"e4\", \"f3\", \"g2\"], \"expected\": [\"e4\", \"f3\", \"g2\"], \"passed\": true}, {\"check\": \"bishop centre\", \"actual\": [\"c5\", \"e3\", \"e5\", \"e5\", \"f2\", \"f6\", \"f6\", \"g1\"], \"expected\": [\"c3\", \"c5\", \"e3\", \"e5\", \"f2\", \"f6\", \"g1\"], \"passed\": false}, {\"check\": \"queen boxed\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"queen open\", \"actual\": [\"a5\", \"a8\", \"b5\", \"b7\", \"c5\", \"c6\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e4\", \"e5\", \"e6\", \"e6\", \"f3\", \"f5\", \"f7\", \"f7\", \"g2\", \"g5\", \"g8\", \"g8\", \"h1\", \"h5\"], \"expected\": [\"a2\", \"a5\", \"a8\", \"b3\", \"b5\", \"b7\", \"c4\", \"c5\", \"c6\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e4\", \"e5\", \"e6\", \"f3\", \"f5\", \"f7\", \"g2\", \"g5\", \"g8\", \"h1\", \"h5\"], \"passed\": false}, {\"check\": \"black rook top edge\", \"actual\": [\"f8\", \"g8\", \"h5\", \"h6\", \"h7\"], \"expected\": [\"f8\", \"g8\", \"h5\", \"h6\", \"h7\"], \"passed\": true}, {\"check\": \"queen along diagonal capture\", \"actual\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"d2\", \"e1\", \"e3\", \"e3\", \"f1\", \"f4\", \"f4\", \"g1\", \"g5\", \"g5\", \"h1\", \"h6\", \"h6\"], \"expected\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.281,"exit_code":0,"observations":[{"actual":["a2","a3","b1"],"check":"rook blocked by enemy","expected":["a2","a3","b1"],"passed":true},{"actual":["b4","c4","d1","d2","d3","d5","d6","e4"],"check":"rook behind enemy","expected":["b4","c4","d1","d2","d3","d5","d6","e4"],"passed":true},{"actual":["e4","f3","g2"],"check":"bishop corner","expected":["e4","f3","g2"],"passed":true},{"actual":["c3","c5","e3","e5","f2","f6","g1"],"check":"bishop centre","expected":["c3","c5","e3","e5","f2","f6","g1"],"passed":true},{"actual":[],"check":"queen boxed","expected":[],"passed":true},{"actual":["a2","a5","a8","b3","b5","b7","c4","c5","c6","d1","d2","d3","d4","d6","e4","e5","e6","f3","f5","f7","g2","g5","g8","h1","h5"],"check":"queen open","expected":["a2","a5","a8","b3","b5","b7","c4","c5","c6","d1","d2","d3","d4","d6","e4","e5","e6","f3","f5","f7","g2","g5","g8","h1","h5"],"passed":true},{"actual":["f8","g8","h5","h6","h7"],"check":"black rook top edge","expected":["f8","g8","h5","h6","h7"],"passed":true},{"actual":["a1","a3","b1","b2","c2","d1","d2","e1","e3","f1","f4","g1","g5","h1","h6"],"check":"queen along diagonal capture","expected":["a1","a3","b1","b2","c2","d1","d2","e1","e3","f1","f4","g1","g5","h1","h6"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"rook blocked by enemy\", \"actual\": [\"a2\", \"a3\", \"b1\"], \"expected\": [\"a2\", \"a3\", \"b1\"], \"passed\": true}, {\"check\": \"rook behind enemy\", \"actual\": [\"b4\", \"c4\", \"d1\", \"d2\", \"d3\", \"d5\", \"d6\", \"e4\"], \"expected\": [\"b4\", \"c4\", \"d1\", \"d2\", \"d3\", \"d5\", \"d6\", \"e4\"], \"passed\": true}, {\"check\": \"bishop corner\", \"actual\": [\"e4\", \"f3\", \"g2\"], \"expected\": [\"e4\", \"f3\", \"g2\"], \"passed\": true}, {\"check\": \"bishop centre\", \"actual\": [\"c3\", \"c5\", \"e3\", \"e5\", \"f2\", \"f6\", \"g1\"], \"expected\": [\"c3\", \"c5\", \"e3\", \"e5\", \"f2\", \"f6\", \"g1\"], \"passed\": true}, {\"check\": \"queen boxed\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"queen open\", \"actual\": [\"a2\", \"a5\", \"a8\", \"b3\", \"b5\", \"b7\", \"c4\", \"c5\", \"c6\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e4\", \"e5\", \"e6\", \"f3\", \"f5\", \"f7\", \"g2\", \"g5\", \"g8\", \"h1\", \"h5\"], \"expected\": [\"a2\", \"a5\", \"a8\", \"b3\", \"b5\", \"b7\", \"c4\", \"c5\", \"c6\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e4\", \"e5\", \"e6\", \"f3\", \"f5\", \"f7\", \"g2\", \"g5\", \"g8\", \"h1\", \"h5\"], \"passed\": true}, {\"check\": \"black rook top edge\", \"actual\": [\"f8\", \"g8\", \"h5\", \"h6\", \"h7\"], \"expected\": [\"f8\", \"g8\", \"h5\", \"h6\", \"h7\"], \"passed\": true}, {\"check\": \"queen along diagonal capture\", \"actual\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"expected\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}