{"abstract":"Big-endian EXIF blocks are rejected as malformed.","category":"Image orientation metadata","checks":8,"contract":"Parse the orientation from an APP1 Exif payload given as a list of byte values: a 6-byte \"Exif\\0\\0\" header, then a TIFF header (II little-endian or MM big-endian, magic 42 as a 16-bit value, 32-bit IFD0 offset relative to the TIFF header). Scan IFD0 12-byte entries; the first entry with tag 0x0112, type SHORT (3) and count 1 supplies the value from the first two bytes of its value field. Values outside 1..8 and a missing entry yield 1; structural problems (short payload, bad header, byte order, magic, truncated entry) yield \"malformed\".","contract_signature":"data","evaluation_group":"w2-image-orientation-metadata-tiff-ifd0-parse","failed_approach":"Checking the second byte instead rejects little-endian headers.","family":"w2-image-orientation-metadata-tiff-ifd0-parse-magic-word","id":"FA-78921","implementations":{"attempt":{"sha256":"f594544426ed5352173f04b7bbc486a55a5b8dabf6adf014815c92f3d6fcd6a9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    b = data\n    if len(b) < 14 or b[:6] != [69, 120, 105, 102, 0, 0]:\n        return 'malformed'\n    t = b[6:]\n    if t[:2] == [73, 73]:\n        le = True\n    elif t[:2] == [77, 77]:\n        le = False\n    else:\n        return 'malformed'\n    def u16(o):\n        if o + 2 > len(t):\n            return None\n        return t[o] | (t[o + 1] << 8) if le else (t[o] << 8) | t[o + 1]\n    def u32(o):\n        if o + 4 > len(t):\n            return None\n        v = t[o:o + 4]\n        if le:\n            v = v[::-1]\n        return (v[0] << 24) | (v[1] << 16) | (v[2] << 8) | v[3]\n    if t[3] != 42:\n        return 'malformed'\n    ifd = u32(4)\n    count = u16(ifd)\n    if count is None:\n        return 'malformed'\n    for i in range(count):\n        e = ifd + 2 + 12 * i\n        if e + 12 > len(t):\n            return 'malformed'\n        tag = u16(e)\n        typ = u16(e + 2)\n        cnt = u32(e + 4)\n        if tag == 0x0112 and typ == 3 and cnt == 1:\n            val = u16(e + 8)\n            return val if 1 <= val <= 8 else 1\n    return 1\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 0, 7, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 114, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 10, 0, 0, 0, 0, 0, 2, 0, 15, 1, 3, 0, 1, 0, 0, 0, 73, 0, 0, 0, 26, 1, 3, 0, 1, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26, 1, 3, 0, 1, 0, 0, 0, 126, 1, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 43, 0, 0, 0, 8, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 77, 77, 0, 42, 0, 0, 0, 10, 0, 0, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 77, 77, 0, 42, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 0, 12, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 143, 0, 0, 1, 16, 0, 3, 0, 0, 0, 1, 1, 177, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 2, 1, 16, 0, 3, 0, 0, 0, 1, 1, 198, 0, 0, 1, 18, 0, 3, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 4, 1, 18, 0, 4, 0, 0, 0, 1, 0, 0, 0, 8, 1, 16, 0, 3, 0, 0, 0, 1, 1, 77, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 3, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 1, 10, 0, 0, 0, 0, 0, 0], 3]], [[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 1, 96, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 150], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 1, 0, 18, 1, 3, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0], 4], [[69, 120, 105, 102, 0, 0, 73, 73, 43, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 77, 77, 0, 42, 0, 0, 0, 8, 0, 5, 1, 18, 0, 4, 0, 0, 0, 2, 0, 0, 0, 6, 1, 26, 0, 3, 0, 0, 0, 1, 1, 200, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 17, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 9, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 111, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 73, 73, 42, 0, 10, 0, 0, 0, 0, 0, 1, 0, 18, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 43, 0, 0, 0, 10, 0, 0, 0, 3, 1, 26, 0, 3, 0, 0, 0, 1, 1, 193, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 15, 0, 0, 1, 16, 0, 3, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 3, 0, 18, 1, 4, 0, 1, 0, 0, 0, 8, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 77, 1, 0, 0, 16, 1, 3, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 10, 0, 0, 0, 5, 1, 18, 0, 4, 0, 0, 0, 2, 0, 0, 0, 8, 1, 26, 0, 3, 0, 0, 0, 1, 1, 15, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 0, 190, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 6, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 77, 0, 0, 0, 0, 0, 0], 6]], [[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 10, 0, 0, 0, 1, 1, 18, 0, 4, 0, 0, 0, 2, 0, 0, 0, 6], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 18, 1, 4, 0, 2, 0, 0, 0, 8, 0, 0, 0, 16, 1, 3, 0, 1, 0, 0, 0, 133, 1, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 4, 1, 16, 0, 3, 0, 0, 0, 1, 1, 192, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 63, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 103, 0, 0, 1, 18, 0, 3, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 10, 0, 0, 0, 0, 0, 1, 0, 16, 1, 3, 0, 1, 0, 0, 0, 171, 1, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 73, 73, 42, 0, 8, 0, 0, 0, 2, 0, 15, 1, 3, 0, 1, 0, 0, 0, 54, 1, 0, 0, 18, 1, 3, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 73, 73, 42, 0, 8, 0, 0, 0, 2, 0, 16, 1, 3, 0, 1, 0, 0, 0, 203, 0, 0, 0, 26, 1, 3, 0, 1, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 4, 1, 18, 0, 3, 0, 0, 0, 1, 0, 9, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 1, 115, 0, 0, 1, 16, 0, 3, 0, 0, 0, 1, 1, 244, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 186, 0, 0, 0, 0, 0, 0], 1]], [[[69, 120, 105, 102, 0, 0, 77, 77, 42, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 2, 1, 18, 0, 3, 0, 0, 0, 1, 0, 8, 0, 0, 1, 16, 0, 3, 0, 0, 0, 1, 0, 163, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 2, 0, 18, 1, 3, 0, 1, 0, 0, 0, 9, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 211, 1, 0], 1], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 1, 1, 15, 0, 3], 'malformed'], [[69, 120, 105, 102, 255, 225, 77, 77, 42, 0, 0, 0, 0, 8, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 43, 0, 0, 0, 8, 0, 2, 1, 26, 0, 3, 0, 0, 0, 1, 0, 60, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 7, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 77, 77, 0, 0, 0, 0, 0, 8, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 1, 1, 26, 0, 3, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 1, 1, 26, 0, 3, 0, 0, 0, 1, 0, 172, 0, 0, 0, 0, 0, 0], 1]], [[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 1, 0, 18, 1, 3, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0], 8], [[69, 120, 105, 102, 0, 0, 73, 73, 43, 0, 10, 0, 0, 0, 0, 0, 5, 0, 18, 1, 3, 0, 1, 0, 0, 0, 3, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 22, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 229, 0, 0, 0, 18, 1, 3, 0, 1, 0, 0, 0, 8, 0, 0, 0, 16, 1, 3, 0, 1, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 77, 77, 0, 42, 0, 0, 0, 8, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 1, 166, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 1, 241, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 0, 229, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 14, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 73, 73, 42, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 26, 1, 3, 0, 1, 0, 0, 0, 152, 1, 0, 0, 26, 1, 3, 0, 1, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 43, 0, 8, 0, 0, 0, 3, 0, 26, 1, 3, 0, 1, 0, 0, 0, 69, 1, 0, 0, 16, 1, 3, 0, 1, 0, 0, 0, 38, 1, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 2, 1, 18, 0, 3, 0, 0, 0, 1, 0, 2, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 135, 0, 0, 0, 0, 0, 0], 2]]]\nlabels = [\"regression: TIFF magic comparison\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), solve(args), 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":"31a50b97654026e855859fd8bfd50ff10f7ad7c7bb8e418244ae7bcecfcc8977","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    b = data\n    if len(b) < 14 or b[:6] != [69, 120, 105, 102, 0, 0]:\n        return 'malformed'\n    t = b[6:]\n    if t[:2] == [73, 73]:\n        le = True\n    elif t[:2] == [77, 77]:\n        le = False\n    else:\n        return 'malformed'\n    def u16(o):\n        if o + 2 > len(t):\n            return None\n        return t[o] | (t[o + 1] << 8) if le else (t[o] << 8) | t[o + 1]\n    def u32(o):\n        if o + 4 > len(t):\n            return None\n        v = t[o:o + 4]\n        if le:\n            v = v[::-1]\n        return (v[0] << 24) | (v[1] << 16) | (v[2] << 8) | v[3]\n    if t[2] != 42:\n        return 'malformed'\n    ifd = u32(4)\n    count = u16(ifd)\n    if count is None:\n        return 'malformed'\n    for i in range(count):\n        e = ifd + 2 + 12 * i\n        if e + 12 > len(t):\n            return 'malformed'\n        tag = u16(e)\n        typ = u16(e + 2)\n        cnt = u32(e + 4)\n        if tag == 0x0112 and typ == 3 and cnt == 1:\n            val = u16(e + 8)\n            return val if 1 <= val <= 8 else 1\n    return 1\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 0, 7, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 114, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 10, 0, 0, 0, 0, 0, 2, 0, 15, 1, 3, 0, 1, 0, 0, 0, 73, 0, 0, 0, 26, 1, 3, 0, 1, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26, 1, 3, 0, 1, 0, 0, 0, 126, 1, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 43, 0, 0, 0, 8, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 77, 77, 0, 42, 0, 0, 0, 10, 0, 0, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 77, 77, 0, 42, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 0, 12, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 143, 0, 0, 1, 16, 0, 3, 0, 0, 0, 1, 1, 177, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 2, 1, 16, 0, 3, 0, 0, 0, 1, 1, 198, 0, 0, 1, 18, 0, 3, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 4, 1, 18, 0, 4, 0, 0, 0, 1, 0, 0, 0, 8, 1, 16, 0, 3, 0, 0, 0, 1, 1, 77, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 3, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 1, 10, 0, 0, 0, 0, 0, 0], 3]], [[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 1, 96, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 150], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 1, 0, 18, 1, 3, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0], 4], [[69, 120, 105, 102, 0, 0, 73, 73, 43, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 77, 77, 0, 42, 0, 0, 0, 8, 0, 5, 1, 18, 0, 4, 0, 0, 0, 2, 0, 0, 0, 6, 1, 26, 0, 3, 0, 0, 0, 1, 1, 200, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 17, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 9, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 111, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 73, 73, 42, 0, 10, 0, 0, 0, 0, 0, 1, 0, 18, 1, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 43, 0, 0, 0, 10, 0, 0, 0, 3, 1, 26, 0, 3, 0, 0, 0, 1, 1, 193, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 15, 0, 0, 1, 16, 0, 3, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 3, 0, 18, 1, 4, 0, 1, 0, 0, 0, 8, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 77, 1, 0, 0, 16, 1, 3, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 10, 0, 0, 0, 5, 1, 18, 0, 4, 0, 0, 0, 2, 0, 0, 0, 8, 1, 26, 0, 3, 0, 0, 0, 1, 1, 15, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 0, 190, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 6, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 77, 0, 0, 0, 0, 0, 0], 6]], [[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 10, 0, 0, 0, 1, 1, 18, 0, 4, 0, 0, 0, 2, 0, 0, 0, 6], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 18, 1, 4, 0, 2, 0, 0, 0, 8, 0, 0, 0, 16, 1, 3, 0, 1, 0, 0, 0, 133, 1, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 4, 1, 16, 0, 3, 0, 0, 0, 1, 1, 192, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 63, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 0, 103, 0, 0, 1, 18, 0, 3, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 10, 0, 0, 0, 0, 0, 1, 0, 16, 1, 3, 0, 1, 0, 0, 0, 171, 1, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 73, 73, 42, 0, 8, 0, 0, 0, 2, 0, 15, 1, 3, 0, 1, 0, 0, 0, 54, 1, 0, 0, 18, 1, 3, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 255, 73, 73, 42, 0, 8, 0, 0, 0, 2, 0, 16, 1, 3, 0, 1, 0, 0, 0, 203, 0, 0, 0, 26, 1, 3, 0, 1, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 4, 1, 18, 0, 3, 0, 0, 0, 1, 0, 9, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 1, 115, 0, 0, 1, 16, 0, 3, 0, 0, 0, 1, 1, 244, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 186, 0, 0, 0, 0, 0, 0], 1]], [[[69, 120, 105, 102, 0, 0, 77, 77, 42, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 2, 1, 18, 0, 3, 0, 0, 0, 1, 0, 8, 0, 0, 1, 16, 0, 3, 0, 0, 0, 1, 0, 163, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 2, 0, 18, 1, 3, 0, 1, 0, 0, 0, 9, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 211, 1, 0], 1], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 1, 1, 15, 0, 3], 'malformed'], [[69, 120, 105, 102, 255, 225, 77, 77, 42, 0, 0, 0, 0, 8, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 43, 0, 0, 0, 8, 0, 2, 1, 26, 0, 3, 0, 0, 0, 1, 0, 60, 0, 0, 1, 18, 0, 3, 0, 0, 0, 1, 0, 7, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 77, 77, 0, 0, 0, 0, 0, 8, 0, 1, 1, 18, 0, 3, 0, 0, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 1, 1, 26, 0, 3, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 1, 1, 26, 0, 3, 0, 0, 0, 1, 0, 172, 0, 0, 0, 0, 0, 0], 1]], [[[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 1], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 1, 0, 18, 1, 3, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0], 8], [[69, 120, 105, 102, 0, 0, 73, 73, 43, 0, 10, 0, 0, 0, 0, 0, 5, 0, 18, 1, 3, 0, 1, 0, 0, 0, 3, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 22, 0, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 229, 0, 0, 0, 18, 1, 3, 0, 1, 0, 0, 0, 8, 0, 0, 0, 16, 1, 3, 0, 1, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 77, 77, 0, 42, 0, 0, 0, 8, 0, 3, 1, 15, 0, 3, 0, 0, 0, 1, 1, 166, 0, 0, 1, 26, 0, 3, 0, 0, 0, 1, 1, 241, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 0, 229, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 14, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 255, 225, 73, 73, 42, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 26, 1, 3, 0, 1, 0, 0, 0, 152, 1, 0, 0, 26, 1, 3, 0, 1, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 73, 73, 43, 0, 8, 0, 0, 0, 3, 0, 26, 1, 3, 0, 1, 0, 0, 0, 69, 1, 0, 0, 16, 1, 3, 0, 1, 0, 0, 0, 38, 1, 0, 0, 15, 1, 3, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0], 'malformed'], [[69, 120, 105, 102, 0, 0, 77, 77, 0, 42, 0, 0, 0, 8, 0, 2, 1, 18, 0, 3, 0, 0, 0, 1, 0, 2, 0, 0, 1, 15, 0, 3, 0, 0, 0, 1, 1, 135, 0, 0, 0, 0, 0, 0], 2]]]\nlabels = [\"regression: TIFF magic comparison\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), solve(args), 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 bounded teaching model with a stipulated contract; it makes no claim of conformance to any published specification. 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-image-orientation-metadata-tiff-ifd0-parse-magic-word","generated_at":"2026-09-29T14:49:39.857844+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Camera, phone and scanner images carry an orientation hint separately from the stored pixels; galleries, thumbnailers, editors and upload pipelines must interpret it consistently or photos appear sideways, mirrored or doubly rotated.","root_cause":"Only the first byte of the magic is compared with 42, which is correct only for little-endian headers.","sha256":"56b900de051f2ea85d8864177e7ddc8ee0b4cbf6a792c50a0b8b27385bffd8b7","title":"TIFF magic is checked as a single byte · 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.684,"exit_code":1,"observations":[{"actual":1,"check":"regression: TIFF magic comparison 0","expected":1,"passed":true},{"actual":"malformed","check":"repair trap 1","expected":1,"passed":false},{"actual":"malformed","check":"combined fault 2","expected":"malformed","passed":true},{"actual":"malformed","check":"control 3","expected":"malformed","passed":true},{"actual":"malformed","check":"control 4","expected":"malformed","passed":true},{"actual":"malformed","check":"boundary 5","expected":"malformed","passed":true},{"actual":"malformed","check":"boundary 6","expected":"malformed","passed":true},{"actual":3,"check":"control 7","expected":3,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: TIFF magic comparison 0\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": \"malformed\", \"expected\": 1, \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control 3\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control 4\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control 7\", \"actual\": 3, \"expected\": 3, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.04,"exit_code":1,"observations":[{"actual":"malformed","check":"regression: TIFF magic comparison 0","expected":1,"passed":false},{"actual":1,"check":"repair trap 1","expected":1,"passed":true},{"actual":"malformed","check":"combined fault 2","expected":"malformed","passed":true},{"actual":"malformed","check":"control 3","expected":"malformed","passed":true},{"actual":"malformed","check":"control 4","expected":"malformed","passed":true},{"actual":"malformed","check":"boundary 5","expected":"malformed","passed":true},{"actual":"malformed","check":"boundary 6","expected":"malformed","passed":true},{"actual":"malformed","check":"control 7","expected":3,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: TIFF magic comparison 0\", \"actual\": \"malformed\", \"expected\": 1, \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"combined fault 2\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control 3\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control 4\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": \"malformed\", \"expected\": \"malformed\", \"passed\": true}, {\"check\": \"control 7\", \"actual\": \"malformed\", \"expected\": 3, \"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."}}