FA-51181 / Raster clipping / Open access
Dashed stroke clip phase: odd cycle parity · case 01
Odd dash arrays restart with the same on/off parity after each undoubled cycle.
ROOT CAUSE
Odd dash arrays restart with the same on/off parity after each undoubled cycle.
VERIFIED REPAIR
Apply the documented state transition at odd cycle parity. 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: Duplicating only single-entry patterns misses longer odd arrays.
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 False: 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit sequence 0 | [[0, 2, 3]] | [[0, 2]] | Failed |
| 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 / 0bb8f554f5e6d411c05853a37376e53430ec11e2cf3dec9e38e197f7e16953ef
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)==1: 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| explicit sequence 0 | [[0, 2, 3]] | [[0, 2]] | Failed |
| 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 / 2008ffcf9c035b6ba5308fcaf78d6e02a8b17ef4bbdf6095d6b21bbca6b50201
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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.358985+00:00.
Case digest / 39291bd020e4c96453a20cecc4cd05df9c50b79d18ea610482f17ac6b9b8ce43