{"abstract":"One more nesting level than configured is accepted.","category":"Email MIME structure","checks":7,"contract":"events are [\"open\", type] (multipart start), [\"leaf\", type, size] and [\"close\"]. The root multipart has depth 1. An open that would exceed max_depth records \"too-deep\" and its whole subtree (including nested opens) is skipped, but it still counts as a child of its parent. A multipart closing with no children records \"empty-multipart\", a close with nothing open records \"stray-close\", and containers left open record \"unclosed\". Result {leaves, depth (maximum reached), errors}.","evaluation_group":"w2-email_mime_structure-structure-events","failed_approach":"Using >= rejects the deepest level the limit allows. The attempted `len(stack) + 1 >= max_depth` still disagrees with a fixture.","family":"w2-email_mime_structure-structure-events-depth-limit","id":"FA-76531","implementations":{"attempt":{"sha256":"2567c86169a973c97dc7f86cef7ac8215c27eced856a01cedbcfaac99b8d3cc2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, max_depth):\n    stack = []\n    skip = 0\n    leaves = 0\n    depth = 0\n    errors = []\n    for ev in events:\n        kind = ev[0]\n        if skip:\n            if kind == 'open':\n                skip += 1\n            elif kind == 'close':\n                skip -= 1\n            continue\n        if kind == 'open':\n            if stack:\n                stack[-1] += 1\n            if len(stack) + 1 >= max_depth:\n                errors.append('too-deep')\n                skip = 1\n                continue\n            stack.append(0)\n            depth = max(depth, len(stack))\n        elif kind == 'leaf':\n            leaves += 1\n            if stack:\n                stack[-1] += 1\n        elif not stack:\n            errors.append('stray-close')\n        elif stack.pop() == 0:\n            errors.append('empty-multipart')\n    if stack:\n        errors.append('unclosed')\n    return {'leaves': leaves, 'depth': depth, 'errors': errors}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 1}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 4], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 1}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 1], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 1], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 2: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 2}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 5], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 2], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 2}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 2], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 2], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 3: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 3}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 6], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 3], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 3}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 3], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 3], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 4: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['leaf', 'image/png', 3], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 4}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 7], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 4], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2], ['leaf', 'text/plain', 3]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 4}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 4], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 4], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 5: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['leaf', 'image/png', 3], ['leaf', 'image/png', 4], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 5}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 8], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 5], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2], ['leaf', 'text/plain', 3], ['leaf', 'text/plain', 4]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 5}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 5], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})]}\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":"1f7490cd6ae9a96ea94cad580cce9c240dd1f3d08aad18f145357cf326fc7ecb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, max_depth):\n    stack = []\n    skip = 0\n    leaves = 0\n    depth = 0\n    errors = []\n    for ev in events:\n        kind = ev[0]\n        if skip:\n            if kind == 'open':\n                skip += 1\n            elif kind == 'close':\n                skip -= 1\n            continue\n        if kind == 'open':\n            if stack:\n                stack[-1] += 1\n            if len(stack) > max_depth:\n                errors.append('too-deep')\n                skip = 1\n                continue\n            stack.append(0)\n            depth = max(depth, len(stack))\n        elif kind == 'leaf':\n            leaves += 1\n            if stack:\n                stack[-1] += 1\n        elif not stack:\n            errors.append('stray-close')\n        elif stack.pop() == 0:\n            errors.append('empty-multipart')\n    if stack:\n        errors.append('unclosed')\n    return {'leaves': leaves, 'depth': depth, 'errors': errors}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 1}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 4], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 1}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 1], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 1], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 2: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 2}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 5], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 2], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 2}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 2], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 2], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 3: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 3}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 6], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 3], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 3}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 3], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 3], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 4: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['leaf', 'image/png', 3], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 4}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 7], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 4], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2], ['leaf', 'text/plain', 3]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 4}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 4], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 4], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 5: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['leaf', 'image/png', 3], ['leaf', 'image/png', 4], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 5}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 8], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 5], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2], ['leaf', 'text/plain', 3], ['leaf', 'text/plain', 4]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 5}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 5], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})]}\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":"3cfd44a122e85ff0428bcbb58adeea26488f54ea442855b83a0b4583647abd4a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, max_depth):\n    stack = []\n    skip = 0\n    leaves = 0\n    depth = 0\n    errors = []\n    for ev in events:\n        kind = ev[0]\n        if skip:\n            if kind == 'open':\n                skip += 1\n            elif kind == 'close':\n                skip -= 1\n            continue\n        if kind == 'open':\n            if stack:\n                stack[-1] += 1\n            if len(stack) + 1 > max_depth:\n                errors.append('too-deep')\n                skip = 1\n                continue\n            stack.append(0)\n            depth = max(depth, len(stack))\n        elif kind == 'leaf':\n            leaves += 1\n            if stack:\n                stack[-1] += 1\n        elif not stack:\n            errors.append('stray-close')\n        elif stack.pop() == 0:\n            errors.append('empty-multipart')\n    if stack:\n        errors.append('unclosed')\n    return {'leaves': leaves, 'depth': depth, 'errors': errors}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_CASES = {1: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 1}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 4], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 1}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 1], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 1], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 2: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 2}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 5], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 2], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 2}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 2], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 2], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 3: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 3}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 6], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 3], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 3}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 3], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 3], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 4: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['leaf', 'image/png', 3], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 4}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 7], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 4], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2], ['leaf', 'text/plain', 3]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 4}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 4], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 4], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})], 5: [('three levels with limit two', ([['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close'], ['leaf', 'image/png', 0], ['leaf', 'image/png', 1], ['leaf', 'image/png', 2], ['leaf', 'image/png', 3], ['leaf', 'image/png', 4], ['close']], 2), {'depth': 2, 'errors': ['too-deep'], 'leaves': 5}), ('deep skipped subtree', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['leaf', 'text/plain', 2], ['close'], ['leaf', 'text/plain', 8], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 1}), ('skipped child keeps parent non-empty', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['leaf', 'text/plain', 5], ['close'], ['close']], 1), {'depth': 1, 'errors': ['too-deep'], 'leaves': 0}), ('unterminated root', ([['open', 'multipart/mixed'], ['leaf', 'text/plain', 0], ['leaf', 'text/plain', 1], ['leaf', 'text/plain', 2], ['leaf', 'text/plain', 3], ['leaf', 'text/plain', 4]], 3), {'depth': 1, 'errors': ['unclosed'], 'leaves': 5}), ('deepest branch first', ([['open', 'multipart/mixed'], ['open', 'multipart/mixed'], ['open', 'multipart/alternative'], ['leaf', 'text/plain', 1], ['close'], ['close'], ['open', 'multipart/related'], ['leaf', 'text/html', 5], ['close'], ['close']], 5), {'depth': 3, 'errors': [], 'leaves': 2}), ('stray close', ([['leaf', 'text/plain', 5], ['close']], 2), {'depth': 0, 'errors': ['stray-close'], 'leaves': 1}), ('empty multipart', ([['open', 'multipart/mixed'], ['close']], 2), {'depth': 1, 'errors': ['empty-multipart'], 'leaves': 0})]}\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-structure-events-depth-limit","generated_at":"2026-09-29T14:49:17.184945+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Bounding MIME nesting protects mail parsers from resource exhaustion while keeping the reachable structure intact.","repair":"Use `len(stack) + 1 > max_depth` for the depth limit decision and keep every other rule of the model unchanged.","root_cause":"The depth limit decision evaluates `len(stack) > max_depth` where the contract requires `len(stack) + 1 > max_depth`.","sha256":"942446770d350fc9013ae443c2f0d3bbb37fe4259516c6c971848c4be3808ed4","title":"Build a bounded MIME tree summary from parser events: depth limit · 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":42.094,"exit_code":1,"observations":[{"actual":{"depth":1,"errors":["too-deep"],"leaves":1},"check":"three levels with limit two","expected":{"depth":2,"errors":["too-deep"],"leaves":1},"passed":false},{"actual":{"depth":0,"errors":["too-deep"],"leaves":0},"check":"deep skipped subtree","expected":{"depth":1,"errors":["too-deep"],"leaves":1},"passed":false},{"actual":{"depth":0,"errors":["too-deep"],"leaves":0},"check":"skipped child keeps parent non-empty","expected":{"depth":1,"errors":["too-deep"],"leaves":0},"passed":false},{"actual":{"depth":1,"errors":["unclosed"],"leaves":1},"check":"unterminated root","expected":{"depth":1,"errors":["unclosed"],"leaves":1},"passed":true},{"actual":{"depth":3,"errors":[],"leaves":2},"check":"deepest branch first","expected":{"depth":3,"errors":[],"leaves":2},"passed":true},{"actual":{"depth":0,"errors":["stray-close"],"leaves":1},"check":"stray close","expected":{"depth":0,"errors":["stray-close"],"leaves":1},"passed":true},{"actual":{"depth":1,"errors":["empty-multipart"],"leaves":0},"check":"empty multipart","expected":{"depth":1,"errors":["empty-multipart"],"leaves":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"three levels with limit two\", \"actual\": {\"leaves\": 1, \"depth\": 1, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 2, \"errors\": [\"too-deep\"], \"leaves\": 1}, \"passed\": false}, {\"check\": \"deep skipped subtree\", \"actual\": {\"leaves\": 0, \"depth\": 0, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"too-deep\"], \"leaves\": 1}, \"passed\": false}, {\"check\": \"skipped child keeps parent non-empty\", \"actual\": {\"leaves\": 0, \"depth\": 0, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"too-deep\"], \"leaves\": 0}, \"passed\": false}, {\"check\": \"unterminated root\", \"actual\": {\"leaves\": 1, \"depth\": 1, \"errors\": [\"unclosed\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"unclosed\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"deepest branch first\", \"actual\": {\"leaves\": 2, \"depth\": 3, \"errors\": []}, \"expected\": {\"depth\": 3, \"errors\": [], \"leaves\": 2}, \"passed\": true}, {\"check\": \"stray close\", \"actual\": {\"leaves\": 1, \"depth\": 0, \"errors\": [\"stray-close\"]}, \"expected\": {\"depth\": 0, \"errors\": [\"stray-close\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"empty multipart\", \"actual\": {\"leaves\": 0, \"depth\": 1, \"errors\": [\"empty-multipart\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"empty-multipart\"], \"leaves\": 0}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.105,"exit_code":1,"observations":[{"actual":{"depth":3,"errors":[],"leaves":2},"check":"three levels with limit two","expected":{"depth":2,"errors":["too-deep"],"leaves":1},"passed":false},{"actual":{"depth":2,"errors":["too-deep"],"leaves":2},"check":"deep skipped subtree","expected":{"depth":1,"errors":["too-deep"],"leaves":1},"passed":false},{"actual":{"depth":2,"errors":[],"leaves":1},"check":"skipped child keeps parent non-empty","expected":{"depth":1,"errors":["too-deep"],"leaves":0},"passed":false},{"actual":{"depth":1,"errors":["unclosed"],"leaves":1},"check":"unterminated root","expected":{"depth":1,"errors":["unclosed"],"leaves":1},"passed":true},{"actual":{"depth":3,"errors":[],"leaves":2},"check":"deepest branch first","expected":{"depth":3,"errors":[],"leaves":2},"passed":true},{"actual":{"depth":0,"errors":["stray-close"],"leaves":1},"check":"stray close","expected":{"depth":0,"errors":["stray-close"],"leaves":1},"passed":true},{"actual":{"depth":1,"errors":["empty-multipart"],"leaves":0},"check":"empty multipart","expected":{"depth":1,"errors":["empty-multipart"],"leaves":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"three levels with limit two\", \"actual\": {\"leaves\": 2, \"depth\": 3, \"errors\": []}, \"expected\": {\"depth\": 2, \"errors\": [\"too-deep\"], \"leaves\": 1}, \"passed\": false}, {\"check\": \"deep skipped subtree\", \"actual\": {\"leaves\": 2, \"depth\": 2, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"too-deep\"], \"leaves\": 1}, \"passed\": false}, {\"check\": \"skipped child keeps parent non-empty\", \"actual\": {\"leaves\": 1, \"depth\": 2, \"errors\": []}, \"expected\": {\"depth\": 1, \"errors\": [\"too-deep\"], \"leaves\": 0}, \"passed\": false}, {\"check\": \"unterminated root\", \"actual\": {\"leaves\": 1, \"depth\": 1, \"errors\": [\"unclosed\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"unclosed\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"deepest branch first\", \"actual\": {\"leaves\": 2, \"depth\": 3, \"errors\": []}, \"expected\": {\"depth\": 3, \"errors\": [], \"leaves\": 2}, \"passed\": true}, {\"check\": \"stray close\", \"actual\": {\"leaves\": 1, \"depth\": 0, \"errors\": [\"stray-close\"]}, \"expected\": {\"depth\": 0, \"errors\": [\"stray-close\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"empty multipart\", \"actual\": {\"leaves\": 0, \"depth\": 1, \"errors\": [\"empty-multipart\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"empty-multipart\"], \"leaves\": 0}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.39,"exit_code":0,"observations":[{"actual":{"depth":2,"errors":["too-deep"],"leaves":1},"check":"three levels with limit two","expected":{"depth":2,"errors":["too-deep"],"leaves":1},"passed":true},{"actual":{"depth":1,"errors":["too-deep"],"leaves":1},"check":"deep skipped subtree","expected":{"depth":1,"errors":["too-deep"],"leaves":1},"passed":true},{"actual":{"depth":1,"errors":["too-deep"],"leaves":0},"check":"skipped child keeps parent non-empty","expected":{"depth":1,"errors":["too-deep"],"leaves":0},"passed":true},{"actual":{"depth":1,"errors":["unclosed"],"leaves":1},"check":"unterminated root","expected":{"depth":1,"errors":["unclosed"],"leaves":1},"passed":true},{"actual":{"depth":3,"errors":[],"leaves":2},"check":"deepest branch first","expected":{"depth":3,"errors":[],"leaves":2},"passed":true},{"actual":{"depth":0,"errors":["stray-close"],"leaves":1},"check":"stray close","expected":{"depth":0,"errors":["stray-close"],"leaves":1},"passed":true},{"actual":{"depth":1,"errors":["empty-multipart"],"leaves":0},"check":"empty multipart","expected":{"depth":1,"errors":["empty-multipart"],"leaves":0},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"three levels with limit two\", \"actual\": {\"leaves\": 1, \"depth\": 2, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 2, \"errors\": [\"too-deep\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"deep skipped subtree\", \"actual\": {\"leaves\": 1, \"depth\": 1, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"too-deep\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"skipped child keeps parent non-empty\", \"actual\": {\"leaves\": 0, \"depth\": 1, \"errors\": [\"too-deep\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"too-deep\"], \"leaves\": 0}, \"passed\": true}, {\"check\": \"unterminated root\", \"actual\": {\"leaves\": 1, \"depth\": 1, \"errors\": [\"unclosed\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"unclosed\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"deepest branch first\", \"actual\": {\"leaves\": 2, \"depth\": 3, \"errors\": []}, \"expected\": {\"depth\": 3, \"errors\": [], \"leaves\": 2}, \"passed\": true}, {\"check\": \"stray close\", \"actual\": {\"leaves\": 1, \"depth\": 0, \"errors\": [\"stray-close\"]}, \"expected\": {\"depth\": 0, \"errors\": [\"stray-close\"], \"leaves\": 1}, \"passed\": true}, {\"check\": \"empty multipart\", \"actual\": {\"leaves\": 0, \"depth\": 1, \"errors\": [\"empty-multipart\"]}, \"expected\": {\"depth\": 1, \"errors\": [\"empty-multipart\"], \"leaves\": 0}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}