FAILURE MAP
← Case archive

FA-51306 / Raster clipping / Open access

Stroke component clip union: gap end caps · case 01

A visible segment before a dash gap does not receive its end cap.

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

ROOT CAUSE

A visible segment before a dash gap does not receive its end cap.

VERIFIED REPAIR

Apply the documented state transition at gap end 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 final gap leaves earlier 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 not before: coverage.update(start)
            if i==count-1: 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 fixtureActualExpectedOutcome
explicit sequence 0[[]][[]]Passed
explicit sequence 1[[0, 1]][[0, 1]]Passed
explicit sequence 2[[1]][[1]]Passed
explicit sequence 3[[0, 1, 3]][[0, 1]]Failed
explicit sequence 4[[0, 1, 2, 3]][[0, 1, 2, 3]]Passed
explicit sequence 5[[0]][[0, 1]]Failed
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 / 05497b381e306e92a8bf70b15738cd8f63ee9c4a67d7a2f31bb24f5f15e90238

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: coverage.update(start)
            if not after and i>=count-2: 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 fixtureActualExpectedOutcome
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]][[0, 1]]Failed
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 / abf1bbaa236dc31d718bd22d0310de9896cd4c0f73b143a3372f2af92ab0dd32

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

Case digest / ef1d4623d6354a6bb7a9d89b22156eb8d268267a9cf823a2a1d7ab076955daa3