FAILURE MAP
← Case archive

FA-10721 / Rendering state / Open access

Render target clear selected · case 01

Clearing one framebuffer operation overwrites all attachments.

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

ROOT CAUSE

Clearing one framebuffer operation overwrites all attachments.

VERIFIED REPAIR

Use the stage contract: Clear only selected valid attachment indices in a list of scalar target values; preserve every unselected attachment.

Unsuccessful approach: Clearing only the first selected attachment ignores multiple draw buffers.

Case contract

Clear only selected valid attachment indices in a list of scalar target values; preserve every unselected attachment.

Why this case matters

A deterministic software graphics stage with explicit channel and coordinate conventions; no hardware, device profile or API behavior is inferred.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(targets, selected, color):
    return [color for old in targets]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve(*(['a', 'b', 'c'], [0, 2], 'x')), ['x', 'b', 'x'])
check('fixture 2', solve(*(['a', 'b'], [], 'x')), ['a', 'b'])
check('fixture 3', solve(*(['a', 'b'], [1], 'x')), ['a', 'x'])
check('fixture 4', solve(*([], [], 'x')), [])
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
fixture 1['x', 'x', 'x']['x', 'b', 'x']Failed
fixture 2['x', 'x']['a', 'b']Failed
fixture 3['x', 'x']['a', 'x']Failed
fixture 4[][]Passed

SHA-256 / 441774d8cae522a46c7e790ed04e896fe6c986f3f932c22bd331e4f6097bff62

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(targets, selected, color):
    return [color if i==min(selected) else old for i,old in enumerate(targets)] if selected else list(targets)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve(*(['a', 'b', 'c'], [0, 2], 'x')), ['x', 'b', 'x'])
check('fixture 2', solve(*(['a', 'b'], [], 'x')), ['a', 'b'])
check('fixture 3', solve(*(['a', 'b'], [1], 'x')), ['a', 'x'])
check('fixture 4', solve(*([], [], 'x')), [])
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
fixture 1['x', 'b', 'c']['x', 'b', 'x']Failed
fixture 2['a', 'b']['a', 'b']Passed
fixture 3['a', 'x']['a', 'x']Passed
fixture 4[][]Passed

SHA-256 / 414025da1c07d0f191e2349a0a4db7f2770486c3b7c36824bd0a5ccaa7a86600

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(targets, selected, color):
    return [color if i in selected else old for i,old in enumerate(targets)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve(*(['a', 'b', 'c'], [0, 2], 'x')), ['x', 'b', 'x'])
check('fixture 2', solve(*(['a', 'b'], [], 'x')), ['a', 'b'])
check('fixture 3', solve(*(['a', 'b'], [1], 'x')), ['a', 'x'])
check('fixture 4', solve(*([], [], 'x')), [])
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
fixture 1['x', 'b', 'x']['x', 'b', 'x']Passed
fixture 2['a', 'b']['a', 'b']Passed
fixture 3['a', 'x']['a', 'x']Passed
fixture 4[][]Passed

SHA-256 / 779de8860f60362ab5c3e35c8543dc49ce825a9d9f76ec3a572ef91094b8d438

Verification & scope

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

Case digest / 2c403df6b29aee6ca27e3ced861d4b4fd9996b542f964b3605ed7b4d5306a7b6