{"abstract":"Update filtering uses the before predicate for its after image.","category":"Data systems","checks":8,"contract":"Convert a sequence of [id,before,after] updates into signed filtered rows, with None denoting absent row. The predicate is value>=cutoff. Emit qualifying before-images negatively before qualifying after-images positively; suppress unchanged qualifying values.","evaluation_group":"s3-data-systems-delta-filter-before-after","failed_approach":"Requiring a before-image loses inserts.","family":"s3-data-systems-delta-filter-before-after-after-filter","id":"FA-44676","implementations":{"attempt":{"sha256":"54bb1ed28af69951158b71d91747e800ab73703a0bd2a6849258836f439fba0f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        cutoff,updates=d\n        out=[]\n        for ident,before,after in updates:\n            old=before is not None and before>=cutoff\n            new=before is not None and after is not None and after>=cutoff\n            if old and new and before==after: continue\n            if old: out.append([ident,before,-1])\n            if new: out.append([ident,after,1])\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('leaves filter', solve([1, [[7, 3, 0]]]), [[7, 3, -1]])\n    check('enters filter', solve([1, [[7, 0, 3]]]), [[7, 3, 1]])\n    check('changes within filter', solve([1, [[7, 2, 3]]]), [[7, 2, -1], [7, 3, 1]])\n    check('unchanged', solve([1, [[7, 1, 1]]]), [])\n    check('insert', solve([1, [[7, None, 2]]]), [[7, 2, 1]])\n    check('delete', solve([1, [[7, 2, None]]]), [[7, 2, -1]])\n    check('outside both', solve([1, [[7, -1, 0]]]), [])\n    check('no updates', solve([1, []]), [])\nelif N == 2:\n    check('leaves filter', solve([2, [[7, 4, 1]]]), [[7, 4, -1]])\n    check('enters filter', solve([2, [[7, 1, 4]]]), [[7, 4, 1]])\n    check('changes within filter', solve([2, [[7, 3, 4]]]), [[7, 3, -1], [7, 4, 1]])\n    check('unchanged', solve([2, [[7, 2, 2]]]), [])\n    check('insert', solve([2, [[7, None, 3]]]), [[7, 3, 1]])\n    check('delete', solve([2, [[7, 3, None]]]), [[7, 3, -1]])\n    check('outside both', solve([2, [[7, 0, 1]]]), [])\n    check('no updates', solve([2, []]), [])\nelif N == 3:\n    check('leaves filter', solve([3, [[7, 5, 2]]]), [[7, 5, -1]])\n    check('enters filter', solve([3, [[7, 2, 5]]]), [[7, 5, 1]])\n    check('changes within filter', solve([3, [[7, 4, 5]]]), [[7, 4, -1], [7, 5, 1]])\n    check('unchanged', solve([3, [[7, 3, 3]]]), [])\n    check('insert', solve([3, [[7, None, 4]]]), [[7, 4, 1]])\n    check('delete', solve([3, [[7, 4, None]]]), [[7, 4, -1]])\n    check('outside both', solve([3, [[7, 1, 2]]]), [])\n    check('no updates', solve([3, []]), [])\nelif N == 4:\n    check('leaves filter', solve([4, [[7, 6, 3]]]), [[7, 6, -1]])\n    check('enters filter', solve([4, [[7, 3, 6]]]), [[7, 6, 1]])\n    check('changes within filter', solve([4, [[7, 5, 6]]]), [[7, 5, -1], [7, 6, 1]])\n    check('unchanged', solve([4, [[7, 4, 4]]]), [])\n    check('insert', solve([4, [[7, None, 5]]]), [[7, 5, 1]])\n    check('delete', solve([4, [[7, 5, None]]]), [[7, 5, -1]])\n    check('outside both', solve([4, [[7, 2, 3]]]), [])\n    check('no updates', solve([4, []]), [])\nelif N == 5:\n    check('leaves filter', solve([5, [[7, 7, 4]]]), [[7, 7, -1]])\n    check('enters filter', solve([5, [[7, 4, 7]]]), [[7, 7, 1]])\n    check('changes within filter', solve([5, [[7, 6, 7]]]), [[7, 6, -1], [7, 7, 1]])\n    check('unchanged', solve([5, [[7, 5, 5]]]), [])\n    check('insert', solve([5, [[7, None, 6]]]), [[7, 6, 1]])\n    check('delete', solve([5, [[7, 6, None]]]), [[7, 6, -1]])\n    check('outside both', solve([5, [[7, 3, 4]]]), [])\n    check('no updates', solve([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":"46d7ef8540bdde0b263a08e2586a9a965fe4b818b430c1271094db285bbc851b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        cutoff,updates=d\n        out=[]\n        for ident,before,after in updates:\n            old=before is not None and before>=cutoff\n            new=before is not None and before>=cutoff and after is not None\n            if old and new and before==after: continue\n            if old: out.append([ident,before,-1])\n            if new: out.append([ident,after,1])\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('leaves filter', solve([1, [[7, 3, 0]]]), [[7, 3, -1]])\n    check('enters filter', solve([1, [[7, 0, 3]]]), [[7, 3, 1]])\n    check('changes within filter', solve([1, [[7, 2, 3]]]), [[7, 2, -1], [7, 3, 1]])\n    check('unchanged', solve([1, [[7, 1, 1]]]), [])\n    check('insert', solve([1, [[7, None, 2]]]), [[7, 2, 1]])\n    check('delete', solve([1, [[7, 2, None]]]), [[7, 2, -1]])\n    check('outside both', solve([1, [[7, -1, 0]]]), [])\n    check('no updates', solve([1, []]), [])\nelif N == 2:\n    check('leaves filter', solve([2, [[7, 4, 1]]]), [[7, 4, -1]])\n    check('enters filter', solve([2, [[7, 1, 4]]]), [[7, 4, 1]])\n    check('changes within filter', solve([2, [[7, 3, 4]]]), [[7, 3, -1], [7, 4, 1]])\n    check('unchanged', solve([2, [[7, 2, 2]]]), [])\n    check('insert', solve([2, [[7, None, 3]]]), [[7, 3, 1]])\n    check('delete', solve([2, [[7, 3, None]]]), [[7, 3, -1]])\n    check('outside both', solve([2, [[7, 0, 1]]]), [])\n    check('no updates', solve([2, []]), [])\nelif N == 3:\n    check('leaves filter', solve([3, [[7, 5, 2]]]), [[7, 5, -1]])\n    check('enters filter', solve([3, [[7, 2, 5]]]), [[7, 5, 1]])\n    check('changes within filter', solve([3, [[7, 4, 5]]]), [[7, 4, -1], [7, 5, 1]])\n    check('unchanged', solve([3, [[7, 3, 3]]]), [])\n    check('insert', solve([3, [[7, None, 4]]]), [[7, 4, 1]])\n    check('delete', solve([3, [[7, 4, None]]]), [[7, 4, -1]])\n    check('outside both', solve([3, [[7, 1, 2]]]), [])\n    check('no updates', solve([3, []]), [])\nelif N == 4:\n    check('leaves filter', solve([4, [[7, 6, 3]]]), [[7, 6, -1]])\n    check('enters filter', solve([4, [[7, 3, 6]]]), [[7, 6, 1]])\n    check('changes within filter', solve([4, [[7, 5, 6]]]), [[7, 5, -1], [7, 6, 1]])\n    check('unchanged', solve([4, [[7, 4, 4]]]), [])\n    check('insert', solve([4, [[7, None, 5]]]), [[7, 5, 1]])\n    check('delete', solve([4, [[7, 5, None]]]), [[7, 5, -1]])\n    check('outside both', solve([4, [[7, 2, 3]]]), [])\n    check('no updates', solve([4, []]), [])\nelif N == 5:\n    check('leaves filter', solve([5, [[7, 7, 4]]]), [[7, 7, -1]])\n    check('enters filter', solve([5, [[7, 4, 7]]]), [[7, 7, 1]])\n    check('changes within filter', solve([5, [[7, 6, 7]]]), [[7, 6, -1], [7, 7, 1]])\n    check('unchanged', solve([5, [[7, 5, 5]]]), [])\n    check('insert', solve([5, [[7, None, 6]]]), [[7, 6, 1]])\n    check('delete', solve([5, [[7, 6, None]]]), [[7, 6, -1]])\n    check('outside both', solve([5, [[7, 3, 4]]]), [])\n    check('no updates', solve([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":"71dda46965c5caa77387ac9c5ab7bef3b013f9119499afa2e1cf8deab0fd8179","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        cutoff,updates=d\n        out=[]\n        for ident,before,after in updates:\n            old=before is not None and before>=cutoff\n            new=after is not None and after>=cutoff\n            if old and new and before==after: continue\n            if old: out.append([ident,before,-1])\n            if new: out.append([ident,after,1])\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('leaves filter', solve([1, [[7, 3, 0]]]), [[7, 3, -1]])\n    check('enters filter', solve([1, [[7, 0, 3]]]), [[7, 3, 1]])\n    check('changes within filter', solve([1, [[7, 2, 3]]]), [[7, 2, -1], [7, 3, 1]])\n    check('unchanged', solve([1, [[7, 1, 1]]]), [])\n    check('insert', solve([1, [[7, None, 2]]]), [[7, 2, 1]])\n    check('delete', solve([1, [[7, 2, None]]]), [[7, 2, -1]])\n    check('outside both', solve([1, [[7, -1, 0]]]), [])\n    check('no updates', solve([1, []]), [])\nelif N == 2:\n    check('leaves filter', solve([2, [[7, 4, 1]]]), [[7, 4, -1]])\n    check('enters filter', solve([2, [[7, 1, 4]]]), [[7, 4, 1]])\n    check('changes within filter', solve([2, [[7, 3, 4]]]), [[7, 3, -1], [7, 4, 1]])\n    check('unchanged', solve([2, [[7, 2, 2]]]), [])\n    check('insert', solve([2, [[7, None, 3]]]), [[7, 3, 1]])\n    check('delete', solve([2, [[7, 3, None]]]), [[7, 3, -1]])\n    check('outside both', solve([2, [[7, 0, 1]]]), [])\n    check('no updates', solve([2, []]), [])\nelif N == 3:\n    check('leaves filter', solve([3, [[7, 5, 2]]]), [[7, 5, -1]])\n    check('enters filter', solve([3, [[7, 2, 5]]]), [[7, 5, 1]])\n    check('changes within filter', solve([3, [[7, 4, 5]]]), [[7, 4, -1], [7, 5, 1]])\n    check('unchanged', solve([3, [[7, 3, 3]]]), [])\n    check('insert', solve([3, [[7, None, 4]]]), [[7, 4, 1]])\n    check('delete', solve([3, [[7, 4, None]]]), [[7, 4, -1]])\n    check('outside both', solve([3, [[7, 1, 2]]]), [])\n    check('no updates', solve([3, []]), [])\nelif N == 4:\n    check('leaves filter', solve([4, [[7, 6, 3]]]), [[7, 6, -1]])\n    check('enters filter', solve([4, [[7, 3, 6]]]), [[7, 6, 1]])\n    check('changes within filter', solve([4, [[7, 5, 6]]]), [[7, 5, -1], [7, 6, 1]])\n    check('unchanged', solve([4, [[7, 4, 4]]]), [])\n    check('insert', solve([4, [[7, None, 5]]]), [[7, 5, 1]])\n    check('delete', solve([4, [[7, 5, None]]]), [[7, 5, -1]])\n    check('outside both', solve([4, [[7, 2, 3]]]), [])\n    check('no updates', solve([4, []]), [])\nelif N == 5:\n    check('leaves filter', solve([5, [[7, 7, 4]]]), [[7, 7, -1]])\n    check('enters filter', solve([5, [[7, 4, 7]]]), [[7, 7, 1]])\n    check('changes within filter', solve([5, [[7, 6, 7]]]), [[7, 6, -1], [7, 7, 1]])\n    check('unchanged', solve([5, [[7, 5, 5]]]), [])\n    check('insert', solve([5, [[7, None, 6]]]), [[7, 6, 1]])\n    check('delete', solve([5, [[7, 6, None]]]), [[7, 6, -1]])\n    check('outside both', solve([5, [[7, 3, 4]]]), [])\n    check('no updates', solve([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-delta-filter-before-after-after-filter","generated_at":"2026-09-29T14:44:14.513198+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: Convert a sequence of [id,before,after] updates into signed filtered rows, with None denoting absent row. The predicate is value>=cutoff. Emit qualifying before-images negatively before qualifying after-images positively; suppress unchanged qualifying values.","root_cause":"delta-filter-before-after: Update filtering uses the before predicate for its after image.","sha256":"aab808924de96b5b05c9401ded885431f87e2145c103c3614fe55b1c3e717d5d","title":"Update filtering uses the before predicate for its after image · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.226,"exit_code":1,"observations":[{"actual":[[7,3,-1]],"check":"leaves filter","expected":[[7,3,-1]],"passed":true},{"actual":[[7,3,1]],"check":"enters filter","expected":[[7,3,1]],"passed":true},{"actual":[[7,2,-1],[7,3,1]],"check":"changes within filter","expected":[[7,2,-1],[7,3,1]],"passed":true},{"actual":[],"check":"unchanged","expected":[],"passed":true},{"actual":[],"check":"insert","expected":[[7,2,1]],"passed":false},{"actual":[[7,2,-1]],"check":"delete","expected":[[7,2,-1]],"passed":true},{"actual":[],"check":"outside both","expected":[],"passed":true},{"actual":[],"check":"no updates","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"leaves filter\", \"actual\": [[7, 3, -1]], \"expected\": [[7, 3, -1]], \"passed\": true}, {\"check\": \"enters filter\", \"actual\": [[7, 3, 1]], \"expected\": [[7, 3, 1]], \"passed\": true}, {\"check\": \"changes within filter\", \"actual\": [[7, 2, -1], [7, 3, 1]], \"expected\": [[7, 2, -1], [7, 3, 1]], \"passed\": true}, {\"check\": \"unchanged\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"insert\", \"actual\": [], \"expected\": [[7, 2, 1]], \"passed\": false}, {\"check\": \"delete\", \"actual\": [[7, 2, -1]], \"expected\": [[7, 2, -1]], \"passed\": true}, {\"check\": \"outside both\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"no updates\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.841,"exit_code":1,"observations":[{"actual":[[7,3,-1],[7,0,1]],"check":"leaves filter","expected":[[7,3,-1]],"passed":false},{"actual":[],"check":"enters filter","expected":[[7,3,1]],"passed":false},{"actual":[[7,2,-1],[7,3,1]],"check":"changes within filter","expected":[[7,2,-1],[7,3,1]],"passed":true},{"actual":[],"check":"unchanged","expected":[],"passed":true},{"actual":[],"check":"insert","expected":[[7,2,1]],"passed":false},{"actual":[[7,2,-1]],"check":"delete","expected":[[7,2,-1]],"passed":true},{"actual":[],"check":"outside both","expected":[],"passed":true},{"actual":[],"check":"no updates","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"leaves filter\", \"actual\": [[7, 3, -1], [7, 0, 1]], \"expected\": [[7, 3, -1]], \"passed\": false}, {\"check\": \"enters filter\", \"actual\": [], \"expected\": [[7, 3, 1]], \"passed\": false}, {\"check\": \"changes within filter\", \"actual\": [[7, 2, -1], [7, 3, 1]], \"expected\": [[7, 2, -1], [7, 3, 1]], \"passed\": true}, {\"check\": \"unchanged\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"insert\", \"actual\": [], \"expected\": [[7, 2, 1]], \"passed\": false}, {\"check\": \"delete\", \"actual\": [[7, 2, -1]], \"expected\": [[7, 2, -1]], \"passed\": true}, {\"check\": \"outside both\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"no updates\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.698,"exit_code":0,"observations":[{"actual":[[7,3,-1]],"check":"leaves filter","expected":[[7,3,-1]],"passed":true},{"actual":[[7,3,1]],"check":"enters filter","expected":[[7,3,1]],"passed":true},{"actual":[[7,2,-1],[7,3,1]],"check":"changes within filter","expected":[[7,2,-1],[7,3,1]],"passed":true},{"actual":[],"check":"unchanged","expected":[],"passed":true},{"actual":[[7,2,1]],"check":"insert","expected":[[7,2,1]],"passed":true},{"actual":[[7,2,-1]],"check":"delete","expected":[[7,2,-1]],"passed":true},{"actual":[],"check":"outside both","expected":[],"passed":true},{"actual":[],"check":"no updates","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"leaves filter\", \"actual\": [[7, 3, -1]], \"expected\": [[7, 3, -1]], \"passed\": true}, {\"check\": \"enters filter\", \"actual\": [[7, 3, 1]], \"expected\": [[7, 3, 1]], \"passed\": true}, {\"check\": \"changes within filter\", \"actual\": [[7, 2, -1], [7, 3, 1]], \"expected\": [[7, 2, -1], [7, 3, 1]], \"passed\": true}, {\"check\": \"unchanged\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"insert\", \"actual\": [[7, 2, 1]], \"expected\": [[7, 2, 1]], \"passed\": true}, {\"check\": \"delete\", \"actual\": [[7, 2, -1]], \"expected\": [[7, 2, -1]], \"passed\": true}, {\"check\": \"outside both\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"no updates\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}