FA-51301 / Raster clipping / Open access
Stroke component clip union: gap start caps · case 01
A visible segment after a dash gap does not receive its start cap.
ROOT CAUSE
A visible segment after a dash gap does not receive its start cap.
VERIFIED REPAIR
Apply the documented state transition at gap start caps. Segments carry precomputed body, start-cap, end-cap and following-join sample sets plus an active flag. Active adjacent segments share a join and suppress interior caps. Inactive segments create dash gaps; each active component receives caps at its gap endpoints. A closed path connects the last and first segments. Empty bodies may still have cap coverage. Clip the complete union to the requested mask and target.
Unsuccessful approach: Repairing only the first gap leaves later components uncapped.
Case contract
Segments carry precomputed body, start-cap, end-cap and following-join sample sets plus an active flag. Active adjacent segments share a join and suppress interior caps. Inactive segments create dash gaps; each active component receives caps at its gap endpoints. A closed path connects the last and first segments. Empty bodies may still have cap coverage. Clip the complete union to the requested mask and target.
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 segments,closed,clip in commands:
coverage=set()
count=len(segments)
for i,(body,start,end,join,active) in enumerate(segments):
if not active: continue
before=segments[i-1][4] if i>0 else (segments[-1][4] if closed and count else False)
after=segments[i+1][4] if i+1<count else (segments[0][4] if closed and count else False)
coverage.update(body)
if i==0: coverage.update(start)
if not after: coverage.update(end)
if after: coverage.update(join)
out.append(sorted(coverage & set(clip) & full))
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([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 4), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 4), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 4), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 4), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 4), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 4), [[0, 1, 2, 3]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 3]])
if N == 2:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 5), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 5), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 5), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 5), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 5), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 5), [[0, 1, 2, 3, 4]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 3]])
if N == 3:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 6), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 6), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 6), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 6), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 6), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 6), [[0, 1, 2, 3, 4, 5]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 3]])
if N == 4:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 7), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 7), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 7), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 7), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 7), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 7), [[0, 1, 2, 3, 4, 5, 6]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 3]])
if N == 5:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 8), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 8), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 8), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 8), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 8), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 3]])
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 | [[]] | [[]] | Passed |
| explicit sequence 1 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 2 | [[1]] | [[1]] | Passed |
| explicit sequence 3 | [[0, 1, 2]] | [[0, 1]] | Failed |
| explicit sequence 4 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
| explicit sequence 5 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 6 | [[0, 1, 2]] | [[0, 1, 2]] | Passed |
| explicit sequence 7 | [[0, 1, 2]] | [[0, 1, 2]] | Passed |
| explicit sequence 8 | [[0]] | [[0]] | Passed |
| explicit sequence 9 | [[0]] | [[0]] | Passed |
| explicit sequence 10 | [[]] | [[]] | Passed |
| explicit sequence 11 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
| explicit sequence 12 | [[0, 1]] | [[0, 1, 3]] | Failed |
| explicit sequence 13 | [[0, 1, 3]] | [[0, 1, 3]] | Passed |
SHA-256 / 3d8c2247b96c8b59bf351ce5363dd2ee4d04254b258bd0401d023544b4335cbd
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 segments,closed,clip in commands:
coverage=set()
count=len(segments)
for i,(body,start,end,join,active) in enumerate(segments):
if not active: continue
before=segments[i-1][4] if i>0 else (segments[-1][4] if closed and count else False)
after=segments[i+1][4] if i+1<count else (segments[0][4] if closed and count else False)
coverage.update(body)
if not before and i<=1: coverage.update(start)
if not after: coverage.update(end)
if after: coverage.update(join)
out.append(sorted(coverage & set(clip) & full))
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([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 4), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 4), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 4), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 4), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 4), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 4), [[0, 1, 2, 3]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 3]])
if N == 2:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 5), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 5), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 5), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 5), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 5), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 5), [[0, 1, 2, 3, 4]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 3]])
if N == 3:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 6), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 6), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 6), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 6), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 6), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 6), [[0, 1, 2, 3, 4, 5]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 3]])
if N == 4:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 7), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 7), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 7), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 7), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 7), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 7), [[0, 1, 2, 3, 4, 5, 6]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 3]])
if N == 5:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 8), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 8), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 8), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 8), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 8), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 3]])
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 | [[]] | [[]] | Passed |
| explicit sequence 1 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 2 | [[1]] | [[1]] | Passed |
| explicit sequence 3 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 4 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
| explicit sequence 5 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 6 | [[0, 1, 2]] | [[0, 1, 2]] | Passed |
| explicit sequence 7 | [[0, 1, 2]] | [[0, 1, 2]] | Passed |
| explicit sequence 8 | [[0]] | [[0]] | Passed |
| explicit sequence 9 | [[0]] | [[0]] | Passed |
| explicit sequence 10 | [[]] | [[]] | Passed |
| explicit sequence 11 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
| explicit sequence 12 | [[0, 1]] | [[0, 1, 3]] | Failed |
| explicit sequence 13 | [[0, 1, 3]] | [[0, 1, 3]] | Passed |
SHA-256 / b34ad8314b6cdf1a1a8abadad1efda2d3e946de60eb3065c4a962369984a6840
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 segments,closed,clip in commands:
coverage=set()
count=len(segments)
for i,(body,start,end,join,active) in enumerate(segments):
if not active: continue
before=segments[i-1][4] if i>0 else (segments[-1][4] if closed and count else False)
after=segments[i+1][4] if i+1<count else (segments[0][4] if closed and count else False)
coverage.update(body)
if not before: coverage.update(start)
if not after: coverage.update(end)
if after: coverage.update(join)
out.append(sorted(coverage & set(clip) & full))
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([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 4), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 4), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 4), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 4), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 4), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 4), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 4), [[0, 1, 2, 3]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 4), [[0, 1, 3]])
if N == 2:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 5), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 5), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 5), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 5), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 5), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 5), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 5), [[0, 1, 2, 3, 4]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 5), [[0, 1, 3]])
if N == 3:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 6), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 6), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 6), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 6), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 6), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 6), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 6), [[0, 1, 2, 3, 4, 5]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 6), [[0, 1, 3]])
if N == 4:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 7), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 7), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 7), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 7), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 7), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 7), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 7), [[0, 1, 2, 3, 4, 5, 6]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 7), [[0, 1, 3]])
if N == 5:
check('explicit sequence 0', solve([[[[[0], [1], [2], [3], False]], False, [0, 1, 2, 3]]], 8), [[]])
check('explicit sequence 1', solve([[[[[], [0], [1], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 2', solve([[[[[], [], [1], [], True]], False, [0, 1, 2, 3]]], 8), [[1]])
check('explicit sequence 3', solve([[[[[0], [2], [3], [1], True], [[1], [2], [3], [0], True]], True, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 4', solve([[[[[0], [1], [2], [3], True], [[], [], [], [], False], [[1], [2], [3], [0], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2, 3]])
check('explicit sequence 5', solve([[[[[0], [], [1], [2], True], [[], [], [], [], False], [[], [], [], [], False], [[], [], [], [], False]], False, [0, 1, 2, 3]]], 8), [[0, 1]])
check('explicit sequence 6', solve([[[[[0], [1], [2], [3], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2]])
check('explicit sequence 7', solve([[[[[0], [], [], [2], True], [[1], [], [], [3], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 2]])
check('explicit sequence 8', solve([[[[[0], [], [], [2], True], [[], [], [], [], False]], True, [0, 1, 2, 3]]], 8), [[0]])
check('explicit sequence 9', solve([[[[[0, 1], [2], [3], [], True]], False, [0]]], 8), [[0]])
check('explicit sequence 10', solve([[[[[0, 1], [2], [3], [], True]], False, []]], 8), [[]])
check('explicit sequence 11', solve([[[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [], [], [], True]], False, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]], 8), [[0, 1, 2, 3, 4, 5, 6, 7]])
check('explicit sequence 12', solve([[[[[0], [], [], [], True], [[], [], [], [], False], [[1], [3], [], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 3]])
check('explicit sequence 13', solve([[[[[0], [1], [2], [3], True], [[0], [], [], [], True]], False, [0, 1, 2, 3]]], 8), [[0, 1, 3]])
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 | [[]] | [[]] | Passed |
| explicit sequence 1 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 2 | [[1]] | [[1]] | Passed |
| explicit sequence 3 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 4 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
| explicit sequence 5 | [[0, 1]] | [[0, 1]] | Passed |
| explicit sequence 6 | [[0, 1, 2]] | [[0, 1, 2]] | Passed |
| explicit sequence 7 | [[0, 1, 2]] | [[0, 1, 2]] | Passed |
| explicit sequence 8 | [[0]] | [[0]] | Passed |
| explicit sequence 9 | [[0]] | [[0]] | Passed |
| explicit sequence 10 | [[]] | [[]] | Passed |
| explicit sequence 11 | [[0, 1, 2, 3]] | [[0, 1, 2, 3]] | Passed |
| explicit sequence 12 | [[0, 1, 3]] | [[0, 1, 3]] | Passed |
| explicit sequence 13 | [[0, 1, 3]] | [[0, 1, 3]] | Passed |
SHA-256 / 7a2962bac6943b44536b413248d37d985be5868b67a8336b84c607772f76f63f
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:17.575283+00:00.
Case digest / 3a450b3420d1c477d46262d8948640a22ace5786bd0f3bfbfda95fb79a550a95