{"abstract":"Discarding crossings left of the target loses the winding state entering the raster.","category":"Raster clipping","checks":12,"contract":"Signed crossing events occur before their integer sample coordinate. For each finite target sample, sum all event deltas at or to its left, including events outside the left target edge. Fill rules are nonzero, odd, positive, negative, or magnitude-at-least-two. Inverse filling complements the result inside the target. Zero deltas are inert and coincident events add.","evaluation_group":"s3-raster-clipping-winding-event-raster","failed_approach":"Preserving only the nearest exterior coordinate ignores more distant enclosing edges.","family":"s3-raster-clipping-winding-event-raster-left-history","id":"FA-50936","implementations":{"attempt":{"sha256":"045d406f2890e032f035e73abf71893c641b6a5fff984afe4ebc6d15882aa596","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    out=[]\n    for events,rule,inverse in commands:\n        deltas={}\n        for x,delta in events: deltas[x]=deltas.get(x,0)+delta\n        winding=sum(delta for x,delta in deltas.items() if x==-1)\n        covered=[]\n        for x in range(size):\n            winding+=deltas.get(x,0)\n            if rule=='nonzero': inside=winding!=0\n            elif rule=='odd': inside=abs(winding)%2==1\n            elif rule=='positive': inside=winding>0\n            elif rule=='negative': inside=winding<0\n            else: inside=abs(winding)>=2\n            if inside ^ inverse: covered.append(x)\n        out.append(covered)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 4), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 4), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 4), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 4), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 4), [[2, 3]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 4), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 4), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 4), [[]])\nif N == 2:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 5), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 5), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 5), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 5), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 5), [[2, 3, 4]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 5), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 5), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 5), [[]])\nif N == 3:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 6), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 6), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 6), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 6), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 6), [[2, 3, 4, 5]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 6), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 6), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 6), [[]])\nif N == 4:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 7), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 7), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 7), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 7), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 7), [[2, 3, 4, 5, 6]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 7), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 7), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 7), [[]])\nif N == 5:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 8), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 8), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 8), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 8), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 8), [[2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 8), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 8), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 8), [[]])\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":"b8224886f847de32352a8b374bd6dbb9cd60289fa0f9d1da170293b866dcaa48","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    out=[]\n    for events,rule,inverse in commands:\n        deltas={}\n        for x,delta in events: deltas[x]=deltas.get(x,0)+delta\n        winding=0\n        covered=[]\n        for x in range(size):\n            winding+=deltas.get(x,0)\n            if rule=='nonzero': inside=winding!=0\n            elif rule=='odd': inside=abs(winding)%2==1\n            elif rule=='positive': inside=winding>0\n            elif rule=='negative': inside=winding<0\n            else: inside=abs(winding)>=2\n            if inside ^ inverse: covered.append(x)\n        out.append(covered)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 4), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 4), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 4), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 4), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 4), [[2, 3]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 4), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 4), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 4), [[]])\nif N == 2:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 5), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 5), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 5), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 5), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 5), [[2, 3, 4]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 5), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 5), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 5), [[]])\nif N == 3:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 6), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 6), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 6), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 6), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 6), [[2, 3, 4, 5]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 6), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 6), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 6), [[]])\nif N == 4:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 7), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 7), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 7), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 7), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 7), [[2, 3, 4, 5, 6]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 7), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 7), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 7), [[]])\nif N == 5:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 8), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 8), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 8), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 8), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 8), [[2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 8), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 8), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 8), [[]])\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":"8726c253ebb15533996e6bea69f0e147ab1ba998097f88aa252c34afbad6720a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    out=[]\n    for events,rule,inverse in commands:\n        deltas={}\n        for x,delta in events: deltas[x]=deltas.get(x,0)+delta\n        winding=sum(delta for x,delta in deltas.items() if x<0)\n        covered=[]\n        for x in range(size):\n            winding+=deltas.get(x,0)\n            if rule=='nonzero': inside=winding!=0\n            elif rule=='odd': inside=abs(winding)%2==1\n            elif rule=='positive': inside=winding>0\n            elif rule=='negative': inside=winding<0\n            else: inside=abs(winding)>=2\n            if inside ^ inverse: covered.append(x)\n        out.append(covered)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 4), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 4), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 4), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 4), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 4), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 4), [[2, 3]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 4), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 4), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 4), [[]])\nif N == 2:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 5), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 5), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 5), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 5), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 5), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 5), [[2, 3, 4]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 5), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 5), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 5), [[]])\nif N == 3:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 6), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 6), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 6), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 6), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 6), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 6), [[2, 3, 4, 5]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 6), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 6), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 6), [[]])\nif N == 4:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 7), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 7), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 7), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 7), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 7), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 7), [[2, 3, 4, 5, 6]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 7), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 7), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 7), [[]])\nif N == 5:\n    check('explicit sequence 0', solve([[[[0, 1], [0, 1], [2, -2]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 1', solve([[[[-3, 1], [2, -1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 2', solve([[[[0, 1], [2, -1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 3', solve([[[[0, -1], [2, 1]], 'nonzero', False]], 8), [[0, 1]])\n    check('explicit sequence 4', solve([[[[0, 3], [2, -3]], 'odd', False]], 8), [[0, 1]])\n    check('explicit sequence 5', solve([[[[0, 2], [2, -2]], 'positive', False]], 8), [[0, 1]])\n    check('explicit sequence 6', solve([[[[0, -2], [2, 2]], 'negative', False]], 8), [[0, 1]])\n    check('explicit sequence 7', solve([[[[0, -3], [2, 3]], 'double', False]], 8), [[0, 1]])\n    check('explicit sequence 8', solve([[[[0, 1], [2, -1]], 'nonzero', True]], 8), [[2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 9', solve([[[[0, 1], [1, 1], [3, -2]], 'nonzero', False]], 8), [[0, 1, 2]])\n    check('explicit sequence 10', solve([[[[0, 1], [0, -1]], 'nonzero', False]], 8), [[]])\n    check('explicit sequence 11', solve([[[], 'odd', False]], 8), [[]])\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":"Finite one-dimensional integer sample sets model coverage state only; no geometric intersection, memory layout, GPU or graphics-standard conformance is claimed. 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-raster-clipping-winding-event-raster-left-history","generated_at":"2026-09-29T14:45:13.962079+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Raster clip state can leak coverage across draws even when every individual region is valid.","repair":"Apply the documented state transition at left history. Signed crossing events occur before their integer sample coordinate. For each finite target sample, sum all event deltas at or to its left, including events outside the left target edge. Fill rules are nonzero, odd, positive, negative, or magnitude-at-least-two. Inverse filling complements the result inside the target. Zero deltas are inert and coincident events add.","root_cause":"Discarding crossings left of the target loses the winding state entering the raster.","sha256":"b8c7b905a0b32ce04e7fad910a3ace9e8e16fcdcfffdfa920dbcb120c6d55114","title":"Winding event raster: left history · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.568,"exit_code":1,"observations":[{"actual":[[0,1]],"check":"explicit sequence 0","expected":[[0,1]],"passed":true},{"actual":[[2,3]],"check":"explicit sequence 1","expected":[[0,1]],"passed":false},{"actual":[[0,1]],"check":"explicit sequence 2","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 3","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 4","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 5","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 6","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 7","expected":[[0,1]],"passed":true},{"actual":[[2,3]],"check":"explicit sequence 8","expected":[[2,3]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 9","expected":[[0,1,2]],"passed":true},{"actual":[[]],"check":"explicit sequence 10","expected":[[]],"passed":true},{"actual":[[]],"check":"explicit sequence 11","expected":[[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[2, 3]], \"expected\": [[0, 1]], \"passed\": false}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 11\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.793,"exit_code":1,"observations":[{"actual":[[0,1]],"check":"explicit sequence 0","expected":[[0,1]],"passed":true},{"actual":[[2,3]],"check":"explicit sequence 1","expected":[[0,1]],"passed":false},{"actual":[[0,1]],"check":"explicit sequence 2","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 3","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 4","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 5","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 6","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 7","expected":[[0,1]],"passed":true},{"actual":[[2,3]],"check":"explicit sequence 8","expected":[[2,3]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 9","expected":[[0,1,2]],"passed":true},{"actual":[[]],"check":"explicit sequence 10","expected":[[]],"passed":true},{"actual":[[]],"check":"explicit sequence 11","expected":[[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[2, 3]], \"expected\": [[0, 1]], \"passed\": false}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 11\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.058,"exit_code":0,"observations":[{"actual":[[0,1]],"check":"explicit sequence 0","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 1","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 2","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 3","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 4","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 5","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 6","expected":[[0,1]],"passed":true},{"actual":[[0,1]],"check":"explicit sequence 7","expected":[[0,1]],"passed":true},{"actual":[[2,3]],"check":"explicit sequence 8","expected":[[2,3]],"passed":true},{"actual":[[0,1,2]],"check":"explicit sequence 9","expected":[[0,1,2]],"passed":true},{"actual":[[]],"check":"explicit sequence 10","expected":[[]],"passed":true},{"actual":[[]],"check":"explicit sequence 11","expected":[[]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[0, 1]], \"expected\": [[0, 1]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[2, 3]], \"expected\": [[2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0, 1, 2]], \"expected\": [[0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 11\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}