FA-50471 / Raster clipping / Open access
Named mask registry: rename binding · case 01
Rename updates the wrong active-name condition and loses the active mask.
ROOT CAUSE
Rename updates the wrong active-name condition and loses the active mask.
VERIFIED REPAIR
Apply the documented state transition at rename binding. Named clip masks are immutable snapshots clipped to target extent. Bind selects a name, edits replace the named mask, deletion of the active mask makes drawing empty. Renaming preserves active binding; clone is independent; reset clears registry and active binding.
Unsuccessful approach: Always binding the renamed mask changes active clipping when an inactive mask is renamed.
Case contract
Named clip masks are immutable snapshots clipped to target extent. Bind selects a name, edits replace the named mask, deletion of the active mask makes drawing empty. Renaming preserves active binding; clone is independent; reset clears registry and active binding.
Why this case matters
Raster clip state can leak coverage across draws even when every individual region is valid.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(commands, size):
full=set(range(size))
masks={}
active=None
out=[]
for cmd in commands:
op=cmd[0]
if op=='define': masks[cmd[1]]=set(cmd[2]) & full
elif op=='bind': active=cmd[1]
elif op=='delete': masks.pop(cmd[1],None)
elif op=='clone': masks[cmd[2]]=set(masks.get(cmd[1],set()))
elif op=='subtract' and cmd[1] in masks: masks[cmd[1]]-=set(cmd[2])
elif op=='rename' and cmd[1] in masks:
masks[cmd[2]]=masks.pop(cmd[1])
if active==cmd[2]: active=cmd[1]
elif op=='reset': masks={}; active=None
elif op=='draw': out.append(sorted(masks.get(active,set())))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 4), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 4), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 4), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 4), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 4), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 4), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 4), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 4), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 4), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 4), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 4), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 4), [[0, 1, 2, 3]])
if N == 2:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 5), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 5), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 5), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 5), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 5), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 5), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 5), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 5), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 5), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 5), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 5), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 5), [[0, 1, 2, 3, 4]])
if N == 3:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 6), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 6), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 6), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 6), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 6), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 6), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 6), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 6), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 6), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 6), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 6), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])
if N == 4:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 7), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 7), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 7), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 7), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 7), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 7), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 7), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 7), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 7), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 7), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 7), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])
if N == 5:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 8), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 8), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 8), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 8), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 8), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 8), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 8), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 8), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 8), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 8), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 8), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit sequence 0 | [[0]] | [[0]] | Passed |
| explicit sequence 1 | [[0], [1]] | [[0], [1]] | Passed |
| explicit sequence 2 | [[0]] | [[0]] | Passed |
| explicit sequence 3 | [[0, 1], [1]] | [[0, 1], [1]] | Passed |
| explicit sequence 4 | [[], []] | [[0], []] | Failed |
| explicit sequence 5 | [[]] | [[]] | Passed |
| explicit sequence 6 | [[]] | [[]] | Passed |
| explicit sequence 7 | [[2]] | [[2]] | Passed |
| explicit sequence 8 | [[]] | [[]] | Passed |
| explicit sequence 9 | [[0]] | [[0]] | Passed |
| explicit sequence 10 | [[]] | [[]] | Passed |
| explicit sequence 11 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
SHA-256 / 183f53986d0d996e5af7df6df53e5c43798260a9b40298ac612212550cb98d78
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(commands, size):
full=set(range(size))
masks={}
active=None
out=[]
for cmd in commands:
op=cmd[0]
if op=='define': masks[cmd[1]]=set(cmd[2]) & full
elif op=='bind': active=cmd[1]
elif op=='delete': masks.pop(cmd[1],None)
elif op=='clone': masks[cmd[2]]=set(masks.get(cmd[1],set()))
elif op=='subtract' and cmd[1] in masks: masks[cmd[1]]-=set(cmd[2])
elif op=='rename' and cmd[1] in masks:
masks[cmd[2]]=masks.pop(cmd[1])
active=cmd[2]
elif op=='reset': masks={}; active=None
elif op=='draw': out.append(sorted(masks.get(active,set())))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 4), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 4), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 4), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 4), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 4), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 4), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 4), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 4), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 4), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 4), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 4), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 4), [[0, 1, 2, 3]])
if N == 2:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 5), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 5), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 5), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 5), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 5), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 5), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 5), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 5), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 5), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 5), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 5), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 5), [[0, 1, 2, 3, 4]])
if N == 3:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 6), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 6), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 6), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 6), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 6), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 6), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 6), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 6), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 6), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 6), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 6), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])
if N == 4:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 7), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 7), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 7), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 7), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 7), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 7), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 7), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 7), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 7), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 7), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 7), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])
if N == 5:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 8), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 8), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 8), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 8), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 8), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 8), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 8), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 8), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 8), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 8), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 8), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit sequence 0 | [[0]] | [[0]] | Passed |
| explicit sequence 1 | [[0], [1]] | [[0], [1]] | Passed |
| explicit sequence 2 | [[0]] | [[0]] | Passed |
| explicit sequence 3 | [[0, 1], [1]] | [[0, 1], [1]] | Passed |
| explicit sequence 4 | [[0], []] | [[0], []] | Passed |
| explicit sequence 5 | [[]] | [[]] | Passed |
| explicit sequence 6 | [[]] | [[]] | Passed |
| explicit sequence 7 | [[2]] | [[2]] | Passed |
| explicit sequence 8 | [[]] | [[]] | Passed |
| explicit sequence 9 | [[1]] | [[0]] | Failed |
| explicit sequence 10 | [[]] | [[]] | Passed |
| explicit sequence 11 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
SHA-256 / 7f1f672a38688770ddb710f34315219726ffb36dce79f6e051fe328a85743af6
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(commands, size):
full=set(range(size))
masks={}
active=None
out=[]
for cmd in commands:
op=cmd[0]
if op=='define': masks[cmd[1]]=set(cmd[2]) & full
elif op=='bind': active=cmd[1]
elif op=='delete': masks.pop(cmd[1],None)
elif op=='clone': masks[cmd[2]]=set(masks.get(cmd[1],set()))
elif op=='subtract' and cmd[1] in masks: masks[cmd[1]]-=set(cmd[2])
elif op=='rename' and cmd[1] in masks:
masks[cmd[2]]=masks.pop(cmd[1])
if active==cmd[1]: active=cmd[2]
elif op=='reset': masks={}; active=None
elif op=='draw': out.append(sorted(masks.get(active,set())))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 4), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 4), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 4), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 4), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 4), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 4), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 4), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 4), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 4), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 4), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 4), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 4), [[0, 1, 2, 3]])
if N == 2:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 5), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 5), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 5), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 5), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 5), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 5), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 5), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 5), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 5), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 5), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 5), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 5), [[0, 1, 2, 3, 4]])
if N == 3:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 6), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 6), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 6), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 6), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 6), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 6), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 6), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 6), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 6), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 6), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 6), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 6), [[0, 1, 2, 3, 4, 5]])
if N == 4:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 7), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 7), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 7), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 7), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 7), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 7), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 7), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 7), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 7), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 7), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 7), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 7), [[0, 1, 2, 3, 4, 5, 6]])
if N == 5:
check('explicit sequence 0', solve([['define', 'a', [0, 99, -1]], ['bind', 'a'], ['draw']], 8), [[0]])
check('explicit sequence 1', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['draw'], ['bind', 'b'], ['draw']], 8), [[0], [1]])
check('explicit sequence 2', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['delete', 'b'], ['draw']], 8), [[0]])
check('explicit sequence 3', solve([['define', 'a', [0, 1]], ['clone', 'a', 'b'], ['subtract', 'a', [0]], ['bind', 'b'], ['draw'], ['bind', 'a'], ['draw']], 8), [[0, 1], [1]])
check('explicit sequence 4', solve([['define', 'a', [0]], ['bind', 'a'], ['rename', 'a', 'b'], ['draw'], ['bind', 'a'], ['draw']], 8), [[0], []])
check('explicit sequence 5', solve([['define', 'a', [0]], ['reset'], ['bind', 'a'], ['draw']], 8), [[]])
check('explicit sequence 6', solve([['bind', 'missing'], ['draw']], 8), [[]])
check('explicit sequence 7', solve([['define', 'a', [0]], ['define', 'a', [2]], ['bind', 'a'], ['draw']], 8), [[2]])
check('explicit sequence 8', solve([['define', 'e', []], ['bind', 'e'], ['draw']], 8), [[]])
check('explicit sequence 9', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['rename', 'b', 'c'], ['draw']], 8), [[0]])
check('explicit sequence 10', solve([['define', 'a', [0]], ['define', 'b', [1]], ['bind', 'a'], ['reset'], ['bind', 'b'], ['draw']], 8), [[]])
check('explicit sequence 11', solve([['define', 'a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['bind', 'a'], ['draw']], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit sequence 0 | [[0]] | [[0]] | Passed |
| explicit sequence 1 | [[0], [1]] | [[0], [1]] | Passed |
| explicit sequence 2 | [[0]] | [[0]] | Passed |
| explicit sequence 3 | [[0, 1], [1]] | [[0, 1], [1]] | Passed |
| explicit sequence 4 | [[0], []] | [[0], []] | Passed |
| explicit sequence 5 | [[]] | [[]] | Passed |
| explicit sequence 6 | [[]] | [[]] | Passed |
| explicit sequence 7 | [[2]] | [[2]] | Passed |
| explicit sequence 8 | [[]] | [[]] | Passed |
| explicit sequence 9 | [[0]] | [[0]] | Passed |
| explicit sequence 10 | [[]] | [[]] | Passed |
| explicit sequence 11 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
SHA-256 / 9b0336e6b8175ebd6cdd184386f0a8bf1ef983668a3150bb89fed084db31ab67
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:45:09.449796+00:00.
Case digest / b0ba64ace7651bf0e5419845e2e943e871dbf2d604296166da47f819ab95707e