FAILURE MAP
← Case archive

FA-51341 / Raster clipping / Open access

Opaque occlusion clip: clip before occlusion · case 01

Opaque samples outside a draw clip occlude backgrounds.

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

ROOT CAUSE

Opaque samples outside a draw clip occlude backgrounds.

VERIFIED REPAIR

Apply the documented state transition at clip before occlusion. Draws are supplied back to front as ID, coverage set, opaque flag, clip set and sample-write-enable set. Visibility traverses front to back, subtracting only front opaque written samples. Transparent draws remain visible but do not occlude. Return every draw in original order, including empty visibility, labeled by ID. Repeated IDs are distinct draws. All coverage is finite-target bounded.

Unsuccessful approach: Treating an empty draw clip as absent exposes and occludes the whole primitive.

Case contract

Draws are supplied back to front as ID, coverage set, opaque flag, clip set and sample-write-enable set. Visibility traverses front to back, subtracting only front opaque written samples. Transparent draws remain visible but do not occlude. Return every draw in original order, including empty visibility, labeled by ID. Repeated IDs are distinct draws. All coverage is finite-target bounded.

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 draws in commands:
        occluded=set()
        visible=[]
        for key,coverage,opaque,clip,writes in reversed(draws):
            effective=set(coverage)&set(writes)&full
            remaining=effective-occluded
            visible.append([key,sorted(remaining)])
            if opaque: occluded |= effective
        out.append(list(reversed(visible)))
    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([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 4), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 4), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 4), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 4), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 4), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 4), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 4), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 4), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 4), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 4), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 4), [[['a', [0, 1, 2, 3]]]])
if N == 2:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 5), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 5), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 5), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 5), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 5), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 5), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 5), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 5), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 5), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 5), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 5), [[['a', [0, 1, 2, 3, 4]]]])
if N == 3:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 6), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 6), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 6), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 6), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 6), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 6), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 6), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 6), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 6), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 6), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 6), [[['a', [0, 1, 2, 3, 4, 5]]]])
if N == 4:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 7), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 7), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 7), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 7), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 7), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 7), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 7), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 7), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 7), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 7), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 7), [[['a', [0, 1, 2, 3, 4, 5, 6]]]])
if N == 5:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 8), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 8), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 8), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 8), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 8), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 8), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 8), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 8), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 8), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 8), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 8), [[['a', [0, 1, 2, 3, 4, 5, 6, 7]]]])
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[[['back', [0]], ['front', [1]]]][[['back', [0]], ['front', [1]]]]Passed
explicit sequence 1[[['back', [0, 1]], ['front', [0, 1]]]][[['back', [0, 1]], ['front', [0, 1]]]]Passed
explicit sequence 2[[['back', []], ['front', [0, 1]]]][[['back', [1]], ['front', [0]]]]Failed
explicit sequence 3[[['back', [1]], ['front', [0]]]][[['back', [1]], ['front', [0]]]]Passed
explicit sequence 4[[['back', [0]], ['front', [1]]]][[['back', [0]], ['front', [1]]]]Passed
explicit sequence 5[[['back', [2]], ['middle', [0]], ['front', [1]]]][[['back', [2]], ['middle', [0]], ['front', [1]]]]Passed
explicit sequence 6[[['z', [0]], ['a', [1]]]][[['z', [0]], ['a', [1]]]]Passed
explicit sequence 7[[['a', [0]], ['b', [1]]]][[['a', []], ['b', [1]]]]Failed
explicit sequence 8[[['same', [0]], ['same', [1]]]][[['same', [0]], ['same', [1]]]]Passed
explicit sequence 9[[['a', []]]][[['a', []]]]Passed
explicit sequence 10[[['a', [0, 1, 2, 3]]]][[['a', [0, 1, 2, 3]]]]Passed

SHA-256 / d9271c71f5cb04478d76839da356f3ddf25109c81a80dcbdffc7fd0ab9203c56

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 draws in commands:
        occluded=set()
        visible=[]
        for key,coverage,opaque,clip,writes in reversed(draws):
            effective=set(coverage)&(set(clip) or full)&set(writes)&full
            remaining=effective-occluded
            visible.append([key,sorted(remaining)])
            if opaque: occluded |= effective
        out.append(list(reversed(visible)))
    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([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 4), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 4), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 4), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 4), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 4), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 4), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 4), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 4), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 4), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 4), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 4), [[['a', [0, 1, 2, 3]]]])
if N == 2:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 5), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 5), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 5), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 5), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 5), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 5), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 5), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 5), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 5), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 5), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 5), [[['a', [0, 1, 2, 3, 4]]]])
if N == 3:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 6), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 6), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 6), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 6), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 6), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 6), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 6), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 6), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 6), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 6), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 6), [[['a', [0, 1, 2, 3, 4, 5]]]])
if N == 4:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 7), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 7), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 7), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 7), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 7), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 7), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 7), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 7), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 7), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 7), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 7), [[['a', [0, 1, 2, 3, 4, 5, 6]]]])
if N == 5:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 8), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 8), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 8), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 8), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 8), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 8), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 8), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 8), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 8), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 8), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 8), [[['a', [0, 1, 2, 3, 4, 5, 6, 7]]]])
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[[['back', [0]], ['front', [1]]]][[['back', [0]], ['front', [1]]]]Passed
explicit sequence 1[[['back', [0, 1]], ['front', [0, 1]]]][[['back', [0, 1]], ['front', [0, 1]]]]Passed
explicit sequence 2[[['back', [1]], ['front', [0]]]][[['back', [1]], ['front', [0]]]]Passed
explicit sequence 3[[['back', [1]], ['front', [0]]]][[['back', [1]], ['front', [0]]]]Passed
explicit sequence 4[[['back', [0]], ['front', [1]]]][[['back', [0]], ['front', [1]]]]Passed
explicit sequence 5[[['back', [2]], ['middle', [0]], ['front', [1]]]][[['back', [2]], ['middle', [0]], ['front', [1]]]]Passed
explicit sequence 6[[['z', [0]], ['a', [1]]]][[['z', [0]], ['a', [1]]]]Passed
explicit sequence 7[[['a', [0]], ['b', [1]]]][[['a', []], ['b', [1]]]]Failed
explicit sequence 8[[['same', [0]], ['same', [1]]]][[['same', [0]], ['same', [1]]]]Passed
explicit sequence 9[[['a', []]]][[['a', []]]]Passed
explicit sequence 10[[['a', [0, 1, 2, 3]]]][[['a', [0, 1, 2, 3]]]]Passed

SHA-256 / 368c80cb4f5aa3be55b48f34d9059c28e3e2e908db7bc9075da47fec18fb3385

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 draws in commands:
        occluded=set()
        visible=[]
        for key,coverage,opaque,clip,writes in reversed(draws):
            effective=set(coverage)&set(clip)&set(writes)&full
            remaining=effective-occluded
            visible.append([key,sorted(remaining)])
            if opaque: occluded |= effective
        out.append(list(reversed(visible)))
    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([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 4), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 4), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 4), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 4), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 4), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 4), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 4), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 4), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 4), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 4), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 4), [[['a', [0, 1, 2, 3]]]])
if N == 2:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 5), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 5), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 5), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 5), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 5), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 5), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 5), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 5), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 5), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 5), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 5), [[['a', [0, 1, 2, 3, 4]]]])
if N == 3:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 6), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 6), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 6), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 6), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 6), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 6), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 6), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 6), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 6), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 6), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 6), [[['a', [0, 1, 2, 3, 4, 5]]]])
if N == 4:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 7), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 7), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 7), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 7), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 7), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 7), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 7), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 7), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 7), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 7), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 7), [[['a', [0, 1, 2, 3, 4, 5, 6]]]])
if N == 5:
    check('explicit sequence 0', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [1], True, [1], [1]]]], 8), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 1', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], False, [0, 1], [0, 1]]]], 8), [[['back', [0, 1]], ['front', [0, 1]]]])
    check('explicit sequence 2', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0], [0, 1]]]], 8), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 3', solve([[['back', [0, 1], True, [0, 1], [0, 1]], ['front', [0, 1], True, [0, 1], [0]]]], 8), [[['back', [1]], ['front', [0]]]])
    check('explicit sequence 4', solve([[['back', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 8), [[['back', [0]], ['front', [1]]]])
    check('explicit sequence 5', solve([[['back', [0, 1, 2], True, [0, 1, 2], [0, 1, 2]], ['middle', [0], True, [0], [0]], ['front', [1], True, [1], [1]]]], 8), [[['back', [2]], ['middle', [0]], ['front', [1]]]])
    check('explicit sequence 6', solve([[['z', [0], False, [0], [0]], ['a', [1], False, [1], [1]]]], 8), [[['z', [0]], ['a', [1]]]])
    check('explicit sequence 7', solve([[['a', [0], False, [], [0]], ['b', [1], True, [1], [1]]]], 8), [[['a', []], ['b', [1]]]])
    check('explicit sequence 8', solve([[['same', [0], False, [0], [0]], ['same', [1], False, [1], [1]]]], 8), [[['same', [0]], ['same', [1]]]])
    check('explicit sequence 9', solve([[['a', [0], True, [0], []]]], 8), [[['a', []]]])
    check('explicit sequence 10', solve([[['a', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], True, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]], 8), [[['a', [0, 1, 2, 3, 4, 5, 6, 7]]]])
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[[['back', [0]], ['front', [1]]]][[['back', [0]], ['front', [1]]]]Passed
explicit sequence 1[[['back', [0, 1]], ['front', [0, 1]]]][[['back', [0, 1]], ['front', [0, 1]]]]Passed
explicit sequence 2[[['back', [1]], ['front', [0]]]][[['back', [1]], ['front', [0]]]]Passed
explicit sequence 3[[['back', [1]], ['front', [0]]]][[['back', [1]], ['front', [0]]]]Passed
explicit sequence 4[[['back', [0]], ['front', [1]]]][[['back', [0]], ['front', [1]]]]Passed
explicit sequence 5[[['back', [2]], ['middle', [0]], ['front', [1]]]][[['back', [2]], ['middle', [0]], ['front', [1]]]]Passed
explicit sequence 6[[['z', [0]], ['a', [1]]]][[['z', [0]], ['a', [1]]]]Passed
explicit sequence 7[[['a', []], ['b', [1]]]][[['a', []], ['b', [1]]]]Passed
explicit sequence 8[[['same', [0]], ['same', [1]]]][[['same', [0]], ['same', [1]]]]Passed
explicit sequence 9[[['a', []]]][[['a', []]]]Passed
explicit sequence 10[[['a', [0, 1, 2, 3]]]][[['a', [0, 1, 2, 3]]]]Passed

SHA-256 / 6169de50c1291df6dc0b60fa03bafcdbcbf6458d702f440d60d51429b6a89c9a

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

Case digest / ab48b1bdfa12db2dad9e27318eef18df137ec13934f8158e2aced46ba050230b