{"abstract":"After Ke1-f1, white still holds the Q castling right.","category":"Chess move legality","checks":8,"contract":"Input: {\"board\" (before the move), \"rights\": castling rights string or \"-\", \"move\": [from, to], \"halfmove\"}. Return the next {\"rights\", \"ep\", \"halfmove\"}: a king move removes both of its side's rights; any move from or onto h1/a1/h8/a8 removes the matching right; a pawn double step sets ep to the skipped square only when an enemy pawn stands beside the destination; the halfmove clock resets on pawn moves and captures, else increments. Empty rights render as \"-\".","evaluation_group":"w2-chess_move_legality-post-move-state-update","failed_approach":"Clearing white's letters for either king makes black king moves erase white's rights too.","family":"w2-chess_move_legality-post-move-state-update-king-move-rights","id":"FA-82571","implementations":{"attempt":{"sha256":"44a8192184621e827817c7339f1956068e6cd10da697e93a12728f9bd91b84e4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=x['board']; fr,to=x['move']; p=b[fr]; cap=b.get(to)\n    rights=x['rights'].replace('-','')\n    if p in 'Kk': rights=rights.replace('K','').replace('Q','')\n    if p=='k': rights=rights.replace('k','').replace('q','')\n    for sq,r in (('h1','K'),('a1','Q'),('h8','k'),('a8','q')):\n        if fr==sq or to==sq: rights=rights.replace(r,'')\n    ep=None\n    if p in ('P','p') and abs(int(to[1])-int(fr[1]))==2:\n        enemy='p' if p=='P' else 'P'\n        f=ord(to[0])-97\n        if any(b.get(chr(97+f+d)+to[1])==enemy for d in (-1,1)):\n            ep=fr[0]+str((int(fr[1])+int(to[1]))//2)\n    pawn_or_capture=p in ('P','p') or cap is not None\n    hm=0 if pawn_or_capture else x['halfmove']+1\n    return {'rights':rights or '-','ep':ep,'halfmove':hm}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('rook leaves corner',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 9,\n    'move': ['a1', 'a5'],\n    'rights': 'KQ'},\n   {'ep': None, 'halfmove': 10, 'rights': 'K'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('double step beside own pawn',\n   {'board': {'e1': 'K', 'e2': 'P', 'e8': 'k', 'f4': 'P'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('double step beside own pawn',\n   {'board': {'e1': 'K', 'e2': 'P', 'e8': 'k', 'f4': 'P'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('black double step',\n   {'board': {'b5': 'P', 'c7': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': 'c6', 'halfmove': 0, 'rights': 'kq'}),\n  ('black double step beside black pawn',\n   {'board': {'c7': 'p', 'd5': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'kq'}),\n  ('quiet knight move',\n   {'board': {'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'halfmove': 7, 'move': ['g1', 'f3'], 'rights': 'K'},\n   {'ep': None, 'halfmove': 8, 'rights': 'K'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('black double step',\n   {'board': {'b5': 'P', 'c7': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': 'c6', 'halfmove': 0, 'rights': 'kq'}),\n  ('black double step beside black pawn',\n   {'board': {'c7': 'p', 'd5': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'kq'}),\n  ('quiet knight move',\n   {'board': {'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'halfmove': 7, 'move': ['g1', 'f3'], 'rights': 'K'},\n   {'ep': None, 'halfmove': 8, 'rights': 'K'}),\n  ('knight capture resets',\n   {'board': {'e1': 'K', 'e8': 'k', 'f3': 'p', 'g1': 'N'},\n    'halfmove': 7,\n    'move': ['g1', 'f3'],\n    'rights': 'K'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('single pawn step',\n   {'board': {'a2': 'P', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 11,\n    'move': ['a2', 'a3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('rook two-rank move',\n   {'board': {'c3': 'p', 'd1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 1,\n    'move': ['d1', 'd3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 2, 'rights': '-'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('knight capture resets',\n   {'board': {'e1': 'K', 'e8': 'k', 'f3': 'p', 'g1': 'N'},\n    'halfmove': 7,\n    'move': ['g1', 'f3'],\n    'rights': 'K'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('single pawn step',\n   {'board': {'a2': 'P', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 11,\n    'move': ['a2', 'a3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('rook two-rank move',\n   {'board': {'c3': 'p', 'd1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 1,\n    'move': ['d1', 'd3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 2, 'rights': '-'}),\n  ('queen two-rank move',\n   {'board': {'c4': 'P', 'd6': 'q', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 6,\n    'move': ['d6', 'd4'],\n    'rights': 'k'},\n   {'ep': None, 'halfmove': 7, 'rights': 'k'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('rook leaves corner',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 9,\n    'move': ['a1', 'a5'],\n    'rights': 'KQ'},\n   {'ep': None, 'halfmove': 10, 'rights': 'K'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('queen two-rank move',\n   {'board': {'c4': 'P', 'd6': 'q', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 6,\n    'move': ['d6', 'd4'],\n    'rights': 'k'},\n   {'ep': None, 'halfmove': 7, 'rights': 'k'})]]\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":"57771fb22ddb653e62d554f71da1bb18421d653c26d94d53f7085b4c82fdc5d9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=x['board']; fr,to=x['move']; p=b[fr]; cap=b.get(to)\n    rights=x['rights'].replace('-','')\n    if p=='K': rights=rights.replace('K','')\n    if p=='k': rights=rights.replace('k','').replace('q','')\n    for sq,r in (('h1','K'),('a1','Q'),('h8','k'),('a8','q')):\n        if fr==sq or to==sq: rights=rights.replace(r,'')\n    ep=None\n    if p in ('P','p') and abs(int(to[1])-int(fr[1]))==2:\n        enemy='p' if p=='P' else 'P'\n        f=ord(to[0])-97\n        if any(b.get(chr(97+f+d)+to[1])==enemy for d in (-1,1)):\n            ep=fr[0]+str((int(fr[1])+int(to[1]))//2)\n    pawn_or_capture=p in ('P','p') or cap is not None\n    hm=0 if pawn_or_capture else x['halfmove']+1\n    return {'rights':rights or '-','ep':ep,'halfmove':hm}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('rook leaves corner',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 9,\n    'move': ['a1', 'a5'],\n    'rights': 'KQ'},\n   {'ep': None, 'halfmove': 10, 'rights': 'K'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('double step beside own pawn',\n   {'board': {'e1': 'K', 'e2': 'P', 'e8': 'k', 'f4': 'P'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('double step beside own pawn',\n   {'board': {'e1': 'K', 'e2': 'P', 'e8': 'k', 'f4': 'P'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('black double step',\n   {'board': {'b5': 'P', 'c7': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': 'c6', 'halfmove': 0, 'rights': 'kq'}),\n  ('black double step beside black pawn',\n   {'board': {'c7': 'p', 'd5': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'kq'}),\n  ('quiet knight move',\n   {'board': {'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'halfmove': 7, 'move': ['g1', 'f3'], 'rights': 'K'},\n   {'ep': None, 'halfmove': 8, 'rights': 'K'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('black double step',\n   {'board': {'b5': 'P', 'c7': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': 'c6', 'halfmove': 0, 'rights': 'kq'}),\n  ('black double step beside black pawn',\n   {'board': {'c7': 'p', 'd5': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'kq'}),\n  ('quiet knight move',\n   {'board': {'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'halfmove': 7, 'move': ['g1', 'f3'], 'rights': 'K'},\n   {'ep': None, 'halfmove': 8, 'rights': 'K'}),\n  ('knight capture resets',\n   {'board': {'e1': 'K', 'e8': 'k', 'f3': 'p', 'g1': 'N'},\n    'halfmove': 7,\n    'move': ['g1', 'f3'],\n    'rights': 'K'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('single pawn step',\n   {'board': {'a2': 'P', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 11,\n    'move': ['a2', 'a3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('rook two-rank move',\n   {'board': {'c3': 'p', 'd1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 1,\n    'move': ['d1', 'd3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 2, 'rights': '-'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('knight capture resets',\n   {'board': {'e1': 'K', 'e8': 'k', 'f3': 'p', 'g1': 'N'},\n    'halfmove': 7,\n    'move': ['g1', 'f3'],\n    'rights': 'K'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('single pawn step',\n   {'board': {'a2': 'P', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 11,\n    'move': ['a2', 'a3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('rook two-rank move',\n   {'board': {'c3': 'p', 'd1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 1,\n    'move': ['d1', 'd3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 2, 'rights': '-'}),\n  ('queen two-rank move',\n   {'board': {'c4': 'P', 'd6': 'q', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 6,\n    'move': ['d6', 'd4'],\n    'rights': 'k'},\n   {'ep': None, 'halfmove': 7, 'rights': 'k'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('rook leaves corner',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 9,\n    'move': ['a1', 'a5'],\n    'rights': 'KQ'},\n   {'ep': None, 'halfmove': 10, 'rights': 'K'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('queen two-rank move',\n   {'board': {'c4': 'P', 'd6': 'q', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 6,\n    'move': ['d6', 'd4'],\n    'rights': 'k'},\n   {'ep': None, 'halfmove': 7, 'rights': 'k'})]]\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":"bd60354637f0ef27f9b7bbd5ee425fe9f8e49c5a0f6e92696abde0ddb7404d9c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=x['board']; fr,to=x['move']; p=b[fr]; cap=b.get(to)\n    rights=x['rights'].replace('-','')\n    if p=='K': rights=rights.replace('K','').replace('Q','')\n    if p=='k': rights=rights.replace('k','').replace('q','')\n    for sq,r in (('h1','K'),('a1','Q'),('h8','k'),('a8','q')):\n        if fr==sq or to==sq: rights=rights.replace(r,'')\n    ep=None\n    if p in ('P','p') and abs(int(to[1])-int(fr[1]))==2:\n        enemy='p' if p=='P' else 'P'\n        f=ord(to[0])-97\n        if any(b.get(chr(97+f+d)+to[1])==enemy for d in (-1,1)):\n            ep=fr[0]+str((int(fr[1])+int(to[1]))//2)\n    pawn_or_capture=p in ('P','p') or cap is not None\n    hm=0 if pawn_or_capture else x['halfmove']+1\n    return {'rights':rights or '-','ep':ep,'halfmove':hm}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('rook leaves corner',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 9,\n    'move': ['a1', 'a5'],\n    'rights': 'KQ'},\n   {'ep': None, 'halfmove': 10, 'rights': 'K'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('double step beside own pawn',\n   {'board': {'e1': 'K', 'e2': 'P', 'e8': 'k', 'f4': 'P'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('double step beside own pawn',\n   {'board': {'e1': 'K', 'e2': 'P', 'e8': 'k', 'f4': 'P'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('black double step',\n   {'board': {'b5': 'P', 'c7': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': 'c6', 'halfmove': 0, 'rights': 'kq'}),\n  ('black double step beside black pawn',\n   {'board': {'c7': 'p', 'd5': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'kq'}),\n  ('quiet knight move',\n   {'board': {'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'halfmove': 7, 'move': ['g1', 'f3'], 'rights': 'K'},\n   {'ep': None, 'halfmove': 8, 'rights': 'K'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('black double step',\n   {'board': {'b5': 'P', 'c7': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': 'c6', 'halfmove': 0, 'rights': 'kq'}),\n  ('black double step beside black pawn',\n   {'board': {'c7': 'p', 'd5': 'p', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 2,\n    'move': ['c7', 'c5'],\n    'rights': 'kq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'kq'}),\n  ('quiet knight move',\n   {'board': {'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'halfmove': 7, 'move': ['g1', 'f3'], 'rights': 'K'},\n   {'ep': None, 'halfmove': 8, 'rights': 'K'}),\n  ('knight capture resets',\n   {'board': {'e1': 'K', 'e8': 'k', 'f3': 'p', 'g1': 'N'},\n    'halfmove': 7,\n    'move': ['g1', 'f3'],\n    'rights': 'K'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('single pawn step',\n   {'board': {'a2': 'P', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 11,\n    'move': ['a2', 'a3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('rook two-rank move',\n   {'board': {'c3': 'p', 'd1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 1,\n    'move': ['d1', 'd3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 2, 'rights': '-'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('knight capture resets',\n   {'board': {'e1': 'K', 'e8': 'k', 'f3': 'p', 'g1': 'N'},\n    'halfmove': 7,\n    'move': ['g1', 'f3'],\n    'rights': 'K'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('single pawn step',\n   {'board': {'a2': 'P', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 11,\n    'move': ['a2', 'a3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('rook two-rank move',\n   {'board': {'c3': 'p', 'd1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 1,\n    'move': ['d1', 'd3'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 2, 'rights': '-'}),\n  ('queen two-rank move',\n   {'board': {'c4': 'P', 'd6': 'q', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 6,\n    'move': ['d6', 'd4'],\n    'rights': 'k'},\n   {'ep': None, 'halfmove': 7, 'rights': 'k'})],\n [('king move clears both',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k', 'h1': 'R'},\n    'halfmove': 3,\n    'move': ['e1', 'f1'],\n    'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 4, 'rights': 'kq'}),\n  ('black king move',\n   {'board': {'e1': 'K', 'e8': 'k'}, 'halfmove': 0, 'move': ['e8', 'd8'], 'rights': 'KQkq'},\n   {'ep': None, 'halfmove': 1, 'rights': 'KQ'}),\n  ('rook captured on a8',\n   {'board': {'a8': 'r', 'b7': 'B', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 5,\n    'move': ['b7', 'a8'],\n    'rights': 'Kkq'},\n   {'ep': None, 'halfmove': 0, 'rights': 'Kk'}),\n  ('bishop takes h8 rook',\n   {'board': {'a1': 'B', 'e1': 'K', 'e8': 'k', 'h8': 'r'},\n    'halfmove': 5,\n    'move': ['a1', 'h8'],\n    'rights': 'KQk'},\n   {'ep': None, 'halfmove': 0, 'rights': 'K'}),\n  ('rook leaves corner',\n   {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 9,\n    'move': ['a1', 'a5'],\n    'rights': 'KQ'},\n   {'ep': None, 'halfmove': 10, 'rights': 'K'}),\n  ('double step with adjacent enemy',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': 'e3', 'halfmove': 0, 'rights': '-'}),\n  ('double step no enemy beside',\n   {'board': {'a4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'},\n    'halfmove': 4,\n    'move': ['e2', 'e4'],\n    'rights': '-'},\n   {'ep': None, 'halfmove': 0, 'rights': '-'}),\n  ('queen two-rank move',\n   {'board': {'c4': 'P', 'd6': 'q', 'e1': 'K', 'e8': 'k'},\n    'halfmove': 6,\n    'move': ['d6', 'd4'],\n    'rights': 'k'},\n   {'ep': None, 'halfmove': 7, 'rights': 'k'})]]\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-post-move-state-update-king-move-rights","generated_at":"2026-09-29T14:50:13.396095+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"These updates decide whether castling and en passant are legal on later moves.","repair":"A king move clears both castling letters of its colour.","root_cause":"A king move only clears the kingside letter.","sha256":"fb98d3c4135ec26c03433b2d43eff5c934ea4a637050b60e860399967450a79d","title":"King move keeps the queenside right · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.443,"exit_code":1,"observations":[{"actual":{"ep":null,"halfmove":4,"rights":"kq"},"check":"king move clears both","expected":{"ep":null,"halfmove":4,"rights":"kq"},"passed":true},{"actual":{"ep":null,"halfmove":1,"rights":"-"},"check":"black king move","expected":{"ep":null,"halfmove":1,"rights":"KQ"},"passed":false},{"actual":{"ep":null,"halfmove":0,"rights":"Kk"},"check":"rook captured on a8","expected":{"ep":null,"halfmove":0,"rights":"Kk"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"K"},"check":"bishop takes h8 rook","expected":{"ep":null,"halfmove":0,"rights":"K"},"passed":true},{"actual":{"ep":null,"halfmove":10,"rights":"K"},"check":"rook leaves corner","expected":{"ep":null,"halfmove":10,"rights":"K"},"passed":true},{"actual":{"ep":"e3","halfmove":0,"rights":"-"},"check":"double step with adjacent enemy","expected":{"ep":"e3","halfmove":0,"rights":"-"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"-"},"check":"double step no enemy beside","expected":{"ep":null,"halfmove":0,"rights":"-"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"-"},"check":"double step beside own pawn","expected":{"ep":null,"halfmove":0,"rights":"-"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"king move clears both\", \"actual\": {\"rights\": \"kq\", \"ep\": null, \"halfmove\": 4}, \"expected\": {\"ep\": null, \"halfmove\": 4, \"rights\": \"kq\"}, \"passed\": true}, {\"check\": \"black king move\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 1}, \"expected\": {\"ep\": null, \"halfmove\": 1, \"rights\": \"KQ\"}, \"passed\": false}, {\"check\": \"rook captured on a8\", \"actual\": {\"rights\": \"Kk\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"Kk\"}, \"passed\": true}, {\"check\": \"bishop takes h8 rook\", \"actual\": {\"rights\": \"K\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"K\"}, \"passed\": true}, {\"check\": \"rook leaves corner\", \"actual\": {\"rights\": \"K\", \"ep\": null, \"halfmove\": 10}, \"expected\": {\"ep\": null, \"halfmove\": 10, \"rights\": \"K\"}, \"passed\": true}, {\"check\": \"double step with adjacent enemy\", \"actual\": {\"rights\": \"-\", \"ep\": \"e3\", \"halfmove\": 0}, \"expected\": {\"ep\": \"e3\", \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}, {\"check\": \"double step no enemy beside\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}, {\"check\": \"double step beside own pawn\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.112,"exit_code":1,"observations":[{"actual":{"ep":null,"halfmove":4,"rights":"Qkq"},"check":"king move clears both","expected":{"ep":null,"halfmove":4,"rights":"kq"},"passed":false},{"actual":{"ep":null,"halfmove":1,"rights":"KQ"},"check":"black king move","expected":{"ep":null,"halfmove":1,"rights":"KQ"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"Kk"},"check":"rook captured on a8","expected":{"ep":null,"halfmove":0,"rights":"Kk"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"K"},"check":"bishop takes h8 rook","expected":{"ep":null,"halfmove":0,"rights":"K"},"passed":true},{"actual":{"ep":null,"halfmove":10,"rights":"K"},"check":"rook leaves corner","expected":{"ep":null,"halfmove":10,"rights":"K"},"passed":true},{"actual":{"ep":"e3","halfmove":0,"rights":"-"},"check":"double step with adjacent enemy","expected":{"ep":"e3","halfmove":0,"rights":"-"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"-"},"check":"double step no enemy beside","expected":{"ep":null,"halfmove":0,"rights":"-"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"-"},"check":"double step beside own pawn","expected":{"ep":null,"halfmove":0,"rights":"-"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"king move clears both\", \"actual\": {\"rights\": \"Qkq\", \"ep\": null, \"halfmove\": 4}, \"expected\": {\"ep\": null, \"halfmove\": 4, \"rights\": \"kq\"}, \"passed\": false}, {\"check\": \"black king move\", \"actual\": {\"rights\": \"KQ\", \"ep\": null, \"halfmove\": 1}, \"expected\": {\"ep\": null, \"halfmove\": 1, \"rights\": \"KQ\"}, \"passed\": true}, {\"check\": \"rook captured on a8\", \"actual\": {\"rights\": \"Kk\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"Kk\"}, \"passed\": true}, {\"check\": \"bishop takes h8 rook\", \"actual\": {\"rights\": \"K\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"K\"}, \"passed\": true}, {\"check\": \"rook leaves corner\", \"actual\": {\"rights\": \"K\", \"ep\": null, \"halfmove\": 10}, \"expected\": {\"ep\": null, \"halfmove\": 10, \"rights\": \"K\"}, \"passed\": true}, {\"check\": \"double step with adjacent enemy\", \"actual\": {\"rights\": \"-\", \"ep\": \"e3\", \"halfmove\": 0}, \"expected\": {\"ep\": \"e3\", \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}, {\"check\": \"double step no enemy beside\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}, {\"check\": \"double step beside own pawn\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.943,"exit_code":0,"observations":[{"actual":{"ep":null,"halfmove":4,"rights":"kq"},"check":"king move clears both","expected":{"ep":null,"halfmove":4,"rights":"kq"},"passed":true},{"actual":{"ep":null,"halfmove":1,"rights":"KQ"},"check":"black king move","expected":{"ep":null,"halfmove":1,"rights":"KQ"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"Kk"},"check":"rook captured on a8","expected":{"ep":null,"halfmove":0,"rights":"Kk"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"K"},"check":"bishop takes h8 rook","expected":{"ep":null,"halfmove":0,"rights":"K"},"passed":true},{"actual":{"ep":null,"halfmove":10,"rights":"K"},"check":"rook leaves corner","expected":{"ep":null,"halfmove":10,"rights":"K"},"passed":true},{"actual":{"ep":"e3","halfmove":0,"rights":"-"},"check":"double step with adjacent enemy","expected":{"ep":"e3","halfmove":0,"rights":"-"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"-"},"check":"double step no enemy beside","expected":{"ep":null,"halfmove":0,"rights":"-"},"passed":true},{"actual":{"ep":null,"halfmove":0,"rights":"-"},"check":"double step beside own pawn","expected":{"ep":null,"halfmove":0,"rights":"-"},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"king move clears both\", \"actual\": {\"rights\": \"kq\", \"ep\": null, \"halfmove\": 4}, \"expected\": {\"ep\": null, \"halfmove\": 4, \"rights\": \"kq\"}, \"passed\": true}, {\"check\": \"black king move\", \"actual\": {\"rights\": \"KQ\", \"ep\": null, \"halfmove\": 1}, \"expected\": {\"ep\": null, \"halfmove\": 1, \"rights\": \"KQ\"}, \"passed\": true}, {\"check\": \"rook captured on a8\", \"actual\": {\"rights\": \"Kk\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"Kk\"}, \"passed\": true}, {\"check\": \"bishop takes h8 rook\", \"actual\": {\"rights\": \"K\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"K\"}, \"passed\": true}, {\"check\": \"rook leaves corner\", \"actual\": {\"rights\": \"K\", \"ep\": null, \"halfmove\": 10}, \"expected\": {\"ep\": null, \"halfmove\": 10, \"rights\": \"K\"}, \"passed\": true}, {\"check\": \"double step with adjacent enemy\", \"actual\": {\"rights\": \"-\", \"ep\": \"e3\", \"halfmove\": 0}, \"expected\": {\"ep\": \"e3\", \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}, {\"check\": \"double step no enemy beside\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}, {\"check\": \"double step beside own pawn\", \"actual\": {\"rights\": \"-\", \"ep\": null, \"halfmove\": 0}, \"expected\": {\"ep\": null, \"halfmove\": 0, \"rights\": \"-\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}