{"abstract":"Schema union applies defaults to explicit null cells.","category":"Data systems","checks":7,"contract":"Union batches using stable numeric field identities. The output schema is an ordered list [id,current_name,default]; batch schemas map old names to IDs. Project each batch row into output order, use defaults only for absent columns, and preserve explicit nulls and all rows.","evaluation_group":"s3-data-systems-union-by-field-id","failed_approach":"Checking only nullness still treats explicit null as an absent field.","family":"s3-data-systems-union-by-field-id-default-null","id":"FA-44746","implementations":{"attempt":{"sha256":"f5a000cbd3270b5965b250eb29363f8abf84b46f1b8218f468b46ff21f465d73","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        output,batches=d\n        result=[]\n        for schema,rows in batches:\n            columns={field:index for index,(field,name) in enumerate(schema)}\n            for row in rows:\n                record=[]\n                for field,name,default in output:\n                    value=default if field not in columns or row[columns[field]] is None else row[columns[field]]\n                    record.append(value)\n                result.append(record)\n        return result\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('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[1, 2]]]]]), [[2, 1]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[1, 2]]], [[[2, 'b'], [1, 'a']], [[3, 4]]]]]), [[1, 2], [4, 3]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 1]], [[[[1, 'a']], [[2]]]]]), [[2, 1]])\n    check('explicit null', solve([[[1, 'a', 1]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[1], [1]]]]]), [[1], [1]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 1]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 2:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[2, 3]]]]]), [[3, 2]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[2, 3]]], [[[2, 'b'], [1, 'a']], [[4, 5]]]]]), [[2, 3], [5, 4]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 2]], [[[[1, 'a']], [[3]]]]]), [[3, 2]])\n    check('explicit null', solve([[[1, 'a', 2]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[2], [2]]]]]), [[2], [2]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 2]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 3:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[3, 4]]]]]), [[4, 3]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[3, 4]]], [[[2, 'b'], [1, 'a']], [[5, 6]]]]]), [[3, 4], [6, 5]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 3]], [[[[1, 'a']], [[4]]]]]), [[4, 3]])\n    check('explicit null', solve([[[1, 'a', 3]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[3], [3]]]]]), [[3], [3]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 3]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 4:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[4, 5]]]]]), [[5, 4]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[4, 5]]], [[[2, 'b'], [1, 'a']], [[6, 7]]]]]), [[4, 5], [7, 6]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 4]], [[[[1, 'a']], [[5]]]]]), [[5, 4]])\n    check('explicit null', solve([[[1, 'a', 4]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[4], [4]]]]]), [[4], [4]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 4]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 5:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[5, 6]]]]]), [[6, 5]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[5, 6]]], [[[2, 'b'], [1, 'a']], [[7, 8]]]]]), [[5, 6], [8, 7]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 5]], [[[[1, 'a']], [[6]]]]]), [[6, 5]])\n    check('explicit null', solve([[[1, 'a', 5]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[5], [5]]]]]), [[5], [5]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 5]], [[[[1, 'a']], [[0]]]]]), [[0]])\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":"d68e5884c86f633631fee2aa4fe77d81ae524d0a976b02ecabfe403441b074d8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        output,batches=d\n        result=[]\n        for schema,rows in batches:\n            columns={field:index for index,(field,name) in enumerate(schema)}\n            for row in rows:\n                record=[]\n                for field,name,default in output:\n                    value=(row[columns[field]] if field in columns else None) or default\n                    record.append(value)\n                result.append(record)\n        return result\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('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[1, 2]]]]]), [[2, 1]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[1, 2]]], [[[2, 'b'], [1, 'a']], [[3, 4]]]]]), [[1, 2], [4, 3]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 1]], [[[[1, 'a']], [[2]]]]]), [[2, 1]])\n    check('explicit null', solve([[[1, 'a', 1]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[1], [1]]]]]), [[1], [1]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 1]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 2:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[2, 3]]]]]), [[3, 2]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[2, 3]]], [[[2, 'b'], [1, 'a']], [[4, 5]]]]]), [[2, 3], [5, 4]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 2]], [[[[1, 'a']], [[3]]]]]), [[3, 2]])\n    check('explicit null', solve([[[1, 'a', 2]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[2], [2]]]]]), [[2], [2]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 2]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 3:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[3, 4]]]]]), [[4, 3]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[3, 4]]], [[[2, 'b'], [1, 'a']], [[5, 6]]]]]), [[3, 4], [6, 5]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 3]], [[[[1, 'a']], [[4]]]]]), [[4, 3]])\n    check('explicit null', solve([[[1, 'a', 3]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[3], [3]]]]]), [[3], [3]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 3]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 4:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[4, 5]]]]]), [[5, 4]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[4, 5]]], [[[2, 'b'], [1, 'a']], [[6, 7]]]]]), [[4, 5], [7, 6]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 4]], [[[[1, 'a']], [[5]]]]]), [[5, 4]])\n    check('explicit null', solve([[[1, 'a', 4]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[4], [4]]]]]), [[4], [4]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 4]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 5:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[5, 6]]]]]), [[6, 5]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[5, 6]]], [[[2, 'b'], [1, 'a']], [[7, 8]]]]]), [[5, 6], [8, 7]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 5]], [[[[1, 'a']], [[6]]]]]), [[6, 5]])\n    check('explicit null', solve([[[1, 'a', 5]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[5], [5]]]]]), [[5], [5]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 5]], [[[[1, 'a']], [[0]]]]]), [[0]])\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":"1d8e9d04b1bd1fea76fe15a46c6c0751a4827174f5723c72cc97117615813379","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        output,batches=d\n        result=[]\n        for schema,rows in batches:\n            columns={field:index for index,(field,name) in enumerate(schema)}\n            for row in rows:\n                record=[]\n                for field,name,default in output:\n                    value=row[columns[field]] if field in columns else default\n                    record.append(value)\n                result.append(record)\n        return result\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('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[1, 2]]]]]), [[2, 1]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[1, 2]]], [[[2, 'b'], [1, 'a']], [[3, 4]]]]]), [[1, 2], [4, 3]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 1]], [[[[1, 'a']], [[2]]]]]), [[2, 1]])\n    check('explicit null', solve([[[1, 'a', 1]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[1], [1]]]]]), [[1], [1]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 1]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 2:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[2, 3]]]]]), [[3, 2]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[2, 3]]], [[[2, 'b'], [1, 'a']], [[4, 5]]]]]), [[2, 3], [5, 4]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 2]], [[[[1, 'a']], [[3]]]]]), [[3, 2]])\n    check('explicit null', solve([[[1, 'a', 2]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[2], [2]]]]]), [[2], [2]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 2]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 3:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[3, 4]]]]]), [[4, 3]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[3, 4]]], [[[2, 'b'], [1, 'a']], [[5, 6]]]]]), [[3, 4], [6, 5]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 3]], [[[[1, 'a']], [[4]]]]]), [[4, 3]])\n    check('explicit null', solve([[[1, 'a', 3]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[3], [3]]]]]), [[3], [3]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 3]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 4:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[4, 5]]]]]), [[5, 4]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[4, 5]]], [[[2, 'b'], [1, 'a']], [[6, 7]]]]]), [[4, 5], [7, 6]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 4]], [[[[1, 'a']], [[5]]]]]), [[5, 4]])\n    check('explicit null', solve([[[1, 'a', 4]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[4], [4]]]]]), [[4], [4]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 4]], [[[[1, 'a']], [[0]]]]]), [[0]])\nelif N == 5:\n    check('renamed field', solve([[[2, 'new', 99], [1, 'a', 88]], [[[[1, 'a'], [2, 'old']], [[5, 6]]]]]), [[6, 5]])\n    check('reordered batch', solve([[[1, 'a', 0], [2, 'b', 0]], [[[[1, 'a'], [2, 'b']], [[5, 6]]], [[[2, 'b'], [1, 'a']], [[7, 8]]]]]), [[5, 6], [8, 7]])\n    check('absent default', solve([[[1, 'a', 7], [2, 'b', 5]], [[[[1, 'a']], [[6]]]]]), [[6, 5]])\n    check('explicit null', solve([[[1, 'a', 5]], [[[[1, 'a']], [[None]]]]]), [[None]])\n    check('duplicate rows', solve([[[1, 'a', 0]], [[[[1, 'a']], [[5], [5]]]]]), [[5], [5]])\n    check('no batches', solve([[[1, 'a', 0]], []]), [])\n    check('zero preserved', solve([[[1, 'a', 5]], [[[[1, 'a']], [[0]]]]]), [[0]])\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-union-by-field-id-default-null","generated_at":"2026-09-29T14:44:15.218890+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: Union batches using stable numeric field identities. The output schema is an ordered list [id,current_name,default]; batch schemas map old names to IDs. Project each batch row into output order, use defaults only for absent columns, and preserve explicit nulls and all rows.","root_cause":"union-by-field-id: Schema union applies defaults to explicit null cells.","sha256":"b9e5c577fe3ab59e823df91ab6a4359ca7381a5e4f10d9ee5d928790e84dc02c","title":"Schema union applies defaults to explicit null cells · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.182,"exit_code":1,"observations":[{"actual":[[2,1]],"check":"renamed field","expected":[[2,1]],"passed":true},{"actual":[[1,2],[4,3]],"check":"reordered batch","expected":[[1,2],[4,3]],"passed":true},{"actual":[[2,1]],"check":"absent default","expected":[[2,1]],"passed":true},{"actual":[[1]],"check":"explicit null","expected":[[null]],"passed":false},{"actual":[[1],[1]],"check":"duplicate rows","expected":[[1],[1]],"passed":true},{"actual":[],"check":"no batches","expected":[],"passed":true},{"actual":[[0]],"check":"zero preserved","expected":[[0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"renamed field\", \"actual\": [[2, 1]], \"expected\": [[2, 1]], \"passed\": true}, {\"check\": \"reordered batch\", \"actual\": [[1, 2], [4, 3]], \"expected\": [[1, 2], [4, 3]], \"passed\": true}, {\"check\": \"absent default\", \"actual\": [[2, 1]], \"expected\": [[2, 1]], \"passed\": true}, {\"check\": \"explicit null\", \"actual\": [[1]], \"expected\": [[null]], \"passed\": false}, {\"check\": \"duplicate rows\", \"actual\": [[1], [1]], \"expected\": [[1], [1]], \"passed\": true}, {\"check\": \"no batches\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"zero preserved\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.301,"exit_code":1,"observations":[{"actual":[[2,1]],"check":"renamed field","expected":[[2,1]],"passed":true},{"actual":[[1,2],[4,3]],"check":"reordered batch","expected":[[1,2],[4,3]],"passed":true},{"actual":[[2,1]],"check":"absent default","expected":[[2,1]],"passed":true},{"actual":[[1]],"check":"explicit null","expected":[[null]],"passed":false},{"actual":[[1],[1]],"check":"duplicate rows","expected":[[1],[1]],"passed":true},{"actual":[],"check":"no batches","expected":[],"passed":true},{"actual":[[1]],"check":"zero preserved","expected":[[0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"renamed field\", \"actual\": [[2, 1]], \"expected\": [[2, 1]], \"passed\": true}, {\"check\": \"reordered batch\", \"actual\": [[1, 2], [4, 3]], \"expected\": [[1, 2], [4, 3]], \"passed\": true}, {\"check\": \"absent default\", \"actual\": [[2, 1]], \"expected\": [[2, 1]], \"passed\": true}, {\"check\": \"explicit null\", \"actual\": [[1]], \"expected\": [[null]], \"passed\": false}, {\"check\": \"duplicate rows\", \"actual\": [[1], [1]], \"expected\": [[1], [1]], \"passed\": true}, {\"check\": \"no batches\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"zero preserved\", \"actual\": [[1]], \"expected\": [[0]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.189,"exit_code":0,"observations":[{"actual":[[2,1]],"check":"renamed field","expected":[[2,1]],"passed":true},{"actual":[[1,2],[4,3]],"check":"reordered batch","expected":[[1,2],[4,3]],"passed":true},{"actual":[[2,1]],"check":"absent default","expected":[[2,1]],"passed":true},{"actual":[[null]],"check":"explicit null","expected":[[null]],"passed":true},{"actual":[[1],[1]],"check":"duplicate rows","expected":[[1],[1]],"passed":true},{"actual":[],"check":"no batches","expected":[],"passed":true},{"actual":[[0]],"check":"zero preserved","expected":[[0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"renamed field\", \"actual\": [[2, 1]], \"expected\": [[2, 1]], \"passed\": true}, {\"check\": \"reordered batch\", \"actual\": [[1, 2], [4, 3]], \"expected\": [[1, 2], [4, 3]], \"passed\": true}, {\"check\": \"absent default\", \"actual\": [[2, 1]], \"expected\": [[2, 1]], \"passed\": true}, {\"check\": \"explicit null\", \"actual\": [[null]], \"expected\": [[null]], \"passed\": true}, {\"check\": \"duplicate rows\", \"actual\": [[1], [1]], \"expected\": [[1], [1]], \"passed\": true}, {\"check\": \"no batches\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"zero preserved\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}