{"abstract":"A knight between its king and an enemy bishop on the same file may not move.","category":"Chess move legality","checks":8,"contract":"Input: {\"board\", \"from\": square of a non-king piece, \"to\": its pseudo-legal destination}. Return false only when the piece is absolutely pinned (it is the first piece on a line from its own king and the next piece beyond it on that line is an enemy rook/queen on a rank or file, or bishop/queen on a diagonal) and the destination leaves that line; moves along the pin line, including capturing the pinner, return true.","evaluation_group":"w2-chess_move_legality-absolute-pin-ray","failed_approach":"Swapping the table makes rooks pin diagonally and bishops orthogonally.","family":"w2-chess_move_legality-absolute-pin-ray-pinner-type-by-line","id":"FA-82506","implementations":{"attempt":{"sha256":"33ab351cc5108b0d1b198729492988dab8c1c51aca51af3398d3b2f5468966b7","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['from'],x['to']; p=b[fr]; white=p.isupper()\n    ks=[s for s,v in b.items() if v==('K' if white else 'k')][0]\n    def c(s): return ord(s[0])-97,int(s[1])-1\n    kf,kr=c(ks); pf,pr=c(fr); tf,tr=c(to)\n    df,dr=pf-kf,pr-kr\n    if not (df==0 or dr==0 or abs(df)==abs(dr)): return True\n    sf=(df>0)-(df<0); sr=(dr>0)-(dr<0)\n    cf,cr=kf+sf,kr+sr\n    while (cf,cr)!=(pf,pr):\n        if chr(97+cf)+str(cr+1) in b: return True\n        cf+=sf; cr+=sr\n    cf,cr=pf+sf,pr+sr\n    while 0<=cf<8 and 0<=cr<8:\n        v=b.get(chr(97+cf)+str(cr+1))\n        if v:\n            kinds=('b','q') if sf==0 or sr==0 else ('r','q')\n            if v.isupper()!=white and v.lower() in kinds:\n                tdf,tdr=tf-kf,tr-kr\n                return tdf*sr==tdr*sf and tdf*sf+tdr*sr>0\n            return True\n        cf+=sf; cr+=sr\n    return True\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('file-pinned rook leaves',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'}, False),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True)],\n [('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('shield between king and piece',\n   {'board': {'a8': 'k', 'e1': 'K', 'e2': 'P', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'},\n   True),\n  ('shield next to king diagonal',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'P', 'e3': 'N', 'h6': 'b'}, 'from': 'e3', 'to': 'g4'},\n   True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('own queen behind',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'Q'}, 'from': 'e4', 'to': 'c5'}, True)],\n [('file-pinned rook leaves',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'}, False),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('own queen behind',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'Q'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False),\n  ('not on a line',\n   {'board': {'a8': 'k', 'e1': 'K', 'e8': 'r', 'f3': 'N'}, 'from': 'f3', 'to': 'g5'}, True)],\n [('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False)],\n [('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('shield between king and piece',\n   {'board': {'a8': 'k', 'e1': 'K', 'e2': 'P', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'},\n   True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False)]]\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":"c596353f6ccd4a5d70295828c1835b5474f46859d7189ac157fedbed796ae9fd","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['from'],x['to']; p=b[fr]; white=p.isupper()\n    ks=[s for s,v in b.items() if v==('K' if white else 'k')][0]\n    def c(s): return ord(s[0])-97,int(s[1])-1\n    kf,kr=c(ks); pf,pr=c(fr); tf,tr=c(to)\n    df,dr=pf-kf,pr-kr\n    if not (df==0 or dr==0 or abs(df)==abs(dr)): return True\n    sf=(df>0)-(df<0); sr=(dr>0)-(dr<0)\n    cf,cr=kf+sf,kr+sr\n    while (cf,cr)!=(pf,pr):\n        if chr(97+cf)+str(cr+1) in b: return True\n        cf+=sf; cr+=sr\n    cf,cr=pf+sf,pr+sr\n    while 0<=cf<8 and 0<=cr<8:\n        v=b.get(chr(97+cf)+str(cr+1))\n        if v:\n            kinds=('r','b','q')\n            if v.isupper()!=white and v.lower() in kinds:\n                tdf,tdr=tf-kf,tr-kr\n                return tdf*sr==tdr*sf and tdf*sf+tdr*sr>0\n            return True\n        cf+=sf; cr+=sr\n    return True\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('file-pinned rook leaves',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'}, False),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True)],\n [('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('shield between king and piece',\n   {'board': {'a8': 'k', 'e1': 'K', 'e2': 'P', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'},\n   True),\n  ('shield next to king diagonal',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'P', 'e3': 'N', 'h6': 'b'}, 'from': 'e3', 'to': 'g4'},\n   True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('own queen behind',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'Q'}, 'from': 'e4', 'to': 'c5'}, True)],\n [('file-pinned rook leaves',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'}, False),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('own queen behind',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'Q'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False),\n  ('not on a line',\n   {'board': {'a8': 'k', 'e1': 'K', 'e8': 'r', 'f3': 'N'}, 'from': 'f3', 'to': 'g5'}, True)],\n [('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False)],\n [('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('shield between king and piece',\n   {'board': {'a8': 'k', 'e1': 'K', 'e2': 'P', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'},\n   True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False)]]\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":"d85a7093075687b040a01c6caa7a0eb1926ec73c9d0485f348595d63c57610b4","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['from'],x['to']; p=b[fr]; white=p.isupper()\n    ks=[s for s,v in b.items() if v==('K' if white else 'k')][0]\n    def c(s): return ord(s[0])-97,int(s[1])-1\n    kf,kr=c(ks); pf,pr=c(fr); tf,tr=c(to)\n    df,dr=pf-kf,pr-kr\n    if not (df==0 or dr==0 or abs(df)==abs(dr)): return True\n    sf=(df>0)-(df<0); sr=(dr>0)-(dr<0)\n    cf,cr=kf+sf,kr+sr\n    while (cf,cr)!=(pf,pr):\n        if chr(97+cf)+str(cr+1) in b: return True\n        cf+=sf; cr+=sr\n    cf,cr=pf+sf,pr+sr\n    while 0<=cf<8 and 0<=cr<8:\n        v=b.get(chr(97+cf)+str(cr+1))\n        if v:\n            kinds=('r','q') if sf==0 or sr==0 else ('b','q')\n            if v.isupper()!=white and v.lower() in kinds:\n                tdf,tdr=tf-kf,tr-kr\n                return tdf*sr==tdr*sf and tdf*sf+tdr*sr>0\n            return True\n        cf+=sf; cr+=sr\n    return True\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('file-pinned rook leaves',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'}, False),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True)],\n [('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('shield between king and piece',\n   {'board': {'a8': 'k', 'e1': 'K', 'e2': 'P', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'},\n   True),\n  ('shield next to king diagonal',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'P', 'e3': 'N', 'h6': 'b'}, 'from': 'e3', 'to': 'g4'},\n   True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('own queen behind',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'Q'}, 'from': 'e4', 'to': 'c5'}, True)],\n [('file-pinned rook leaves',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'}, False),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('own queen behind',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'Q'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False),\n  ('not on a line',\n   {'board': {'a8': 'k', 'e1': 'K', 'e8': 'r', 'f3': 'N'}, 'from': 'f3', 'to': 'g5'}, True)],\n [('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pin knight',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'b'}, 'from': 'd2', 'to': 'f3'}, False),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop to e1',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'b'}, 'from': 'd2', 'to': 'e1'}, False),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False)],\n [('file-pinned rook slides',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e6'}, True),\n  ('capture the pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'e8'}, True),\n  ('diagonal pinned bishop off line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'c3'}, False),\n  ('diagonal pinned bishop on line',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'B', 'g5': 'q'}, 'from': 'd2', 'to': 'e3'}, True),\n  ('shield between king and piece',\n   {'board': {'a8': 'k', 'e1': 'K', 'e2': 'P', 'e4': 'R', 'e8': 'r'}, 'from': 'e4', 'to': 'a4'},\n   True),\n  ('bishop on file is not a pinner',\n   {'board': {'a8': 'k', 'e1': 'K', 'e4': 'N', 'e8': 'b'}, 'from': 'e4', 'to': 'c5'}, True),\n  ('rook on diagonal is not a pinner',\n   {'board': {'a8': 'k', 'c1': 'K', 'd2': 'N', 'g5': 'r'}, 'from': 'd2', 'to': 'f3'}, True),\n  ('black rank pin',\n   {'board': {'a1': 'K', 'a8': 'R', 'e8': 'n', 'h8': 'k'}, 'from': 'e8', 'to': 'd6'}, False)]]\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-absolute-pin-ray-pinner-type-by-line","generated_at":"2026-09-29T14:50:12.752619+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":"Rooks and queens pin along ranks and files; bishops and queens along diagonals.","root_cause":"Any enemy slider behind the piece counts as a pinner regardless of the line type.","sha256":"70f42874e2aa35f7a2bf0454895385a0d297d744265a175e486fbb74bf1a633d","title":"Bishop on the king's file pins a knight · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.356,"exit_code":1,"observations":[{"actual":true,"check":"file-pinned rook slides","expected":true,"passed":true},{"actual":true,"check":"file-pinned rook leaves","expected":false,"passed":false},{"actual":true,"check":"capture the pinner","expected":true,"passed":true},{"actual":true,"check":"diagonal pin knight","expected":false,"passed":false},{"actual":false,"check":"diagonal pinned bishop off line","expected":false,"passed":true},{"actual":true,"check":"diagonal pinned bishop on line","expected":true,"passed":true},{"actual":false,"check":"bishop on file is not a pinner","expected":true,"passed":false},{"actual":false,"check":"rook on diagonal is not a pinner","expected":true,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"file-pinned rook slides\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"file-pinned rook leaves\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"capture the pinner\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"diagonal pin knight\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"diagonal pinned bishop off line\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"diagonal pinned bishop on line\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bishop on file is not a pinner\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"rook on diagonal is not a pinner\", \"actual\": false, \"expected\": true, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.107,"exit_code":1,"observations":[{"actual":true,"check":"file-pinned rook slides","expected":true,"passed":true},{"actual":false,"check":"file-pinned rook leaves","expected":false,"passed":true},{"actual":true,"check":"capture the pinner","expected":true,"passed":true},{"actual":false,"check":"diagonal pin knight","expected":false,"passed":true},{"actual":false,"check":"diagonal pinned bishop off line","expected":false,"passed":true},{"actual":true,"check":"diagonal pinned bishop on line","expected":true,"passed":true},{"actual":false,"check":"bishop on file is not a pinner","expected":true,"passed":false},{"actual":false,"check":"rook on diagonal is not a pinner","expected":true,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"file-pinned rook slides\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"file-pinned rook leaves\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"capture the pinner\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"diagonal pin knight\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"diagonal pinned bishop off line\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"diagonal pinned bishop on line\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bishop on file is not a pinner\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"rook on diagonal is not a pinner\", \"actual\": false, \"expected\": true, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.092,"exit_code":0,"observations":[{"actual":true,"check":"file-pinned rook slides","expected":true,"passed":true},{"actual":false,"check":"file-pinned rook leaves","expected":false,"passed":true},{"actual":true,"check":"capture the pinner","expected":true,"passed":true},{"actual":false,"check":"diagonal pin knight","expected":false,"passed":true},{"actual":false,"check":"diagonal pinned bishop off line","expected":false,"passed":true},{"actual":true,"check":"diagonal pinned bishop on line","expected":true,"passed":true},{"actual":true,"check":"bishop on file is not a pinner","expected":true,"passed":true},{"actual":true,"check":"rook on diagonal is not a pinner","expected":true,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"file-pinned rook slides\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"file-pinned rook leaves\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"capture the pinner\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"diagonal pin knight\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"diagonal pinned bishop off line\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"diagonal pinned bishop on line\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bishop on file is not a pinner\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"rook on diagonal is not a pinner\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}