{"abstract":"After b7b8q the new piece on b8 is the lower-case (black) \"q\".","category":"Chess move legality","checks":8,"contract":"Input: {\"board\", \"moves\": [uci strings]}. Apply the moves in order and return the final board sorted by square. A king moving two files castles: the rook jumps from h to f (g-file destination) or from a to d (c-file destination). A pawn moving diagonally onto an empty square captures en passant, removing the pawn on the destination file and origin rank. A fifth character promotes to that piece in the mover's colour.","contract_signature":"x","evaluation_group":"w2-chess_move_legality-uci-move-application","failed_approach":"Always upper-casing turns black promotions into white pieces.","family":"w2-chess_move_legality-uci-move-application-promotion-colour","id":"FA-82746","implementations":{"attempt":{"sha256":"98cafdc9a5d815eccefd1936513c906c379f760bf20bf71d3c5012f07092dd33","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=dict(x['board'])\n    for u in x['moves']:\n        fr,to,pr=u[:2],u[2:4],u[4:]\n        p=b.pop(fr)\n        if p in ('K','k') and abs(ord(to[0])-ord(fr[0]))==2:\n            if to[0]=='g': b['f'+to[1]]=b.pop('h'+to[1])\n            else: b['d'+to[1]]=b.pop('a'+to[1])\n        if p in ('P','p') and fr[0]!=to[0] and to not in b:\n            del b[to[0]+fr[1]]\n        if pr: p=pr.upper()\n        b[to]=p\n    return dict(sorted(b.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('white long castle', {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'}, 'moves': ['e1c1']},\n   {'c1': 'K', 'd1': 'R', 'e8': 'k'}),\n  ('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'})],\n [('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('ordinary pawn capture',\n   {'board': {'d4': 'N', 'd5': 'p', 'e1': 'K', 'e4': 'P', 'e8': 'k'}, 'moves': ['e4d5']},\n   {'d4': 'N', 'd5': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'}),\n  ('quiet sequence',\n   {'board': {'b8': 'n', 'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'moves': ['g1f3', 'b8c6', 'f3e5']},\n   {'c6': 'n', 'e1': 'K', 'e5': 'N', 'e8': 'k'}),\n  ('pawn push', {'board': {'c2': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['c2c4']},\n   {'c4': 'P', 'e1': 'K', 'e8': 'k'})],\n [('white long castle', {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'}, 'moves': ['e1c1']},\n   {'c1': 'K', 'd1': 'R', 'e8': 'k'}),\n  ('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('ordinary pawn capture',\n   {'board': {'d4': 'N', 'd5': 'p', 'e1': 'K', 'e4': 'P', 'e8': 'k'}, 'moves': ['e4d5']},\n   {'d4': 'N', 'd5': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'}),\n  ('quiet sequence',\n   {'board': {'b8': 'n', 'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'moves': ['g1f3', 'b8c6', 'f3e5']},\n   {'c6': 'n', 'e1': 'K', 'e5': 'N', 'e8': 'k'}),\n  ('pawn push', {'board': {'c2': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['c2c4']},\n   {'c4': 'P', 'e1': 'K', 'e8': 'k'})],\n [('white long castle', {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'}, 'moves': ['e1c1']},\n   {'c1': 'K', 'd1': 'R', 'e8': 'k'}),\n  ('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'})],\n [('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('ordinary pawn capture',\n   {'board': {'d4': 'N', 'd5': 'p', 'e1': 'K', 'e4': 'P', 'e8': 'k'}, 'moves': ['e4d5']},\n   {'d4': 'N', 'd5': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'})]]\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":"050fc5de443f1f4641cc4b142863dd398c7884d0dc98699d6d52f7f872683e8b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    b=dict(x['board'])\n    for u in x['moves']:\n        fr,to,pr=u[:2],u[2:4],u[4:]\n        p=b.pop(fr)\n        if p in ('K','k') and abs(ord(to[0])-ord(fr[0]))==2:\n            if to[0]=='g': b['f'+to[1]]=b.pop('h'+to[1])\n            else: b['d'+to[1]]=b.pop('a'+to[1])\n        if p in ('P','p') and fr[0]!=to[0] and to not in b:\n            del b[to[0]+fr[1]]\n        if pr: p=pr\n        b[to]=p\n    return dict(sorted(b.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('white long castle', {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'}, 'moves': ['e1c1']},\n   {'c1': 'K', 'd1': 'R', 'e8': 'k'}),\n  ('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'})],\n [('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('ordinary pawn capture',\n   {'board': {'d4': 'N', 'd5': 'p', 'e1': 'K', 'e4': 'P', 'e8': 'k'}, 'moves': ['e4d5']},\n   {'d4': 'N', 'd5': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'}),\n  ('quiet sequence',\n   {'board': {'b8': 'n', 'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'moves': ['g1f3', 'b8c6', 'f3e5']},\n   {'c6': 'n', 'e1': 'K', 'e5': 'N', 'e8': 'k'}),\n  ('pawn push', {'board': {'c2': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['c2c4']},\n   {'c4': 'P', 'e1': 'K', 'e8': 'k'})],\n [('white long castle', {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'}, 'moves': ['e1c1']},\n   {'c1': 'K', 'd1': 'R', 'e8': 'k'}),\n  ('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('ordinary pawn capture',\n   {'board': {'d4': 'N', 'd5': 'p', 'e1': 'K', 'e4': 'P', 'e8': 'k'}, 'moves': ['e4d5']},\n   {'d4': 'N', 'd5': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'}),\n  ('quiet sequence',\n   {'board': {'b8': 'n', 'e1': 'K', 'e8': 'k', 'g1': 'N'}, 'moves': ['g1f3', 'b8c6', 'f3e5']},\n   {'c6': 'n', 'e1': 'K', 'e5': 'N', 'e8': 'k'}),\n  ('pawn push', {'board': {'c2': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['c2c4']},\n   {'c4': 'P', 'e1': 'K', 'e8': 'k'})],\n [('white long castle', {'board': {'a1': 'R', 'e1': 'K', 'e8': 'k'}, 'moves': ['e1c1']},\n   {'c1': 'K', 'd1': 'R', 'e8': 'k'}),\n  ('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'})],\n [('black short castle', {'board': {'e1': 'K', 'e8': 'k', 'h8': 'r'}, 'moves': ['e8g8']},\n   {'e1': 'K', 'f8': 'r', 'g8': 'k'}),\n  ('king step to g1', {'board': {'e8': 'k', 'f1': 'K', 'h1': 'R'}, 'moves': ['f1g1']},\n   {'e8': 'k', 'g1': 'K', 'h1': 'R'}),\n  ('king step to c8', {'board': {'a8': 'r', 'd8': 'k', 'e1': 'K'}, 'moves': ['d8c8']},\n   {'a8': 'r', 'c8': 'k', 'e1': 'K'}),\n  ('white en passant',\n   {'board': {'d7': 'p', 'e1': 'K', 'e5': 'P', 'e8': 'k'}, 'moves': ['d7d5', 'e5d6']},\n   {'d6': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('black en passant',\n   {'board': {'d4': 'p', 'e1': 'K', 'e2': 'P', 'e8': 'k'}, 'moves': ['e2e4', 'd4e3']},\n   {'e1': 'K', 'e3': 'p', 'e8': 'k'}),\n  ('ordinary pawn capture',\n   {'board': {'d4': 'N', 'd5': 'p', 'e1': 'K', 'e4': 'P', 'e8': 'k'}, 'moves': ['e4d5']},\n   {'d4': 'N', 'd5': 'P', 'e1': 'K', 'e8': 'k'}),\n  ('white promotion', {'board': {'b7': 'P', 'e1': 'K', 'e8': 'k'}, 'moves': ['b7b8q']},\n   {'b8': 'Q', 'e1': 'K', 'e8': 'k'}),\n  ('black underpromotion', {'board': {'e1': 'K', 'e8': 'k', 'g2': 'p'}, 'moves': ['g2g1n']},\n   {'e1': 'K', 'e8': 'k', 'g1': 'n'})]]\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-uci-move-application-promotion-colour","generated_at":"2026-09-29T14:50:14.993462+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Move application defines the position every later legality check sees.","root_cause":"The UCI suffix letter, always lower case, is used as the piece without adjusting its colour.","sha256":"21cfd852f2215f15f6bf8e7eeccea11582e7d6b69bc4954453fcc2d886a3ce2f","title":"White promotes to a black queen · 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":40.795,"exit_code":1,"observations":[{"actual":{"c1":"K","d1":"R","e8":"k"},"check":"white long castle","expected":{"c1":"K","d1":"R","e8":"k"},"passed":true},{"actual":{"e1":"K","f8":"r","g8":"k"},"check":"black short castle","expected":{"e1":"K","f8":"r","g8":"k"},"passed":true},{"actual":{"e8":"k","g1":"K","h1":"R"},"check":"king step to g1","expected":{"e8":"k","g1":"K","h1":"R"},"passed":true},{"actual":{"a8":"r","c8":"k","e1":"K"},"check":"king step to c8","expected":{"a8":"r","c8":"k","e1":"K"},"passed":true},{"actual":{"d6":"P","e1":"K","e8":"k"},"check":"white en passant","expected":{"d6":"P","e1":"K","e8":"k"},"passed":true},{"actual":{"e1":"K","e3":"p","e8":"k"},"check":"black en passant","expected":{"e1":"K","e3":"p","e8":"k"},"passed":true},{"actual":{"b8":"Q","e1":"K","e8":"k"},"check":"white promotion","expected":{"b8":"Q","e1":"K","e8":"k"},"passed":true},{"actual":{"e1":"K","e8":"k","g1":"N"},"check":"black underpromotion","expected":{"e1":"K","e8":"k","g1":"n"},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"white long castle\", \"actual\": {\"c1\": \"K\", \"d1\": \"R\", \"e8\": \"k\"}, \"expected\": {\"c1\": \"K\", \"d1\": \"R\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"black short castle\", \"actual\": {\"e1\": \"K\", \"f8\": \"r\", \"g8\": \"k\"}, \"expected\": {\"e1\": \"K\", \"f8\": \"r\", \"g8\": \"k\"}, \"passed\": true}, {\"check\": \"king step to g1\", \"actual\": {\"e8\": \"k\", \"g1\": \"K\", \"h1\": \"R\"}, \"expected\": {\"e8\": \"k\", \"g1\": \"K\", \"h1\": \"R\"}, \"passed\": true}, {\"check\": \"king step to c8\", \"actual\": {\"a8\": \"r\", \"c8\": \"k\", \"e1\": \"K\"}, \"expected\": {\"a8\": \"r\", \"c8\": \"k\", \"e1\": \"K\"}, \"passed\": true}, {\"check\": \"white en passant\", \"actual\": {\"d6\": \"P\", \"e1\": \"K\", \"e8\": \"k\"}, \"expected\": {\"d6\": \"P\", \"e1\": \"K\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"black en passant\", \"actual\": {\"e1\": \"K\", \"e3\": \"p\", \"e8\": \"k\"}, \"expected\": {\"e1\": \"K\", \"e3\": \"p\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"white promotion\", \"actual\": {\"b8\": \"Q\", \"e1\": \"K\", \"e8\": \"k\"}, \"expected\": {\"b8\": \"Q\", \"e1\": \"K\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"black underpromotion\", \"actual\": {\"e1\": \"K\", \"e8\": \"k\", \"g1\": \"N\"}, \"expected\": {\"e1\": \"K\", \"e8\": \"k\", \"g1\": \"n\"}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.394,"exit_code":1,"observations":[{"actual":{"c1":"K","d1":"R","e8":"k"},"check":"white long castle","expected":{"c1":"K","d1":"R","e8":"k"},"passed":true},{"actual":{"e1":"K","f8":"r","g8":"k"},"check":"black short castle","expected":{"e1":"K","f8":"r","g8":"k"},"passed":true},{"actual":{"e8":"k","g1":"K","h1":"R"},"check":"king step to g1","expected":{"e8":"k","g1":"K","h1":"R"},"passed":true},{"actual":{"a8":"r","c8":"k","e1":"K"},"check":"king step to c8","expected":{"a8":"r","c8":"k","e1":"K"},"passed":true},{"actual":{"d6":"P","e1":"K","e8":"k"},"check":"white en passant","expected":{"d6":"P","e1":"K","e8":"k"},"passed":true},{"actual":{"e1":"K","e3":"p","e8":"k"},"check":"black en passant","expected":{"e1":"K","e3":"p","e8":"k"},"passed":true},{"actual":{"b8":"q","e1":"K","e8":"k"},"check":"white promotion","expected":{"b8":"Q","e1":"K","e8":"k"},"passed":false},{"actual":{"e1":"K","e8":"k","g1":"n"},"check":"black underpromotion","expected":{"e1":"K","e8":"k","g1":"n"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"white long castle\", \"actual\": {\"c1\": \"K\", \"d1\": \"R\", \"e8\": \"k\"}, \"expected\": {\"c1\": \"K\", \"d1\": \"R\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"black short castle\", \"actual\": {\"e1\": \"K\", \"f8\": \"r\", \"g8\": \"k\"}, \"expected\": {\"e1\": \"K\", \"f8\": \"r\", \"g8\": \"k\"}, \"passed\": true}, {\"check\": \"king step to g1\", \"actual\": {\"e8\": \"k\", \"g1\": \"K\", \"h1\": \"R\"}, \"expected\": {\"e8\": \"k\", \"g1\": \"K\", \"h1\": \"R\"}, \"passed\": true}, {\"check\": \"king step to c8\", \"actual\": {\"a8\": \"r\", \"c8\": \"k\", \"e1\": \"K\"}, \"expected\": {\"a8\": \"r\", \"c8\": \"k\", \"e1\": \"K\"}, \"passed\": true}, {\"check\": \"white en passant\", \"actual\": {\"d6\": \"P\", \"e1\": \"K\", \"e8\": \"k\"}, \"expected\": {\"d6\": \"P\", \"e1\": \"K\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"black en passant\", \"actual\": {\"e1\": \"K\", \"e3\": \"p\", \"e8\": \"k\"}, \"expected\": {\"e1\": \"K\", \"e3\": \"p\", \"e8\": \"k\"}, \"passed\": true}, {\"check\": \"white promotion\", \"actual\": {\"b8\": \"q\", \"e1\": \"K\", \"e8\": \"k\"}, \"expected\": {\"b8\": \"Q\", \"e1\": \"K\", \"e8\": \"k\"}, \"passed\": false}, {\"check\": \"black underpromotion\", \"actual\": {\"e1\": \"K\", \"e8\": \"k\", \"g1\": \"n\"}, \"expected\": {\"e1\": \"K\", \"e8\": \"k\", \"g1\": \"n\"}, \"passed\": true}], \"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."}}