FAILURE MAP
← Case archive

FA-51226 / Raster clipping / Open access

Dashed stroke clip phase: solid empty · case 01

An empty dash array is interpreted as an entirely off stroke.

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

ROOT CAUSE

An empty dash array is interpreted as an entirely off stroke.

VERIFIED REPAIR

Apply the documented state transition at solid empty. A logical stroke has positive integer dash lengths; an odd-length dash array is duplicated to preserve on/off parity over cycles. Each draw advances path phase through all samples, including clipped samples. Move begins a new subpath at the configured offset. Changing offset affects the next move, while changing pattern resets phase immediately. Empty pattern means solid. Draw reports visible on-sample positions within that segment.

Unsuccessful approach: Special-casing phase zero makes only the initial solid segment visible.

Case contract

A logical stroke has positive integer dash lengths; an odd-length dash array is duplicated to preserve on/off parity over cycles. Each draw advances path phase through all samples, including clipped samples. Move begins a new subpath at the configured offset. Changing offset affects the next move, while changing pattern resets phase immediately. Empty pattern means solid. Draw reports visible on-sample positions within that segment.

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):
    pattern=[]
    offset=0
    phase=0
    out=[]
    for cmd in commands:
        op=cmd[0]
        if op=='pattern':
            pattern=list(cmd[1])
            if len(pattern)%2: pattern=pattern*2
            phase=offset
        elif op=='offset': offset=cmd[1]
        elif op=='move': phase=offset
        elif op=='advance': phase+=cmd[1]
        elif op=='draw':
            length,visible=cmd[1],set(cmd[2])
            covered=[]
            for i in range(length):
                on=False
                if pattern:
                    position=(phase+i)%sum(pattern)
                    dash=0
                    while position>=pattern[dash]:
                        position-=pattern[dash]
                        dash+=1
                    on=dash%2==0
                if on and i in visible and 0<=i<size: covered.append(i)
            phase+=length
            out.append(covered)
    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([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 4), [[0, 2]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 4), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 4), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 4), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 4), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 4), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 4), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 4), [[0, 1, 2, 3], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 4), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 4), [[]])
if N == 2:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 5), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 5), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 5), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 5), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 5), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 5), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 5), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 5), [[0, 1, 2, 3, 4], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 5), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 5), [[]])
if N == 3:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 6), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 6), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 6), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 6), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 6), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 6), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 6), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 6), [[0, 1, 2, 3, 4, 5], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 6), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 6), [[]])
if N == 4:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 7), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 7), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 7), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 7), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 7), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 7), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 7), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 7), [[0, 1, 2, 3, 4, 5, 6], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 7), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 7), [[]])
if N == 5:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 8), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 8), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 8), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 8), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 8), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 8), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 8), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 8), [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 8), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 8), [[]])
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[[0, 2]][[0, 2]]Passed
explicit sequence 1[[1, 2]][[1, 2]]Passed
explicit sequence 2[[0], [0, 2]][[0], [0, 2]]Passed
explicit sequence 3[[0], [0]][[0], [0]]Passed
explicit sequence 4[[0], [2]][[0], [2]]Passed
explicit sequence 5[[0], [1, 2]][[0], [1, 2]]Passed
explicit sequence 6[[0, 3]][[0, 3]]Passed
explicit sequence 7[[], []][[0, 1, 2, 3], [0, 1]]Failed
explicit sequence 8[[2]][[2]]Passed
explicit sequence 9[[]][[]]Passed

SHA-256 / 3350387432ccea18a6fe7b7b5f77b39eb6fbe66fcf5dda9d728bf4a401fc9ee7

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(commands, size):
    pattern=[]
    offset=0
    phase=0
    out=[]
    for cmd in commands:
        op=cmd[0]
        if op=='pattern':
            pattern=list(cmd[1])
            if len(pattern)%2: pattern=pattern*2
            phase=offset
        elif op=='offset': offset=cmd[1]
        elif op=='move': phase=offset
        elif op=='advance': phase+=cmd[1]
        elif op=='draw':
            length,visible=cmd[1],set(cmd[2])
            covered=[]
            for i in range(length):
                on=phase==0
                if pattern:
                    position=(phase+i)%sum(pattern)
                    dash=0
                    while position>=pattern[dash]:
                        position-=pattern[dash]
                        dash+=1
                    on=dash%2==0
                if on and i in visible and 0<=i<size: covered.append(i)
            phase+=length
            out.append(covered)
    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([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 4), [[0, 2]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 4), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 4), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 4), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 4), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 4), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 4), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 4), [[0, 1, 2, 3], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 4), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 4), [[]])
if N == 2:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 5), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 5), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 5), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 5), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 5), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 5), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 5), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 5), [[0, 1, 2, 3, 4], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 5), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 5), [[]])
if N == 3:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 6), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 6), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 6), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 6), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 6), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 6), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 6), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 6), [[0, 1, 2, 3, 4, 5], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 6), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 6), [[]])
if N == 4:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 7), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 7), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 7), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 7), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 7), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 7), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 7), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 7), [[0, 1, 2, 3, 4, 5, 6], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 7), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 7), [[]])
if N == 5:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 8), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 8), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 8), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 8), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 8), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 8), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 8), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 8), [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 8), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 8), [[]])
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[[0, 2]][[0, 2]]Passed
explicit sequence 1[[1, 2]][[1, 2]]Passed
explicit sequence 2[[0], [0, 2]][[0], [0, 2]]Passed
explicit sequence 3[[0], [0]][[0], [0]]Passed
explicit sequence 4[[0], [2]][[0], [2]]Passed
explicit sequence 5[[0], [1, 2]][[0], [1, 2]]Passed
explicit sequence 6[[0, 3]][[0, 3]]Passed
explicit sequence 7[[0, 1, 2, 3], []][[0, 1, 2, 3], [0, 1]]Failed
explicit sequence 8[[2]][[2]]Passed
explicit sequence 9[[]][[]]Passed

SHA-256 / 4825a2724771eeb14efdd37460a59a15fb6fe0059db5024257898f61b648ca34

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(commands, size):
    pattern=[]
    offset=0
    phase=0
    out=[]
    for cmd in commands:
        op=cmd[0]
        if op=='pattern':
            pattern=list(cmd[1])
            if len(pattern)%2: pattern=pattern*2
            phase=offset
        elif op=='offset': offset=cmd[1]
        elif op=='move': phase=offset
        elif op=='advance': phase+=cmd[1]
        elif op=='draw':
            length,visible=cmd[1],set(cmd[2])
            covered=[]
            for i in range(length):
                on=True
                if pattern:
                    position=(phase+i)%sum(pattern)
                    dash=0
                    while position>=pattern[dash]:
                        position-=pattern[dash]
                        dash+=1
                    on=dash%2==0
                if on and i in visible and 0<=i<size: covered.append(i)
            phase+=length
            out.append(covered)
    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([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 4), [[0, 2]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 4), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 4), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 4), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 4), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 4), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 4), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 4), [[0, 1, 2, 3], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 4), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 4), [[]])
if N == 2:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 5), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 5), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 5), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 5), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 5), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 5), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 5), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 5), [[0, 1, 2, 3, 4], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 5), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 5), [[]])
if N == 3:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 6), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 6), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 6), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 6), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 6), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 6), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 6), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 6), [[0, 1, 2, 3, 4, 5], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 6), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 6), [[]])
if N == 4:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 7), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 7), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 7), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 7), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 7), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 7), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 7), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 7), [[0, 1, 2, 3, 4, 5, 6], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 7), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 7), [[]])
if N == 5:
    check('explicit sequence 0', solve([['pattern', [1, 1, 1]], ['draw', 6, [0, 1, 2, 3, 4, 5]]], 8), [[0, 2, 4]])
    check('explicit sequence 1', solve([['offset', -1], ['pattern', [2, 1]], ['draw', 4, [0, 1, 2, 3]]], 8), [[1, 2]])
    check('explicit sequence 2', solve([['pattern', [2, 1]], ['draw', 1, [0]], ['offset', 2], ['draw', 3, [0, 1, 2]]], 8), [[0], [0, 2]])
    check('explicit sequence 3', solve([['offset', 1], ['pattern', [2, 2]], ['draw', 2, [0, 1]], ['move'], ['draw', 3, [0, 1, 2]]], 8), [[0], [0]])
    check('explicit sequence 4', solve([['pattern', [2, 2]], ['draw', 1, [0]], ['advance', 1], ['draw', 3, [0, 1, 2]]], 8), [[0], [2]])
    check('explicit sequence 5', solve([['pattern', [2, 2]], ['draw', 3, [0]], ['draw', 3, [0, 1, 2]]], 8), [[0], [1, 2]])
    check('explicit sequence 6', solve([['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 8), [[0, 3]])
    check('explicit sequence 7', solve([['pattern', []], ['draw', 10, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ['draw', 2, [0, 1]]], 8), [[0, 1, 2, 3, 4, 5, 6, 7], [0, 1]])
    check('explicit sequence 8', solve([['offset', 1], ['pattern', [1, 2]], ['draw', 4, [0, 1, 2, 3]]], 8), [[2]])
    check('explicit sequence 9', solve([['pattern', [1, 1]], ['draw', 0, []]], 8), [[]])
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[[0, 2]][[0, 2]]Passed
explicit sequence 1[[1, 2]][[1, 2]]Passed
explicit sequence 2[[0], [0, 2]][[0], [0, 2]]Passed
explicit sequence 3[[0], [0]][[0], [0]]Passed
explicit sequence 4[[0], [2]][[0], [2]]Passed
explicit sequence 5[[0], [1, 2]][[0], [1, 2]]Passed
explicit sequence 6[[0, 3]][[0, 3]]Passed
explicit sequence 7[[0, 1, 2, 3], [0, 1]][[0, 1, 2, 3], [0, 1]]Passed
explicit sequence 8[[2]][[2]]Passed
explicit sequence 9[[]][[]]Passed

SHA-256 / afc394db261ff38e50d634ae008da25e6012df62f27e4cd61ac78e4d04b0d045

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

Case digest / 9c9a89d3500a0deda96a77a5b73a14944d7236ebfc2fe792c7159f945a5969eb