{"abstract":"Disabling destroys the remembered region so re-enabling loses coverage.","category":"Raster clipping","checks":11,"contract":"Commands act on finite sample indices [0,size). Save/restore includes the clip-enable bit; region edits update stored coverage even while clipping is disabled. Restore underflow is inert. Draw emits sorted effective samples.","evaluation_group":"s3-raster-clipping-saved-clip-stack","failed_approach":"Replacing the remembered clip with full coverage avoids empty draws but loses the region when clipping is re-enabled.","family":"s3-raster-clipping-saved-clip-stack-disable-erases","id":"FA-50381","implementations":{"attempt":{"sha256":"acaa9ed16407c398915a0a22ba9c04e354e77ded6e6b801ce087859189b86bf3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    full=set(range(size))\n    clip=set(full)\n    enabled=True\n    stack=[]\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        mask=set(cmd[1]) & full if len(cmd)>1 else set()\n        if op=='save': stack.append((set(clip),enabled))\n        elif op=='restore':\n            if stack: clip,enabled=stack.pop()\n        elif op=='intersect': clip &= mask\n        elif op=='exclude': clip -= mask\n        elif op=='union': clip |= mask\n        elif op=='replace': clip=set(mask)\n        elif op=='invert': clip=full-clip\n        elif op=='reset': clip=set(full)\n        elif op=='disable': enabled=False; clip=set(full)\n        elif op=='enable': enabled=True\n        elif op=='draw': out.append(sorted(clip if enabled else full))\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([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 4), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 4), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 4), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 4), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 4), [[2], [0, 1, 3], [0, 1, 2, 3]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 4), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 4), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 4), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 4), [[]])\nif N == 2:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 5), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 5), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 5), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 5), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 5), [[2], [0, 1, 3, 4], [0, 1, 2, 3, 4]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 5), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 5), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 5), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 5), [[]])\nif N == 3:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 6), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 6), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 6), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 6), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 6), [[2], [0, 1, 3, 4, 5], [0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 6), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 6), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 6), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 6), [[]])\nif N == 4:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 7), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 7), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 7), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 7), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 7), [[2], [0, 1, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 7), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 7), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 7), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 7), [[]])\nif N == 5:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 8), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 8), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 8), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 8), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 8), [[2], [0, 1, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 8), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 8), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 8), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 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":"6564b624723e1560505477df55ba8bc1a5199ebfb86611f0dae9ac660f8399e1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    full=set(range(size))\n    clip=set(full)\n    enabled=True\n    stack=[]\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        mask=set(cmd[1]) & full if len(cmd)>1 else set()\n        if op=='save': stack.append((set(clip),enabled))\n        elif op=='restore':\n            if stack: clip,enabled=stack.pop()\n        elif op=='intersect': clip &= mask\n        elif op=='exclude': clip -= mask\n        elif op=='union': clip |= mask\n        elif op=='replace': clip=set(mask)\n        elif op=='invert': clip=full-clip\n        elif op=='reset': clip=set(full)\n        elif op=='disable': enabled=False; clip.clear()\n        elif op=='enable': enabled=True\n        elif op=='draw': out.append(sorted(clip if enabled else full))\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([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 4), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 4), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 4), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 4), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 4), [[2], [0, 1, 3], [0, 1, 2, 3]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 4), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 4), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 4), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 4), [[]])\nif N == 2:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 5), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 5), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 5), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 5), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 5), [[2], [0, 1, 3, 4], [0, 1, 2, 3, 4]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 5), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 5), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 5), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 5), [[]])\nif N == 3:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 6), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 6), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 6), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 6), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 6), [[2], [0, 1, 3, 4, 5], [0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 6), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 6), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 6), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 6), [[]])\nif N == 4:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 7), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 7), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 7), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 7), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 7), [[2], [0, 1, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 7), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 7), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 7), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 7), [[]])\nif N == 5:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 8), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 8), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 8), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 8), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 8), [[2], [0, 1, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 8), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 8), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 8), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 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":"fc7f57193000dbbf64b824f9ac42759059814612c3f9ca1b91b354d5530c257e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(commands, size):\n    full=set(range(size))\n    clip=set(full)\n    enabled=True\n    stack=[]\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        mask=set(cmd[1]) & full if len(cmd)>1 else set()\n        if op=='save': stack.append((set(clip),enabled))\n        elif op=='restore':\n            if stack: clip,enabled=stack.pop()\n        elif op=='intersect': clip &= mask\n        elif op=='exclude': clip -= mask\n        elif op=='union': clip |= mask\n        elif op=='replace': clip=set(mask)\n        elif op=='invert': clip=full-clip\n        elif op=='reset': clip=set(full)\n        elif op=='disable': enabled=False\n        elif op=='enable': enabled=True\n        elif op=='draw': out.append(sorted(clip if enabled else full))\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([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 4), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 4), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 4), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 4), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 4), [[2], [0, 1, 3], [0, 1, 2, 3]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 4), [[0, 1, 2, 3]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 4), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 4), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 4), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 4), [[]])\nif N == 2:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 5), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 5), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 5), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 5), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 5), [[2], [0, 1, 3, 4], [0, 1, 2, 3, 4]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 5), [[0, 1, 2, 3, 4]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 5), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 5), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 5), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 5), [[]])\nif N == 3:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 6), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 6), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 6), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 6), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 6), [[2], [0, 1, 3, 4, 5], [0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 6), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 6), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 6), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 6), [[]])\nif N == 4:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 7), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 7), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 7), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 7), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 7), [[2], [0, 1, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 7), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 7), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 7), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 7), [[]])\nif N == 5:\n    check('explicit sequence 0', solve([['replace', [0, 1, 2]], ['save'], ['exclude', [1]], ['draw'], ['restore'], ['draw']], 8), [[0, 2], [0, 1, 2]])\n    check('explicit sequence 1', solve([['replace', [0]], ['save'], ['replace', [1]], ['save'], ['replace', [2]], ['restore'], ['draw'], ['restore'], ['draw']], 8), [[1], [0]])\n    check('explicit sequence 2', solve([['replace', [0]], ['disable'], ['save'], ['enable'], ['restore'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 3', solve([['replace', [1, 2]], ['disable'], ['enable'], ['draw']], 8), [[1, 2]])\n    check('explicit sequence 4', solve([['replace', [0]], ['exclude', [2]], ['draw'], ['union', [0, 2]], ['draw']], 8), [[0], [0, 2]])\n    check('explicit sequence 5', solve([['replace', [1]], ['replace', [2]], ['draw'], ['invert'], ['draw'], ['reset'], ['draw']], 8), [[2], [0, 1, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 6', solve([['restore'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])\n    check('explicit sequence 7', solve([['replace', []], ['draw']], 8), [[]])\n    check('explicit sequence 8', solve([['disable'], ['replace', [0, 2, 8]], ['enable'], ['draw']], 8), [[0, 2]])\n    check('explicit sequence 9', solve([['reset'], ['replace', [0]], ['draw']], 8), [[0]])\n    check('explicit sequence 10', solve([['replace', []], ['disable'], ['enable'], ['draw']], 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-saved-clip-stack-disable-erases","generated_at":"2026-09-29T14:45:08.600580+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 disable erases. Commands act on finite sample indices [0,size). Save/restore includes the clip-enable bit; region edits update stored coverage even while clipping is disabled. Restore underflow is inert. Draw emits sorted effective samples.","root_cause":"Disabling destroys the remembered region so re-enabling loses coverage.","sha256":"58b8d7e04c4c9f76075c5248a94e3f32b6c07b34625768da721dcded63defb5c","title":"Saved clip stack: disable erases · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.441,"exit_code":1,"observations":[{"actual":[[0,2],[0,1,2]],"check":"explicit sequence 0","expected":[[0,2],[0,1,2]],"passed":true},{"actual":[[1],[0]],"check":"explicit sequence 1","expected":[[1],[0]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 2","expected":[[0,1,2,3]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 3","expected":[[1,2]],"passed":false},{"actual":[[0],[0,2]],"check":"explicit sequence 4","expected":[[0],[0,2]],"passed":true},{"actual":[[2],[0,1,3],[0,1,2,3]],"check":"explicit sequence 5","expected":[[2],[0,1,3],[0,1,2,3]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 6","expected":[[0,1,2,3]],"passed":true},{"actual":[[]],"check":"explicit sequence 7","expected":[[]],"passed":true},{"actual":[[0,2]],"check":"explicit sequence 8","expected":[[0,2]],"passed":true},{"actual":[[0]],"check":"explicit sequence 9","expected":[[0]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 10","expected":[[]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 2], [0, 1, 2]], \"expected\": [[0, 2], [0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[1], [0]], \"expected\": [[1], [0]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[1, 2]], \"passed\": false}, {\"check\": \"explicit sequence 4\", \"actual\": [[0], [0, 2]], \"expected\": [[0], [0, 2]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[2], [0, 1, 3], [0, 1, 2, 3]], \"expected\": [[2], [0, 1, 3], [0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[0, 2]], \"expected\": [[0, 2]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.314,"exit_code":1,"observations":[{"actual":[[0,2],[0,1,2]],"check":"explicit sequence 0","expected":[[0,2],[0,1,2]],"passed":true},{"actual":[[1],[0]],"check":"explicit sequence 1","expected":[[1],[0]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 2","expected":[[0,1,2,3]],"passed":true},{"actual":[[]],"check":"explicit sequence 3","expected":[[1,2]],"passed":false},{"actual":[[0],[0,2]],"check":"explicit sequence 4","expected":[[0],[0,2]],"passed":true},{"actual":[[2],[0,1,3],[0,1,2,3]],"check":"explicit sequence 5","expected":[[2],[0,1,3],[0,1,2,3]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 6","expected":[[0,1,2,3]],"passed":true},{"actual":[[]],"check":"explicit sequence 7","expected":[[]],"passed":true},{"actual":[[0,2]],"check":"explicit sequence 8","expected":[[0,2]],"passed":true},{"actual":[[0]],"check":"explicit sequence 9","expected":[[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 10","expected":[[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 2], [0, 1, 2]], \"expected\": [[0, 2], [0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[1], [0]], \"expected\": [[1], [0]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[]], \"expected\": [[1, 2]], \"passed\": false}, {\"check\": \"explicit sequence 4\", \"actual\": [[0], [0, 2]], \"expected\": [[0], [0, 2]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[2], [0, 1, 3], [0, 1, 2, 3]], \"expected\": [[2], [0, 1, 3], [0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[0, 2]], \"expected\": [[0, 2]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.386,"exit_code":0,"observations":[{"actual":[[0,2],[0,1,2]],"check":"explicit sequence 0","expected":[[0,2],[0,1,2]],"passed":true},{"actual":[[1],[0]],"check":"explicit sequence 1","expected":[[1],[0]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 2","expected":[[0,1,2,3]],"passed":true},{"actual":[[1,2]],"check":"explicit sequence 3","expected":[[1,2]],"passed":true},{"actual":[[0],[0,2]],"check":"explicit sequence 4","expected":[[0],[0,2]],"passed":true},{"actual":[[2],[0,1,3],[0,1,2,3]],"check":"explicit sequence 5","expected":[[2],[0,1,3],[0,1,2,3]],"passed":true},{"actual":[[0,1,2,3]],"check":"explicit sequence 6","expected":[[0,1,2,3]],"passed":true},{"actual":[[]],"check":"explicit sequence 7","expected":[[]],"passed":true},{"actual":[[0,2]],"check":"explicit sequence 8","expected":[[0,2]],"passed":true},{"actual":[[0]],"check":"explicit sequence 9","expected":[[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 10","expected":[[]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0, 2], [0, 1, 2]], \"expected\": [[0, 2], [0, 1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[1], [0]], \"expected\": [[1], [0]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[1, 2]], \"expected\": [[1, 2]], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0], [0, 2]], \"expected\": [[0], [0, 2]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[2], [0, 1, 3], [0, 1, 2, 3]], \"expected\": [[2], [0, 1, 3], [0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[0, 2]], \"expected\": [[0, 2]], \"passed\": true}, {\"check\": \"explicit sequence 9\", \"actual\": [[0]], \"expected\": [[0]], \"passed\": true}, {\"check\": \"explicit sequence 10\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}