{"abstract":"Clearing all masks retains valid-looking cache entries.","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":"Clearing the unbound cache slot does not invalidate named entries.","family":"s3-raster-clipping-clip-mask-cache-clear-stale","id":"FA-50506","implementations":{"attempt":{"sha256":"0654629f7df8e3c0152b494ba25f66a81da9273b818ad1fff5d21b4013606c10","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.pop(None,None)\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":"dc3aeb813dfd341648efbafc28a5dd539ce679ddf34fdabfebf8d73ffbf947b4","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()\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-clear-stale","generated_at":"2026-09-29T14:45:09.748370+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 clear stale. 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":"Clearing all masks retains valid-looking cache entries.","sha256":"672ce314645f2f4f9efc95f33ac3e29e174840a94718bcaaece02f177cb929e3","title":"Clip mask cache: clear stale · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.993,"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],[0]],"check":"explicit sequence 3","expected":[[0],[]],"passed":false},{"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":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], [0]], \"expected\": [[0], []], \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":40.606,"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],[0]],"check":"explicit sequence 3","expected":[[0],[]],"passed":false},{"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":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], [0]], \"expected\": [[0], []], \"passed\": false}, {\"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\": false}\n"},"fixed":{"elapsed_ms":41.056,"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"}