{"abstract":"A comma inside a nested expression becomes a top-level boundary, or mismatched brackets pass unchecked.","category":"Parsing","checks":8,"contract":"Split a comma-separated expression into trimmed top-level fields using (), [], and {} nesting. Preserve empty fields, return [] for an empty string, and return None for mismatched or unclosed brackets. Quotes and escapes have no special meaning in this restricted grammar.","evaluation_group":"model-0ad071d1f8c7a869","failed_approach":"Counting parentheses misses square/curly nesting and cannot verify matching bracket types.","family":"parse-nested-list-separators","id":"FA-216","implementations":{"attempt":{"sha256":"32b9a384389854fe52f854e3abdda02adf143b782c4b257ad16dab66a0cf1f31","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(text):\n    if not text:\n        return []\n    fields, current, depth = [], [], 0\n    for char in text:\n        depth += (char == '(') - (char == ')')\n        if char == ',' and depth == 0:\n            fields.append(''.join(current).strip())\n            current = []\n        else:\n            current.append(char)\n    return fields + [''.join(current).strip()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nnested = '(' * N + 'a,b' + ')' * N\ncheck('nested parentheses', solve(nested + ',tail'), [nested, 'tail'])\ncheck('square brackets', solve('[a,b],tail'), ['[a,b]', 'tail'])\ncheck('mixed nested bracket types', solve('{a,[b,(c,d)]},tail'), ['{a,[b,(c,d)]}', 'tail'])\ncheck('mismatched closer rejected', solve('([a,b)],tail'), None)\ncheck('unclosed nesting rejected', solve('[' * N + 'a,b'), None)\ncheck('unexpected closing bracket rejected', solve('a],tail'), None)\ncheck('whitespace and empty fields', solve(' a , ,b '), ['a', '', 'b'])\ncheck('empty list source', solve(''), [])\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":"caf013b20c3d368ceea7f154423121b102aadcf93660f27bc922e8a6fa4399b1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(text):\n    return [part.strip() for part in text.split(',')] if text else []\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nnested = '(' * N + 'a,b' + ')' * N\ncheck('nested parentheses', solve(nested + ',tail'), [nested, 'tail'])\ncheck('square brackets', solve('[a,b],tail'), ['[a,b]', 'tail'])\ncheck('mixed nested bracket types', solve('{a,[b,(c,d)]},tail'), ['{a,[b,(c,d)]}', 'tail'])\ncheck('mismatched closer rejected', solve('([a,b)],tail'), None)\ncheck('unclosed nesting rejected', solve('[' * N + 'a,b'), None)\ncheck('unexpected closing bracket rejected', solve('a],tail'), None)\ncheck('whitespace and empty fields', solve(' a , ,b '), ['a', '', 'b'])\ncheck('empty list source', solve(''), [])\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":"e5b89860b5602c2bdbfe726f3a49e73748711cd920254df6afdff26eb6e5e6ef","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(text):\n    if not text:\n        return []\n    pairs = {')': '(', ']': '[', '}': '{'}\n    stack, fields, current = [], [], []\n    for char in text:\n        if char in '([{':\n            stack.append(char)\n        elif char in pairs:\n            if not stack or stack.pop() != pairs[char]:\n                return None\n        if char == ',' and not stack:\n            fields.append(''.join(current).strip())\n            current = []\n        else:\n            current.append(char)\n    return None if stack else fields + [''.join(current).strip()]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nnested = '(' * N + 'a,b' + ')' * N\ncheck('nested parentheses', solve(nested + ',tail'), [nested, 'tail'])\ncheck('square brackets', solve('[a,b],tail'), ['[a,b]', 'tail'])\ncheck('mixed nested bracket types', solve('{a,[b,(c,d)]},tail'), ['{a,[b,(c,d)]}', 'tail'])\ncheck('mismatched closer rejected', solve('([a,b)],tail'), None)\ncheck('unclosed nesting rejected', solve('[' * N + 'a,b'), None)\ncheck('unexpected closing bracket rejected', solve('a],tail'), None)\ncheck('whitespace and empty fields', solve(' a , ,b '), ['a', '', 'b'])\ncheck('empty list source', solve(''), [])\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":" 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":"parse-nested-list-separators","generated_at":"2026-09-29T14:36:51.490605+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Command and configuration mini-languages often embed collections inside argument lists. Typed nesting is needed even before adding full expression parsing.","repair":"Track matching opening brackets and split only when the stack is empty; reject malformed nesting.","root_cause":"The implementation splits raw text or counts only one kind of bracket without a typed nesting stack.","sha256":"d7daed21fcdd766d4601e875d65465b97257de414bfc53444882564ee360a3e8","title":"A separator inside nested brackets splits the outer list · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":32.348,"exit_code":1,"observations":[{"actual":["(a,b)","tail"],"check":"nested parentheses","expected":["(a,b)","tail"],"passed":true},{"actual":["[a","b]","tail"],"check":"square brackets","expected":["[a,b]","tail"],"passed":false},{"actual":["{a","[b","(c,d)]}","tail"],"check":"mixed nested bracket types","expected":["{a,[b,(c,d)]}","tail"],"passed":false},{"actual":["([a,b)]","tail"],"check":"mismatched closer rejected","expected":null,"passed":false},{"actual":["[a","b"],"check":"unclosed nesting rejected","expected":null,"passed":false},{"actual":["a]","tail"],"check":"unexpected closing bracket rejected","expected":null,"passed":false},{"actual":["a","","b"],"check":"whitespace and empty fields","expected":["a","","b"],"passed":true},{"actual":[],"check":"empty list source","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"nested parentheses\", \"actual\": [\"(a,b)\", \"tail\"], \"expected\": [\"(a,b)\", \"tail\"], \"passed\": true}, {\"check\": \"square brackets\", \"actual\": [\"[a\", \"b]\", \"tail\"], \"expected\": [\"[a,b]\", \"tail\"], \"passed\": false}, {\"check\": \"mixed nested bracket types\", \"actual\": [\"{a\", \"[b\", \"(c,d)]}\", \"tail\"], \"expected\": [\"{a,[b,(c,d)]}\", \"tail\"], \"passed\": false}, {\"check\": \"mismatched closer rejected\", \"actual\": [\"([a,b)]\", \"tail\"], \"expected\": null, \"passed\": false}, {\"check\": \"unclosed nesting rejected\", \"actual\": [\"[a\", \"b\"], \"expected\": null, \"passed\": false}, {\"check\": \"unexpected closing bracket rejected\", \"actual\": [\"a]\", \"tail\"], \"expected\": null, \"passed\": false}, {\"check\": \"whitespace and empty fields\", \"actual\": [\"a\", \"\", \"b\"], \"expected\": [\"a\", \"\", \"b\"], \"passed\": true}, {\"check\": \"empty list source\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":29.92,"exit_code":1,"observations":[{"actual":["(a","b)","tail"],"check":"nested parentheses","expected":["(a,b)","tail"],"passed":false},{"actual":["[a","b]","tail"],"check":"square brackets","expected":["[a,b]","tail"],"passed":false},{"actual":["{a","[b","(c","d)]}","tail"],"check":"mixed nested bracket types","expected":["{a,[b,(c,d)]}","tail"],"passed":false},{"actual":["([a","b)]","tail"],"check":"mismatched closer rejected","expected":null,"passed":false},{"actual":["[a","b"],"check":"unclosed nesting rejected","expected":null,"passed":false},{"actual":["a]","tail"],"check":"unexpected closing bracket rejected","expected":null,"passed":false},{"actual":["a","","b"],"check":"whitespace and empty fields","expected":["a","","b"],"passed":true},{"actual":[],"check":"empty list source","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"nested parentheses\", \"actual\": [\"(a\", \"b)\", \"tail\"], \"expected\": [\"(a,b)\", \"tail\"], \"passed\": false}, {\"check\": \"square brackets\", \"actual\": [\"[a\", \"b]\", \"tail\"], \"expected\": [\"[a,b]\", \"tail\"], \"passed\": false}, {\"check\": \"mixed nested bracket types\", \"actual\": [\"{a\", \"[b\", \"(c\", \"d)]}\", \"tail\"], \"expected\": [\"{a,[b,(c,d)]}\", \"tail\"], \"passed\": false}, {\"check\": \"mismatched closer rejected\", \"actual\": [\"([a\", \"b)]\", \"tail\"], \"expected\": null, \"passed\": false}, {\"check\": \"unclosed nesting rejected\", \"actual\": [\"[a\", \"b\"], \"expected\": null, \"passed\": false}, {\"check\": \"unexpected closing bracket rejected\", \"actual\": [\"a]\", \"tail\"], \"expected\": null, \"passed\": false}, {\"check\": \"whitespace and empty fields\", \"actual\": [\"a\", \"\", \"b\"], \"expected\": [\"a\", \"\", \"b\"], \"passed\": true}, {\"check\": \"empty list source\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":34.146,"exit_code":0,"observations":[{"actual":["(a,b)","tail"],"check":"nested parentheses","expected":["(a,b)","tail"],"passed":true},{"actual":["[a,b]","tail"],"check":"square brackets","expected":["[a,b]","tail"],"passed":true},{"actual":["{a,[b,(c,d)]}","tail"],"check":"mixed nested bracket types","expected":["{a,[b,(c,d)]}","tail"],"passed":true},{"actual":null,"check":"mismatched closer rejected","expected":null,"passed":true},{"actual":null,"check":"unclosed nesting rejected","expected":null,"passed":true},{"actual":null,"check":"unexpected closing bracket rejected","expected":null,"passed":true},{"actual":["a","","b"],"check":"whitespace and empty fields","expected":["a","","b"],"passed":true},{"actual":[],"check":"empty list source","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"nested parentheses\", \"actual\": [\"(a,b)\", \"tail\"], \"expected\": [\"(a,b)\", \"tail\"], \"passed\": true}, {\"check\": \"square brackets\", \"actual\": [\"[a,b]\", \"tail\"], \"expected\": [\"[a,b]\", \"tail\"], \"passed\": true}, {\"check\": \"mixed nested bracket types\", \"actual\": [\"{a,[b,(c,d)]}\", \"tail\"], \"expected\": [\"{a,[b,(c,d)]}\", \"tail\"], \"passed\": true}, {\"check\": \"mismatched closer rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"unclosed nesting rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"unexpected closing bracket rejected\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"whitespace and empty fields\", \"actual\": [\"a\", \"\", \"b\"], \"expected\": [\"a\", \"\", \"b\"], \"passed\": true}, {\"check\": \"empty list source\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}