FAILURE MAP
← Case archive

FA-50921 / Raster clipping / Open access

Clip mask morphology: iteration original · case 01

Repeated morphology restarts from the original clip each iteration.

Verified by executionVariant 1 · 12 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Repeated morphology restarts from the original clip each iteration.

VERIFIED REPAIR

Apply the documented state transition at iteration original. A binary sample mask supports dilation/erosion by an explicit signed structuring element. Out-of-target samples are uncovered; empty structuring elements yield empty output. Open erodes then dilates; close dilates then erodes. Gradient is dilated minus eroded; boundary is original minus eroded; exterior boundary is dilated minus original. Iterations use complete prior masks.

Unsuccessful approach: Allowing only the first step to use the current result still restarts all later iterations.

Case contract

A binary sample mask supports dilation/erosion by an explicit signed structuring element. Out-of-target samples are uncovered; empty structuring elements yield empty output. Open erodes then dilates; close dilates then erodes. Gradient is dilated minus eroded; boundary is original minus eroded; exterior boundary is dilated minus original. Iterations use complete prior masks.

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))
    out=[]
    for cmd in commands:
        source,kernel,mode,iterations=cmd
        source=set(source)&full
        kernel=set(kernel)
        def dilate(s): return {x for x in full if any(x-k in s for k in kernel)}
        def erode(s): return {x for x in full if kernel and all(x+k in s for k in kernel)}
        result=set(source)
        for _ in range(max(0,iterations)):
            prior=set(source)
            if mode=='dilate': result=dilate(prior)
            elif mode=='erode': result=erode(prior)
            elif mode=='open': result=dilate(erode(prior))
            elif mode=='close': result=erode(dilate(prior))
            elif mode=='gradient': result=dilate(prior)-erode(prior)
            elif mode=='inner': result=prior-erode(prior)
            else: result=dilate(prior)-prior
        out.append(sorted(result))
    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([[[1], [0, 1], 'dilate', 1]], 4), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 4), [[1, 2]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 4), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 4), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 4), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 4), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 4), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 4), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 4), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 4), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 4), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 4), [[0, 1, 2]])
if N == 2:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 5), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 5), [[1, 2, 3]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 5), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 5), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 5), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 5), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 5), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 5), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 5), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 5), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 5), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 5), [[0, 1, 2]])
if N == 3:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 6), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 6), [[1, 2, 3, 4]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 6), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 6), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 6), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 6), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 6), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 6), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 6), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 6), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 6), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 6), [[0, 1, 2]])
if N == 4:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 7), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 7), [[1, 2, 3, 4, 5]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 7), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 7), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 7), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 7), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 7), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 7), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 7), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 7), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 7), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 7), [[0, 1, 2]])
if N == 5:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 8), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 8), [[1, 2, 3, 4, 5, 6]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 8), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 8), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 8), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 8), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 8), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 8), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 8), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 8), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 8), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 8), [[0, 1, 2]])
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 fixtureActualExpectedOutcome
explicit sequence 0[[1, 2]][[1, 2]]Passed
explicit sequence 1[[1, 2]][[1, 2]]Passed
explicit sequence 2[[]][[]]Passed
explicit sequence 3[[]][[]]Passed
explicit sequence 4[[0, 1, 2]][[0, 1, 2]]Passed
explicit sequence 5[[2, 3]][[2, 3]]Passed
explicit sequence 6[[2]][[2]]Passed
explicit sequence 7[[2]][[2]]Passed
explicit sequence 8[[0, 1]][[0, 1, 2]]Failed
explicit sequence 9[[1]][[1]]Passed
explicit sequence 10[[1, 2]][[1, 2]]Passed
explicit sequence 11[[0, 1, 2]][[0, 1, 2]]Passed

SHA-256 / 6ce55a1d90f3bb75317cf238072456070cef556e5de980e6417d0a89ee29f0d1

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))
    out=[]
    for cmd in commands:
        source,kernel,mode,iterations=cmd
        source=set(source)&full
        kernel=set(kernel)
        def dilate(s): return {x for x in full if any(x-k in s for k in kernel)}
        def erode(s): return {x for x in full if kernel and all(x+k in s for k in kernel)}
        result=set(source)
        for _ in range(max(0,iterations)):
            prior=set(result) if _==0 else set(source)
            if mode=='dilate': result=dilate(prior)
            elif mode=='erode': result=erode(prior)
            elif mode=='open': result=dilate(erode(prior))
            elif mode=='close': result=erode(dilate(prior))
            elif mode=='gradient': result=dilate(prior)-erode(prior)
            elif mode=='inner': result=prior-erode(prior)
            else: result=dilate(prior)-prior
        out.append(sorted(result))
    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([[[1], [0, 1], 'dilate', 1]], 4), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 4), [[1, 2]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 4), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 4), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 4), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 4), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 4), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 4), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 4), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 4), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 4), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 4), [[0, 1, 2]])
if N == 2:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 5), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 5), [[1, 2, 3]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 5), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 5), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 5), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 5), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 5), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 5), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 5), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 5), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 5), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 5), [[0, 1, 2]])
if N == 3:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 6), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 6), [[1, 2, 3, 4]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 6), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 6), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 6), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 6), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 6), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 6), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 6), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 6), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 6), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 6), [[0, 1, 2]])
if N == 4:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 7), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 7), [[1, 2, 3, 4, 5]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 7), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 7), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 7), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 7), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 7), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 7), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 7), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 7), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 7), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 7), [[0, 1, 2]])
if N == 5:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 8), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 8), [[1, 2, 3, 4, 5, 6]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 8), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 8), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 8), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 8), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 8), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 8), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 8), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 8), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 8), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 8), [[0, 1, 2]])
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 fixtureActualExpectedOutcome
explicit sequence 0[[1, 2]][[1, 2]]Passed
explicit sequence 1[[1, 2]][[1, 2]]Passed
explicit sequence 2[[]][[]]Passed
explicit sequence 3[[]][[]]Passed
explicit sequence 4[[0, 1, 2]][[0, 1, 2]]Passed
explicit sequence 5[[2, 3]][[2, 3]]Passed
explicit sequence 6[[2]][[2]]Passed
explicit sequence 7[[2]][[2]]Passed
explicit sequence 8[[0, 1]][[0, 1, 2]]Failed
explicit sequence 9[[1]][[1]]Passed
explicit sequence 10[[1, 2]][[1, 2]]Passed
explicit sequence 11[[0, 1, 2]][[0, 1, 2]]Passed

SHA-256 / a34556cd469e91dbe3b29f0c5d4260a98f4e5555916b344dc9735157477d79dc

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))
    out=[]
    for cmd in commands:
        source,kernel,mode,iterations=cmd
        source=set(source)&full
        kernel=set(kernel)
        def dilate(s): return {x for x in full if any(x-k in s for k in kernel)}
        def erode(s): return {x for x in full if kernel and all(x+k in s for k in kernel)}
        result=set(source)
        for _ in range(max(0,iterations)):
            prior=set(result)
            if mode=='dilate': result=dilate(prior)
            elif mode=='erode': result=erode(prior)
            elif mode=='open': result=dilate(erode(prior))
            elif mode=='close': result=erode(dilate(prior))
            elif mode=='gradient': result=dilate(prior)-erode(prior)
            elif mode=='inner': result=prior-erode(prior)
            else: result=dilate(prior)-prior
        out.append(sorted(result))
    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([[[1], [0, 1], 'dilate', 1]], 4), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 4), [[1, 2]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 4), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 4), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 4), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 4), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 4), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 4), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 4), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 4), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 4), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 4), [[0, 1, 2]])
if N == 2:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 5), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 5), [[1, 2, 3]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 5), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 5), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 5), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 5), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 5), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 5), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 5), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 5), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 5), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 5), [[0, 1, 2]])
if N == 3:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 6), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 6), [[1, 2, 3, 4]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 6), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 6), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 6), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 6), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 6), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 6), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 6), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 6), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 6), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 6), [[0, 1, 2]])
if N == 4:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 7), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 7), [[1, 2, 3, 4, 5]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 7), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 7), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 7), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 7), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 7), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 7), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 7), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 7), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 7), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 7), [[0, 1, 2]])
if N == 5:
    check('explicit sequence 0', solve([[[1], [0, 1], 'dilate', 1]], 8), [[1, 2]])
    check('explicit sequence 1', solve([[[0, 1, 2, 3, 4, 5, 6, 7], [-1, 0, 1], 'erode', 1]], 8), [[1, 2, 3, 4, 5, 6]])
    check('explicit sequence 2', solve([[[1], [], 'erode', 1]], 8), [[]])
    check('explicit sequence 3', solve([[[1], [0, 1], 'open', 1]], 8), [[]])
    check('explicit sequence 4', solve([[[0, 2], [0, 1], 'close', 1]], 8), [[0, 1, 2]])
    check('explicit sequence 5', solve([[[0, 1, 2], [0, 1], 'gradient', 1]], 8), [[2, 3]])
    check('explicit sequence 6', solve([[[0, 1, 2], [0, 1], 'inner', 1]], 8), [[2]])
    check('explicit sequence 7', solve([[[1], [0, 1], 'outer', 1]], 8), [[2]])
    check('explicit sequence 8', solve([[[0], [0, 1], 'dilate', 2]], 8), [[0, 1, 2]])
    check('explicit sequence 9', solve([[[1], [0, 1], 'dilate', 0]], 8), [[1]])
    check('explicit sequence 10', solve([[[2], [-1, 0], 'dilate', 1]], 8), [[1, 2]])
    check('explicit sequence 11', solve([[[0, 1, 2], [0, 1], 'open', 1]], 8), [[0, 1, 2]])
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 fixtureActualExpectedOutcome
explicit sequence 0[[1, 2]][[1, 2]]Passed
explicit sequence 1[[1, 2]][[1, 2]]Passed
explicit sequence 2[[]][[]]Passed
explicit sequence 3[[]][[]]Passed
explicit sequence 4[[0, 1, 2]][[0, 1, 2]]Passed
explicit sequence 5[[2, 3]][[2, 3]]Passed
explicit sequence 6[[2]][[2]]Passed
explicit sequence 7[[2]][[2]]Passed
explicit sequence 8[[0, 1, 2]][[0, 1, 2]]Passed
explicit sequence 9[[1]][[1]]Passed
explicit sequence 10[[1, 2]][[1, 2]]Passed
explicit sequence 11[[0, 1, 2]][[0, 1, 2]]Passed

SHA-256 / 8a2613ae3697d095c1bd08bfb42b0127397ecaa5322af6aaa2cd68387f4f6171

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:13.821776+00:00.

Case digest / e3898ab4bbb9afd1915af09df1bb5744f2c6dcaa40330b16db0843c9a2fbde92