{"abstract":"Continuations written with capital letters are ignored and the attachment loses its name.","category":"Email MIME structure","checks":8,"contract":"params are [name, value] pairs; names are case-insensitive. \"filename*\" (a single extended value charset'lang'text) wins over everything. Otherwise segments \"filename*<n>\" (plain) and \"filename*<n>*\" (percent-encoded) with decimal n without leading zeros (\"0\" allowed) are joined in numeric order from 0, stopping at the first gap; only an encoded segment 0 carries the charset'lang' prefix. Bytes of all segments are concatenated before decoding with the charset (utf-8, iso-8859-1 or us-ascii; others decode as utf-8; undecodable bytes become U+FFFD). Without a segment 0 the plain \"filename\" value (or None) is returned.","evaluation_group":"w2-email_mime_structure-parameter-continuations","failed_approach":"Trimming spaces does not fold case. The attempted `n = name.strip()` still disagrees with a fixture.","family":"w2-email_mime_structure-parameter-continuations-parameter-name-case","id":"FA-76686","implementations":{"attempt":{"sha256":"fa3f38a4f9f329ad2431130f26c9f8f9e25e0ed51e01f4d742638d8f815de76a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom urllib.parse import unquote_to_bytes\nN = 1\nobservations = []\ndef solve(params):\n    single = None\n    plain = None\n    segs = {}\n    for name, value in params:\n        n = name.strip()\n        if n == 'filename*':\n            single = value\n        elif n == 'filename':\n            plain = value\n        elif n.startswith('filename*'):\n            rest = n[9:]\n            enc = rest.endswith('*')\n            num = rest[:-1] if enc else rest\n            if num.isdigit() and (num == '0' or not num.startswith('0')):\n                segs[int(num)] = (enc, value)\n    def codec(cs):\n        cs = (cs or 'us-ascii').lower()\n        return cs if cs in ('utf-8', 'iso-8859-1', 'us-ascii') else 'utf-8'\n    if single is not None:\n        cs, _, rest = single.partition(\"'\")\n        _, _, value = rest.partition(\"'\")\n        return unquote_to_bytes(value).decode(codec(cs), 'replace')\n    if 0 not in segs:\n        return plain\n    charset = 'us-ascii'\n    chunks = []\n    expect = 0\n    for i in sorted(segs):\n        if i != expect:\n            break\n        enc, v = segs[i]\n        if enc and i == 0:\n            charset, _, rest = v.partition(\"'\")\n            _, _, v = rest.partition(\"'\")\n        chunks.append(unquote_to_bytes(v) if enc else v.encode('latin-1', 'replace'))\n        expect += 1\n    return b''.join(chunks).decode(codec(charset), 'replace')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short1']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a1'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a1b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b1'], ['filename*01', 'X']],), 'ab1'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_1.txt']],), 'café_1.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine1']],), \"it'sfine1\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve1.txt\"], ['filename*0', 'seg']],), 'naïve1.txt'), ('orphan continuation', ([['filename', 'plain1.txt'], ['filename*1', 'orphan']],), 'plain1.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per1']],), 'upper1')], 2: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short2']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a2'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a2b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b2'], ['filename*01', 'X']],), 'ab2'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_2.txt']],), 'café_2.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine2']],), \"it'sfine2\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve2.txt\"], ['filename*0', 'seg']],), 'naïve2.txt'), ('orphan continuation', ([['filename', 'plain2.txt'], ['filename*1', 'orphan']],), 'plain2.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per2']],), 'upper2')], 3: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short3']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a3'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a3b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b3'], ['filename*01', 'X']],), 'ab3'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_3.txt']],), 'café_3.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine3']],), \"it'sfine3\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve3.txt\"], ['filename*0', 'seg']],), 'naïve3.txt'), ('orphan continuation', ([['filename', 'plain3.txt'], ['filename*1', 'orphan']],), 'plain3.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per3']],), 'upper3')], 4: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short4']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a4'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a4b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b4'], ['filename*01', 'X']],), 'ab4'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_4.txt']],), 'café_4.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine4']],), \"it'sfine4\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve4.txt\"], ['filename*0', 'seg']],), 'naïve4.txt'), ('orphan continuation', ([['filename', 'plain4.txt'], ['filename*1', 'orphan']],), 'plain4.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per4']],), 'upper4')], 5: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short5']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a5'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a5b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b5'], ['filename*01', 'X']],), 'ab5'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_5.txt']],), 'café_5.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine5']],), \"it'sfine5\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve5.txt\"], ['filename*0', 'seg']],), 'naïve5.txt'), ('orphan continuation', ([['filename', 'plain5.txt'], ['filename*1', 'orphan']],), 'plain5.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per5']],), 'upper5')]}\nfor _label, _args, _expected in _CASES[N]:\n    check(_label, 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":"e96d0faddc2ddc100949f152d8882d3094466ca39a139956c81c7f0e0d2a0a59","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom urllib.parse import unquote_to_bytes\nN = 1\nobservations = []\ndef solve(params):\n    single = None\n    plain = None\n    segs = {}\n    for name, value in params:\n        n = name\n        if n == 'filename*':\n            single = value\n        elif n == 'filename':\n            plain = value\n        elif n.startswith('filename*'):\n            rest = n[9:]\n            enc = rest.endswith('*')\n            num = rest[:-1] if enc else rest\n            if num.isdigit() and (num == '0' or not num.startswith('0')):\n                segs[int(num)] = (enc, value)\n    def codec(cs):\n        cs = (cs or 'us-ascii').lower()\n        return cs if cs in ('utf-8', 'iso-8859-1', 'us-ascii') else 'utf-8'\n    if single is not None:\n        cs, _, rest = single.partition(\"'\")\n        _, _, value = rest.partition(\"'\")\n        return unquote_to_bytes(value).decode(codec(cs), 'replace')\n    if 0 not in segs:\n        return plain\n    charset = 'us-ascii'\n    chunks = []\n    expect = 0\n    for i in sorted(segs):\n        if i != expect:\n            break\n        enc, v = segs[i]\n        if enc and i == 0:\n            charset, _, rest = v.partition(\"'\")\n            _, _, v = rest.partition(\"'\")\n        chunks.append(unquote_to_bytes(v) if enc else v.encode('latin-1', 'replace'))\n        expect += 1\n    return b''.join(chunks).decode(codec(charset), 'replace')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short1']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a1'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a1b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b1'], ['filename*01', 'X']],), 'ab1'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_1.txt']],), 'café_1.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine1']],), \"it'sfine1\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve1.txt\"], ['filename*0', 'seg']],), 'naïve1.txt'), ('orphan continuation', ([['filename', 'plain1.txt'], ['filename*1', 'orphan']],), 'plain1.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per1']],), 'upper1')], 2: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short2']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a2'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a2b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b2'], ['filename*01', 'X']],), 'ab2'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_2.txt']],), 'café_2.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine2']],), \"it'sfine2\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve2.txt\"], ['filename*0', 'seg']],), 'naïve2.txt'), ('orphan continuation', ([['filename', 'plain2.txt'], ['filename*1', 'orphan']],), 'plain2.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per2']],), 'upper2')], 3: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short3']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a3'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a3b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b3'], ['filename*01', 'X']],), 'ab3'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_3.txt']],), 'café_3.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine3']],), \"it'sfine3\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve3.txt\"], ['filename*0', 'seg']],), 'naïve3.txt'), ('orphan continuation', ([['filename', 'plain3.txt'], ['filename*1', 'orphan']],), 'plain3.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per3']],), 'upper3')], 4: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short4']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a4'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a4b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b4'], ['filename*01', 'X']],), 'ab4'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_4.txt']],), 'café_4.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine4']],), \"it'sfine4\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve4.txt\"], ['filename*0', 'seg']],), 'naïve4.txt'), ('orphan continuation', ([['filename', 'plain4.txt'], ['filename*1', 'orphan']],), 'plain4.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per4']],), 'upper4')], 5: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short5']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a5'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a5b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b5'], ['filename*01', 'X']],), 'ab5'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_5.txt']],), 'café_5.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine5']],), \"it'sfine5\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve5.txt\"], ['filename*0', 'seg']],), 'naïve5.txt'), ('orphan continuation', ([['filename', 'plain5.txt'], ['filename*1', 'orphan']],), 'plain5.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per5']],), 'upper5')]}\nfor _label, _args, _expected in _CASES[N]:\n    check(_label, 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"},"fixed":{"sha256":"e2f1abfbc08ff26d40836d82bcc876944ae73ecbd66fec0ad89acbfd267c34b0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom urllib.parse import unquote_to_bytes\nN = 1\nobservations = []\ndef solve(params):\n    single = None\n    plain = None\n    segs = {}\n    for name, value in params:\n        n = name.lower()\n        if n == 'filename*':\n            single = value\n        elif n == 'filename':\n            plain = value\n        elif n.startswith('filename*'):\n            rest = n[9:]\n            enc = rest.endswith('*')\n            num = rest[:-1] if enc else rest\n            if num.isdigit() and (num == '0' or not num.startswith('0')):\n                segs[int(num)] = (enc, value)\n    def codec(cs):\n        cs = (cs or 'us-ascii').lower()\n        return cs if cs in ('utf-8', 'iso-8859-1', 'us-ascii') else 'utf-8'\n    if single is not None:\n        cs, _, rest = single.partition(\"'\")\n        _, _, value = rest.partition(\"'\")\n        return unquote_to_bytes(value).decode(codec(cs), 'replace')\n    if 0 not in segs:\n        return plain\n    charset = 'us-ascii'\n    chunks = []\n    expect = 0\n    for i in sorted(segs):\n        if i != expect:\n            break\n        enc, v = segs[i]\n        if enc and i == 0:\n            charset, _, rest = v.partition(\"'\")\n            _, _, v = rest.partition(\"'\")\n        chunks.append(unquote_to_bytes(v) if enc else v.encode('latin-1', 'replace'))\n        expect += 1\n    return b''.join(chunks).decode(codec(charset), 'replace')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short1']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a1'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a1b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b1'], ['filename*01', 'X']],), 'ab1'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_1.txt']],), 'café_1.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine1']],), \"it'sfine1\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve1.txt\"], ['filename*0', 'seg']],), 'naïve1.txt'), ('orphan continuation', ([['filename', 'plain1.txt'], ['filename*1', 'orphan']],), 'plain1.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per1']],), 'upper1')], 2: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short2']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a2'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a2b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b2'], ['filename*01', 'X']],), 'ab2'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_2.txt']],), 'café_2.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine2']],), \"it'sfine2\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve2.txt\"], ['filename*0', 'seg']],), 'naïve2.txt'), ('orphan continuation', ([['filename', 'plain2.txt'], ['filename*1', 'orphan']],), 'plain2.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per2']],), 'upper2')], 3: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short3']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a3'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a3b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b3'], ['filename*01', 'X']],), 'ab3'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_3.txt']],), 'café_3.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine3']],), \"it'sfine3\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve3.txt\"], ['filename*0', 'seg']],), 'naïve3.txt'), ('orphan continuation', ([['filename', 'plain3.txt'], ['filename*1', 'orphan']],), 'plain3.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per3']],), 'upper3')], 4: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short4']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a4'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a4b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b4'], ['filename*01', 'X']],), 'ab4'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_4.txt']],), 'café_4.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine4']],), \"it'sfine4\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve4.txt\"], ['filename*0', 'seg']],), 'naïve4.txt'), ('orphan continuation', ([['filename', 'plain4.txt'], ['filename*1', 'orphan']],), 'plain4.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per4']],), 'upper4')], 5: [('twelve segments', ([['filename*0', 'p0.'], ['filename*1', 'p1.'], ['filename*10', 'p10.'], ['filename*11', 'p11.'], ['filename*2', 'p2.'], ['filename*3', 'p3.'], ['filename*4', 'p4.'], ['filename*5', 'p5.'], ['filename*6', 'p6.'], ['filename*7', 'p7.'], ['filename*8', 'p8.'], ['filename*9', 'p9.'], ['filename', 'short5']],), 'p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.'), ('gap in segments', ([['filename*0', 'a5'], ['filename*1', 'b'], ['filename*3', 'd']],), 'a5b'), ('leading zero index', ([['filename*0', 'a'], ['filename*1', 'b5'], ['filename*01', 'X']],), 'ab5'), ('charset only on first segment', ([['filename*0*', \"utf-8''caf%C3\"], ['filename*1*', '%A9_5.txt']],), 'café_5.txt'), ('quote inside plain first segment', ([['filename*0', \"it's\"], ['filename*1', 'fine5']],), \"it'sfine5\"), ('single extended value wins', ([['filename', 'plain.txt'], ['filename*', \"utf-8''na%C3%AFve5.txt\"], ['filename*0', 'seg']],), 'naïve5.txt'), ('orphan continuation', ([['filename', 'plain5.txt'], ['filename*1', 'orphan']],), 'plain5.txt'), ('upper-case names', ([['FileName*0', 'up'], ['FILENAME*1', 'per5']],), 'upper5')]}\nfor _label, _args, _expected in _CASES[N]:\n    check(_label, 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":"Stipulated offline model over pre-parsed MIME dictionaries; not a conforming MIME parser, generator or mail client. 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-email_mime_structure-parameter-continuations-parameter-name-case","generated_at":"2026-09-29T14:49:18.583510+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Long or non-ASCII attachment names are split into continuations; reassembly errors garble or truncate names.","repair":"Use `n = name.lower()` for the parameter name case decision and keep every other rule of the model unchanged.","root_cause":"The parameter name case decision evaluates `n = name` where the contract requires `n = name.lower()`.","sha256":"0c8a05450c9f02f436f1082d63094e4f129187c406de0c18a7c53b60132e8268","title":"Reassemble RFC 2231 style filename parameter continuations: parameter name case · case 01","variant":1,"variant_policy":"N selects a different enumerated fixture set (renamed identifiers, part counts and sizes); boundary fixtures recur across variants.","verification":{"attempt":{"elapsed_ms":39.629,"exit_code":1,"observations":[{"actual":"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.","check":"twelve segments","expected":"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.","passed":true},{"actual":"a1b","check":"gap in segments","expected":"a1b","passed":true},{"actual":"ab1","check":"leading zero index","expected":"ab1","passed":true},{"actual":"café_1.txt","check":"charset only on first segment","expected":"café_1.txt","passed":true},{"actual":"it'sfine1","check":"quote inside plain first segment","expected":"it'sfine1","passed":true},{"actual":"naïve1.txt","check":"single extended value wins","expected":"naïve1.txt","passed":true},{"actual":"plain1.txt","check":"orphan continuation","expected":"plain1.txt","passed":true},{"actual":null,"check":"upper-case names","expected":"upper1","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"twelve segments\", \"actual\": \"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.\", \"expected\": \"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.\", \"passed\": true}, {\"check\": \"gap in segments\", \"actual\": \"a1b\", \"expected\": \"a1b\", \"passed\": true}, {\"check\": \"leading zero index\", \"actual\": \"ab1\", \"expected\": \"ab1\", \"passed\": true}, {\"check\": \"charset only on first segment\", \"actual\": \"café_1.txt\", \"expected\": \"café_1.txt\", \"passed\": true}, {\"check\": \"quote inside plain first segment\", \"actual\": \"it'sfine1\", \"expected\": \"it'sfine1\", \"passed\": true}, {\"check\": \"single extended value wins\", \"actual\": \"naïve1.txt\", \"expected\": \"naïve1.txt\", \"passed\": true}, {\"check\": \"orphan continuation\", \"actual\": \"plain1.txt\", \"expected\": \"plain1.txt\", \"passed\": true}, {\"check\": \"upper-case names\", \"actual\": null, \"expected\": \"upper1\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.672,"exit_code":1,"observations":[{"actual":"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.","check":"twelve segments","expected":"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.","passed":true},{"actual":"a1b","check":"gap in segments","expected":"a1b","passed":true},{"actual":"ab1","check":"leading zero index","expected":"ab1","passed":true},{"actual":"café_1.txt","check":"charset only on first segment","expected":"café_1.txt","passed":true},{"actual":"it'sfine1","check":"quote inside plain first segment","expected":"it'sfine1","passed":true},{"actual":"naïve1.txt","check":"single extended value wins","expected":"naïve1.txt","passed":true},{"actual":"plain1.txt","check":"orphan continuation","expected":"plain1.txt","passed":true},{"actual":null,"check":"upper-case names","expected":"upper1","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"twelve segments\", \"actual\": \"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.\", \"expected\": \"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.\", \"passed\": true}, {\"check\": \"gap in segments\", \"actual\": \"a1b\", \"expected\": \"a1b\", \"passed\": true}, {\"check\": \"leading zero index\", \"actual\": \"ab1\", \"expected\": \"ab1\", \"passed\": true}, {\"check\": \"charset only on first segment\", \"actual\": \"café_1.txt\", \"expected\": \"café_1.txt\", \"passed\": true}, {\"check\": \"quote inside plain first segment\", \"actual\": \"it'sfine1\", \"expected\": \"it'sfine1\", \"passed\": true}, {\"check\": \"single extended value wins\", \"actual\": \"naïve1.txt\", \"expected\": \"naïve1.txt\", \"passed\": true}, {\"check\": \"orphan continuation\", \"actual\": \"plain1.txt\", \"expected\": \"plain1.txt\", \"passed\": true}, {\"check\": \"upper-case names\", \"actual\": null, \"expected\": \"upper1\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.258,"exit_code":0,"observations":[{"actual":"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.","check":"twelve segments","expected":"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.","passed":true},{"actual":"a1b","check":"gap in segments","expected":"a1b","passed":true},{"actual":"ab1","check":"leading zero index","expected":"ab1","passed":true},{"actual":"café_1.txt","check":"charset only on first segment","expected":"café_1.txt","passed":true},{"actual":"it'sfine1","check":"quote inside plain first segment","expected":"it'sfine1","passed":true},{"actual":"naïve1.txt","check":"single extended value wins","expected":"naïve1.txt","passed":true},{"actual":"plain1.txt","check":"orphan continuation","expected":"plain1.txt","passed":true},{"actual":"upper1","check":"upper-case names","expected":"upper1","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"twelve segments\", \"actual\": \"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.\", \"expected\": \"p0.p1.p2.p3.p4.p5.p6.p7.p8.p9.p10.p11.\", \"passed\": true}, {\"check\": \"gap in segments\", \"actual\": \"a1b\", \"expected\": \"a1b\", \"passed\": true}, {\"check\": \"leading zero index\", \"actual\": \"ab1\", \"expected\": \"ab1\", \"passed\": true}, {\"check\": \"charset only on first segment\", \"actual\": \"café_1.txt\", \"expected\": \"café_1.txt\", \"passed\": true}, {\"check\": \"quote inside plain first segment\", \"actual\": \"it'sfine1\", \"expected\": \"it'sfine1\", \"passed\": true}, {\"check\": \"single extended value wins\", \"actual\": \"naïve1.txt\", \"expected\": \"naïve1.txt\", \"passed\": true}, {\"check\": \"orphan continuation\", \"actual\": \"plain1.txt\", \"expected\": \"plain1.txt\", \"passed\": true}, {\"check\": \"upper-case names\", \"actual\": \"upper1\", \"expected\": \"upper1\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}