{"abstract":"A cached mask contains samples beyond the target extent.","category":"Raster clipping","checks":9,"contract":"Cache entries store copied coverage and source revisions. Draw recomputes after mask edits. Disable returns full coverage without overwriting cached mask. Rebinding to another name cannot reuse the old name; clearing definitions removes stale entries. Missing definitions clip empty.","evaluation_group":"s3-raster-clipping-clip-mask-cache","failed_approach":"Lower-bound validation does not constrain the cached mask upper extent.","family":"s3-raster-clipping-clip-mask-cache-finite-domain","id":"FA-50536","implementations":{"attempt":{"sha256":"6e6a56b03230ca40f6d091a91578573e0b154dbce7a53e4884852c97eb454725","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    defs={}\n    revs={}\n    cache={}\n    active=None\n    enabled=True\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        if op=='set':\n            defs[cmd[1]]={x for x in cmd[2] if x>=0}\n            revs[cmd[1]]=revs.get(cmd[1],0)+1\n        elif op=='bind': active=cmd[1]\n        elif op=='drop':\n            defs.pop(cmd[1],None)\n            cache.pop(cmd[1],None)\n        elif op=='invalidate': cache.pop(cmd[1],None)\n        elif op=='clear': defs.clear(); cache.clear()\n        elif op=='disable': enabled=False\n        elif op=='enable': enabled=True\n        elif op=='draw':\n            revision=revs.get(active,0)\n            if active not in cache or cache[active][0]!=revision:\n                cache[active]=(revision,set(defs.get(active,set())))\n            out.append(sorted(cache[active][1] 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([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 4), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 4), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 4), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 4), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 4), [[0], [0, 1, 2, 3], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 4), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 4), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 4), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 4), [[0], []])\nif N == 2:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 5), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 5), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 5), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 5), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 5), [[0], [0, 1, 2, 3, 4], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 5), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 5), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 5), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 5), [[0], []])\nif N == 3:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 6), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 6), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 6), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 6), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 6), [[0], [0, 1, 2, 3, 4, 5], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 6), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 6), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 6), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 6), [[0], []])\nif N == 4:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 7), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 7), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 7), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 7), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 7), [[0], [0, 1, 2, 3, 4, 5, 6], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 7), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 7), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 7), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 7), [[0], []])\nif N == 5:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 8), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 8), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 8), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 8), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 8), [[0], [0, 1, 2, 3, 4, 5, 6, 7], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 8), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 8), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 8), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 8), [[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":"2be4ee3a17f4d67eb461c122ce75cb20194f23c89416ed406fa4800f73aeae54","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    defs={}\n    revs={}\n    cache={}\n    active=None\n    enabled=True\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        if op=='set':\n            defs[cmd[1]]=set(cmd[2])\n            revs[cmd[1]]=revs.get(cmd[1],0)+1\n        elif op=='bind': active=cmd[1]\n        elif op=='drop':\n            defs.pop(cmd[1],None)\n            cache.pop(cmd[1],None)\n        elif op=='invalidate': cache.pop(cmd[1],None)\n        elif op=='clear': defs.clear(); cache.clear()\n        elif op=='disable': enabled=False\n        elif op=='enable': enabled=True\n        elif op=='draw':\n            revision=revs.get(active,0)\n            if active not in cache or cache[active][0]!=revision:\n                cache[active]=(revision,set(defs.get(active,set())))\n            out.append(sorted(cache[active][1] 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([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 4), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 4), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 4), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 4), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 4), [[0], [0, 1, 2, 3], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 4), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 4), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 4), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 4), [[0], []])\nif N == 2:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 5), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 5), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 5), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 5), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 5), [[0], [0, 1, 2, 3, 4], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 5), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 5), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 5), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 5), [[0], []])\nif N == 3:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 6), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 6), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 6), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 6), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 6), [[0], [0, 1, 2, 3, 4, 5], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 6), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 6), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 6), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 6), [[0], []])\nif N == 4:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 7), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 7), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 7), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 7), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 7), [[0], [0, 1, 2, 3, 4, 5, 6], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 7), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 7), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 7), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 7), [[0], []])\nif N == 5:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 8), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 8), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 8), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 8), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 8), [[0], [0, 1, 2, 3, 4, 5, 6, 7], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 8), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 8), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 8), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 8), [[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":"140084f6d79f7cb8de96d085e39d8a092ecddaf5076bbaf2f5831b57e0f030ba","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    defs={}\n    revs={}\n    cache={}\n    active=None\n    enabled=True\n    out=[]\n    for cmd in commands:\n        op=cmd[0]\n        if op=='set':\n            defs[cmd[1]]=set(cmd[2]) & full\n            revs[cmd[1]]=revs.get(cmd[1],0)+1\n        elif op=='bind': active=cmd[1]\n        elif op=='drop':\n            defs.pop(cmd[1],None)\n            cache.pop(cmd[1],None)\n        elif op=='invalidate': cache.pop(cmd[1],None)\n        elif op=='clear': defs.clear(); cache.clear()\n        elif op=='disable': enabled=False\n        elif op=='enable': enabled=True\n        elif op=='draw':\n            revision=revs.get(active,0)\n            if active not in cache or cache[active][0]!=revision:\n                cache[active]=(revision,set(defs.get(active,set())))\n            out.append(sorted(cache[active][1] 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([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 4), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 4), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 4), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 4), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 4), [[0], [0, 1, 2, 3], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 4), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 4), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 4), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 4), [[0], []])\nif N == 2:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 5), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 5), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 5), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 5), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 5), [[0], [0, 1, 2, 3, 4], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 5), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 5), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 5), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 5), [[0], []])\nif N == 3:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 6), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 6), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 6), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 6), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 6), [[0], [0, 1, 2, 3, 4, 5], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 6), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 6), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 6), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 6), [[0], []])\nif N == 4:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 7), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 7), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 7), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 7), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 7), [[0], [0, 1, 2, 3, 4, 5, 6], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 7), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 7), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 7), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 7), [[0], []])\nif N == 5:\n    check('explicit sequence 0', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['set', 'a', [1]], ['draw']], 8), [[0], [1]])\n    check('explicit sequence 1', solve([['set', 'a', [0]], ['set', 'b', [2]], ['bind', 'b'], ['draw']], 8), [[2]])\n    check('explicit sequence 2', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 8), [[0], []])\n    check('explicit sequence 3', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['clear'], ['draw']], 8), [[0], []])\n    check('explicit sequence 4', solve([['set', 'a', [0]], ['bind', 'a'], ['draw'], ['disable'], ['draw'], ['enable'], ['draw']], 8), [[0], [0, 1, 2, 3, 4, 5, 6, 7], [0]])\n    check('explicit sequence 5', solve([['bind', 'missing'], ['draw']], 8), [[]])\n    check('explicit sequence 6', solve([['set', 'a', [0, 99]], ['bind', 'a'], ['draw'], ['invalidate', 'a'], ['draw']], 8), [[0], [0]])\n    check('explicit sequence 7', solve([['set', 'a', []], ['bind', 'a'], ['draw']], 8), [[]])\n    check('explicit sequence 8', solve([['set', 'a', [0]], ['set', 'b', [1]], ['bind', 'a'], ['draw'], ['drop', 'a'], ['draw']], 8), [[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":"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-clip-mask-cache-finite-domain","generated_at":"2026-09-29T14:45:10.018716+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 finite domain. Cache entries store copied coverage and source revisions. Draw recomputes after mask edits. Disable returns full coverage without overwriting cached mask. Rebinding to another name cannot reuse the old name; clearing definitions removes stale entries. Missing definitions clip empty.","root_cause":"A cached mask contains samples beyond the target extent.","sha256":"6bdaed8af7e229e4ef025e855f48265c647237760a24c6e810dd96806604bd76","title":"Clip mask cache: finite domain · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.977,"exit_code":1,"observations":[{"actual":[[0],[1]],"check":"explicit sequence 0","expected":[[0],[1]],"passed":true},{"actual":[[2]],"check":"explicit sequence 1","expected":[[2]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 2","expected":[[0],[]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 3","expected":[[0],[]],"passed":true},{"actual":[[0],[0,1,2,3],[0]],"check":"explicit sequence 4","expected":[[0],[0,1,2,3],[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 5","expected":[[]],"passed":true},{"actual":[[0,99],[0,99]],"check":"explicit sequence 6","expected":[[0],[0]],"passed":false},{"actual":[[]],"check":"explicit sequence 7","expected":[[]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 8","expected":[[0],[]],"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]], \"expected\": [[2]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0], [0, 1, 2, 3], [0]], \"expected\": [[0], [0, 1, 2, 3], [0]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 99], [0, 99]], \"expected\": [[0], [0]], \"passed\": false}, {\"check\": \"explicit sequence 7\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.352,"exit_code":1,"observations":[{"actual":[[0],[1]],"check":"explicit sequence 0","expected":[[0],[1]],"passed":true},{"actual":[[2]],"check":"explicit sequence 1","expected":[[2]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 2","expected":[[0],[]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 3","expected":[[0],[]],"passed":true},{"actual":[[0],[0,1,2,3],[0]],"check":"explicit sequence 4","expected":[[0],[0,1,2,3],[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 5","expected":[[]],"passed":true},{"actual":[[0,99],[0,99]],"check":"explicit sequence 6","expected":[[0],[0]],"passed":false},{"actual":[[]],"check":"explicit sequence 7","expected":[[]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 8","expected":[[0],[]],"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]], \"expected\": [[2]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0], [0, 1, 2, 3], [0]], \"expected\": [[0], [0, 1, 2, 3], [0]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0, 99], [0, 99]], \"expected\": [[0], [0]], \"passed\": false}, {\"check\": \"explicit sequence 7\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.345,"exit_code":0,"observations":[{"actual":[[0],[1]],"check":"explicit sequence 0","expected":[[0],[1]],"passed":true},{"actual":[[2]],"check":"explicit sequence 1","expected":[[2]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 2","expected":[[0],[]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 3","expected":[[0],[]],"passed":true},{"actual":[[0],[0,1,2,3],[0]],"check":"explicit sequence 4","expected":[[0],[0,1,2,3],[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 5","expected":[[]],"passed":true},{"actual":[[0],[0]],"check":"explicit sequence 6","expected":[[0],[0]],"passed":true},{"actual":[[]],"check":"explicit sequence 7","expected":[[]],"passed":true},{"actual":[[0],[]],"check":"explicit sequence 8","expected":[[0],[]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit sequence 0\", \"actual\": [[0], [1]], \"expected\": [[0], [1]], \"passed\": true}, {\"check\": \"explicit sequence 1\", \"actual\": [[2]], \"expected\": [[2]], \"passed\": true}, {\"check\": \"explicit sequence 2\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}, {\"check\": \"explicit sequence 3\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}, {\"check\": \"explicit sequence 4\", \"actual\": [[0], [0, 1, 2, 3], [0]], \"expected\": [[0], [0, 1, 2, 3], [0]], \"passed\": true}, {\"check\": \"explicit sequence 5\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 6\", \"actual\": [[0], [0]], \"expected\": [[0], [0]], \"passed\": true}, {\"check\": \"explicit sequence 7\", \"actual\": [[]], \"expected\": [[]], \"passed\": true}, {\"check\": \"explicit sequence 8\", \"actual\": [[0], []], \"expected\": [[0], []], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}