{"abstract":"Outer explode drops rows whose list is empty.","category":"Data systems","checks":7,"contract":"Explode [id,list-or-None] rows preserving input and element order. Outer semantics yield [id,None,None] for null or empty lists; populated lists yield [id,zero-based-position,value], including null elements.","evaluation_group":"s3-data-systems-outer-list-explode","failed_approach":"An empty list has no zero-position element.","family":"s3-data-systems-outer-list-explode-empty-parent","id":"FA-44556","implementations":{"attempt":{"sha256":"bc19fdaa48b4f526ceced81b1dc1dcb0f436e9b89721e86b78ffda3fcf8a2b10","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        out=[]\n        for ident,values in d:\n            if values is None:\n                out.append([ident,None,None]); continue\n            if not values:\n                out.append([ident,0,None]); continue\n            for pos,value in enumerate(values):\n                out.append([ident,pos,value])\n        return out\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('ordered parents', solve([[3, [1, 2]], [1, [4]]]), [[3, 0, 1], [3, 1, 2], [1, 0, 4]])\n    check('null parent', solve([[1, None]]), [[1, None, None]])\n    check('empty parent', solve([[1, []]]), [[1, None, None]])\n    check('null element', solve([[1, [None, 2]]]), [[1, 0, None], [1, 1, 2]])\n    check('duplicate element', solve([[1, [2, 2]]]), [[1, 0, 2], [1, 1, 2]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[5, [1]]]), [[5, 0, 1]])\nelif N == 2:\n    check('ordered parents', solve([[4, [2, 3]], [2, [5]]]), [[4, 0, 2], [4, 1, 3], [2, 0, 5]])\n    check('null parent', solve([[2, None]]), [[2, None, None]])\n    check('empty parent', solve([[2, []]]), [[2, None, None]])\n    check('null element', solve([[2, [None, 3]]]), [[2, 0, None], [2, 1, 3]])\n    check('duplicate element', solve([[2, [3, 3]]]), [[2, 0, 3], [2, 1, 3]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[6, [2]]]), [[6, 0, 2]])\nelif N == 3:\n    check('ordered parents', solve([[5, [3, 4]], [3, [6]]]), [[5, 0, 3], [5, 1, 4], [3, 0, 6]])\n    check('null parent', solve([[3, None]]), [[3, None, None]])\n    check('empty parent', solve([[3, []]]), [[3, None, None]])\n    check('null element', solve([[3, [None, 4]]]), [[3, 0, None], [3, 1, 4]])\n    check('duplicate element', solve([[3, [4, 4]]]), [[3, 0, 4], [3, 1, 4]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[7, [3]]]), [[7, 0, 3]])\nelif N == 4:\n    check('ordered parents', solve([[6, [4, 5]], [4, [7]]]), [[6, 0, 4], [6, 1, 5], [4, 0, 7]])\n    check('null parent', solve([[4, None]]), [[4, None, None]])\n    check('empty parent', solve([[4, []]]), [[4, None, None]])\n    check('null element', solve([[4, [None, 5]]]), [[4, 0, None], [4, 1, 5]])\n    check('duplicate element', solve([[4, [5, 5]]]), [[4, 0, 5], [4, 1, 5]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[8, [4]]]), [[8, 0, 4]])\nelif N == 5:\n    check('ordered parents', solve([[7, [5, 6]], [5, [8]]]), [[7, 0, 5], [7, 1, 6], [5, 0, 8]])\n    check('null parent', solve([[5, None]]), [[5, None, None]])\n    check('empty parent', solve([[5, []]]), [[5, None, None]])\n    check('null element', solve([[5, [None, 6]]]), [[5, 0, None], [5, 1, 6]])\n    check('duplicate element', solve([[5, [6, 6]]]), [[5, 0, 6], [5, 1, 6]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[9, [5]]]), [[9, 0, 5]])\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":"798d89bbae5d59dd8efd12d2f33aefe7afc93ffc8d8539fb62ba259b4a78e50b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        out=[]\n        for ident,values in d:\n            if values is None:\n                out.append([ident,None,None]); continue\n            if not values:\n                continue\n            for pos,value in enumerate(values):\n                out.append([ident,pos,value])\n        return out\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('ordered parents', solve([[3, [1, 2]], [1, [4]]]), [[3, 0, 1], [3, 1, 2], [1, 0, 4]])\n    check('null parent', solve([[1, None]]), [[1, None, None]])\n    check('empty parent', solve([[1, []]]), [[1, None, None]])\n    check('null element', solve([[1, [None, 2]]]), [[1, 0, None], [1, 1, 2]])\n    check('duplicate element', solve([[1, [2, 2]]]), [[1, 0, 2], [1, 1, 2]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[5, [1]]]), [[5, 0, 1]])\nelif N == 2:\n    check('ordered parents', solve([[4, [2, 3]], [2, [5]]]), [[4, 0, 2], [4, 1, 3], [2, 0, 5]])\n    check('null parent', solve([[2, None]]), [[2, None, None]])\n    check('empty parent', solve([[2, []]]), [[2, None, None]])\n    check('null element', solve([[2, [None, 3]]]), [[2, 0, None], [2, 1, 3]])\n    check('duplicate element', solve([[2, [3, 3]]]), [[2, 0, 3], [2, 1, 3]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[6, [2]]]), [[6, 0, 2]])\nelif N == 3:\n    check('ordered parents', solve([[5, [3, 4]], [3, [6]]]), [[5, 0, 3], [5, 1, 4], [3, 0, 6]])\n    check('null parent', solve([[3, None]]), [[3, None, None]])\n    check('empty parent', solve([[3, []]]), [[3, None, None]])\n    check('null element', solve([[3, [None, 4]]]), [[3, 0, None], [3, 1, 4]])\n    check('duplicate element', solve([[3, [4, 4]]]), [[3, 0, 4], [3, 1, 4]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[7, [3]]]), [[7, 0, 3]])\nelif N == 4:\n    check('ordered parents', solve([[6, [4, 5]], [4, [7]]]), [[6, 0, 4], [6, 1, 5], [4, 0, 7]])\n    check('null parent', solve([[4, None]]), [[4, None, None]])\n    check('empty parent', solve([[4, []]]), [[4, None, None]])\n    check('null element', solve([[4, [None, 5]]]), [[4, 0, None], [4, 1, 5]])\n    check('duplicate element', solve([[4, [5, 5]]]), [[4, 0, 5], [4, 1, 5]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[8, [4]]]), [[8, 0, 4]])\nelif N == 5:\n    check('ordered parents', solve([[7, [5, 6]], [5, [8]]]), [[7, 0, 5], [7, 1, 6], [5, 0, 8]])\n    check('null parent', solve([[5, None]]), [[5, None, None]])\n    check('empty parent', solve([[5, []]]), [[5, None, None]])\n    check('null element', solve([[5, [None, 6]]]), [[5, 0, None], [5, 1, 6]])\n    check('duplicate element', solve([[5, [6, 6]]]), [[5, 0, 6], [5, 1, 6]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[9, [5]]]), [[9, 0, 5]])\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":"3895f6e02c20400c7fc4008b2efd972dcf9b71f1ffea2e569c673bc863a4c022","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        out=[]\n        for ident,values in d:\n            if values is None:\n                out.append([ident,None,None]); continue\n            if not values:\n                out.append([ident,None,None]); continue\n            for pos,value in enumerate(values):\n                out.append([ident,pos,value])\n        return out\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('ordered parents', solve([[3, [1, 2]], [1, [4]]]), [[3, 0, 1], [3, 1, 2], [1, 0, 4]])\n    check('null parent', solve([[1, None]]), [[1, None, None]])\n    check('empty parent', solve([[1, []]]), [[1, None, None]])\n    check('null element', solve([[1, [None, 2]]]), [[1, 0, None], [1, 1, 2]])\n    check('duplicate element', solve([[1, [2, 2]]]), [[1, 0, 2], [1, 1, 2]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[5, [1]]]), [[5, 0, 1]])\nelif N == 2:\n    check('ordered parents', solve([[4, [2, 3]], [2, [5]]]), [[4, 0, 2], [4, 1, 3], [2, 0, 5]])\n    check('null parent', solve([[2, None]]), [[2, None, None]])\n    check('empty parent', solve([[2, []]]), [[2, None, None]])\n    check('null element', solve([[2, [None, 3]]]), [[2, 0, None], [2, 1, 3]])\n    check('duplicate element', solve([[2, [3, 3]]]), [[2, 0, 3], [2, 1, 3]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[6, [2]]]), [[6, 0, 2]])\nelif N == 3:\n    check('ordered parents', solve([[5, [3, 4]], [3, [6]]]), [[5, 0, 3], [5, 1, 4], [3, 0, 6]])\n    check('null parent', solve([[3, None]]), [[3, None, None]])\n    check('empty parent', solve([[3, []]]), [[3, None, None]])\n    check('null element', solve([[3, [None, 4]]]), [[3, 0, None], [3, 1, 4]])\n    check('duplicate element', solve([[3, [4, 4]]]), [[3, 0, 4], [3, 1, 4]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[7, [3]]]), [[7, 0, 3]])\nelif N == 4:\n    check('ordered parents', solve([[6, [4, 5]], [4, [7]]]), [[6, 0, 4], [6, 1, 5], [4, 0, 7]])\n    check('null parent', solve([[4, None]]), [[4, None, None]])\n    check('empty parent', solve([[4, []]]), [[4, None, None]])\n    check('null element', solve([[4, [None, 5]]]), [[4, 0, None], [4, 1, 5]])\n    check('duplicate element', solve([[4, [5, 5]]]), [[4, 0, 5], [4, 1, 5]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[8, [4]]]), [[8, 0, 4]])\nelif N == 5:\n    check('ordered parents', solve([[7, [5, 6]], [5, [8]]]), [[7, 0, 5], [7, 1, 6], [5, 0, 8]])\n    check('null parent', solve([[5, None]]), [[5, None, None]])\n    check('empty parent', solve([[5, []]]), [[5, None, None]])\n    check('null element', solve([[5, [None, 6]]]), [[5, 0, None], [5, 1, 6]])\n    check('duplicate element', solve([[5, [6, 6]]]), [[5, 0, 6], [5, 1, 6]])\n    check('empty input', solve([]), [])\n    check('singleton', solve([[9, [5]]]), [[9, 0, 5]])\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":"Offline stipulated semantics over valid small inputs; no performance, concurrency, or production-engine conformance claim. 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":"s3-data-systems-outer-list-explode-empty-parent","generated_at":"2026-09-29T14:44:13.389530+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A bounded deterministic data engine model makes representation and changelog faults reproducible.","repair":"Preserve the stated physical representation and operation order: Explode [id,list-or-None] rows preserving input and element order. Outer semantics yield [id,None,None] for null or empty lists; populated lists yield [id,zero-based-position,value], including null elements.","root_cause":"outer-list-explode: Outer explode drops rows whose list is empty.","sha256":"20bc89d84cf7c37f5cc43946393c5307f9639b45baacdc02b40e02663331038d","title":"Outer explode drops rows whose list is empty · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.699,"exit_code":1,"observations":[{"actual":[[3,0,1],[3,1,2],[1,0,4]],"check":"ordered parents","expected":[[3,0,1],[3,1,2],[1,0,4]],"passed":true},{"actual":[[1,null,null]],"check":"null parent","expected":[[1,null,null]],"passed":true},{"actual":[[1,0,null]],"check":"empty parent","expected":[[1,null,null]],"passed":false},{"actual":[[1,0,null],[1,1,2]],"check":"null element","expected":[[1,0,null],[1,1,2]],"passed":true},{"actual":[[1,0,2],[1,1,2]],"check":"duplicate element","expected":[[1,0,2],[1,1,2]],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[[5,0,1]],"check":"singleton","expected":[[5,0,1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ordered parents\", \"actual\": [[3, 0, 1], [3, 1, 2], [1, 0, 4]], \"expected\": [[3, 0, 1], [3, 1, 2], [1, 0, 4]], \"passed\": true}, {\"check\": \"null parent\", \"actual\": [[1, null, null]], \"expected\": [[1, null, null]], \"passed\": true}, {\"check\": \"empty parent\", \"actual\": [[1, 0, null]], \"expected\": [[1, null, null]], \"passed\": false}, {\"check\": \"null element\", \"actual\": [[1, 0, null], [1, 1, 2]], \"expected\": [[1, 0, null], [1, 1, 2]], \"passed\": true}, {\"check\": \"duplicate element\", \"actual\": [[1, 0, 2], [1, 1, 2]], \"expected\": [[1, 0, 2], [1, 1, 2]], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"singleton\", \"actual\": [[5, 0, 1]], \"expected\": [[5, 0, 1]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.593,"exit_code":1,"observations":[{"actual":[[3,0,1],[3,1,2],[1,0,4]],"check":"ordered parents","expected":[[3,0,1],[3,1,2],[1,0,4]],"passed":true},{"actual":[[1,null,null]],"check":"null parent","expected":[[1,null,null]],"passed":true},{"actual":[],"check":"empty parent","expected":[[1,null,null]],"passed":false},{"actual":[[1,0,null],[1,1,2]],"check":"null element","expected":[[1,0,null],[1,1,2]],"passed":true},{"actual":[[1,0,2],[1,1,2]],"check":"duplicate element","expected":[[1,0,2],[1,1,2]],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[[5,0,1]],"check":"singleton","expected":[[5,0,1]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ordered parents\", \"actual\": [[3, 0, 1], [3, 1, 2], [1, 0, 4]], \"expected\": [[3, 0, 1], [3, 1, 2], [1, 0, 4]], \"passed\": true}, {\"check\": \"null parent\", \"actual\": [[1, null, null]], \"expected\": [[1, null, null]], \"passed\": true}, {\"check\": \"empty parent\", \"actual\": [], \"expected\": [[1, null, null]], \"passed\": false}, {\"check\": \"null element\", \"actual\": [[1, 0, null], [1, 1, 2]], \"expected\": [[1, 0, null], [1, 1, 2]], \"passed\": true}, {\"check\": \"duplicate element\", \"actual\": [[1, 0, 2], [1, 1, 2]], \"expected\": [[1, 0, 2], [1, 1, 2]], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"singleton\", \"actual\": [[5, 0, 1]], \"expected\": [[5, 0, 1]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.42,"exit_code":0,"observations":[{"actual":[[3,0,1],[3,1,2],[1,0,4]],"check":"ordered parents","expected":[[3,0,1],[3,1,2],[1,0,4]],"passed":true},{"actual":[[1,null,null]],"check":"null parent","expected":[[1,null,null]],"passed":true},{"actual":[[1,null,null]],"check":"empty parent","expected":[[1,null,null]],"passed":true},{"actual":[[1,0,null],[1,1,2]],"check":"null element","expected":[[1,0,null],[1,1,2]],"passed":true},{"actual":[[1,0,2],[1,1,2]],"check":"duplicate element","expected":[[1,0,2],[1,1,2]],"passed":true},{"actual":[],"check":"empty input","expected":[],"passed":true},{"actual":[[5,0,1]],"check":"singleton","expected":[[5,0,1]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ordered parents\", \"actual\": [[3, 0, 1], [3, 1, 2], [1, 0, 4]], \"expected\": [[3, 0, 1], [3, 1, 2], [1, 0, 4]], \"passed\": true}, {\"check\": \"null parent\", \"actual\": [[1, null, null]], \"expected\": [[1, null, null]], \"passed\": true}, {\"check\": \"empty parent\", \"actual\": [[1, null, null]], \"expected\": [[1, null, null]], \"passed\": true}, {\"check\": \"null element\", \"actual\": [[1, 0, null], [1, 1, 2]], \"expected\": [[1, 0, null], [1, 1, 2]], \"passed\": true}, {\"check\": \"duplicate element\", \"actual\": [[1, 0, 2], [1, 1, 2]], \"expected\": [[1, 0, 2], [1, 1, 2]], \"passed\": true}, {\"check\": \"empty input\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"singleton\", \"actual\": [[5, 0, 1]], \"expected\": [[5, 0, 1]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}