{"abstract":"A queen is never offered diagonal moves.","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.","contract_signature":"x","evaluation_group":"w2-chess_move_legality-slider-ray-walk","failed_approach":"Aliasing to the bishop directions drops the orthogonal moves instead.","family":"w2-chess_move_legality-slider-ray-walk-queen-direction-set","id":"FA-82376","implementations":{"attempt":{"sha256":"b9f2f925c4a9a4a2f0634ba6e3fdcf45e70231c83b770c4a99ab376cc47ea623","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['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  ('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'])]]\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":"16b1bc7be0eaf8bb7dc61b4a681db2a474393bd1b30c3b06083eb3cd3d11288b","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']\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  ('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'])]]\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-queen-direction-set","generated_at":"2026-09-29T14:50:11.495846+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.","root_cause":"The queen's direction list is aliased to the rook directions.","sha256":"d94bb8be0f71384c24c632df5c58dd1aef39fea451c377b7064e11094445283b","title":"Queen moves only like a rook · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.143,"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","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","a8","b3","b7","c4","c6","e4","e6","f3","f7","g2","g8","h1"],"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":["a3","b2","d2","e3","f4","g5","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\": [\"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\", \"a8\", \"b3\", \"b7\", \"c4\", \"c6\", \"e4\", \"e6\", \"f3\", \"f7\", \"g2\", \"g8\", \"h1\"], \"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\": [\"a3\", \"b2\", \"d2\", \"e3\", \"f4\", \"g5\", \"h6\"], \"expected\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.806,"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","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":["a5","b5","c5","d1","d2","d3","d4","d6","e5","f5","g5","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","b1","c2","d1","e1","f1","g1","h1"],"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\": [\"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\": [\"a5\", \"b5\", \"c5\", \"d1\", \"d2\", \"d3\", \"d4\", \"d6\", \"e5\", \"f5\", \"g5\", \"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\", \"b1\", \"c2\", \"d1\", \"e1\", \"f1\", \"g1\", \"h1\"], \"expected\": [\"a1\", \"a3\", \"b1\", \"b2\", \"c2\", \"d1\", \"d2\", \"e1\", \"e3\", \"f1\", \"f4\", \"g1\", \"g5\", \"h1\", \"h6\"], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}