FA-10776 / Rendering state / Open access
Primitive restart index separation · case 01
The restart sentinel is consumed as an ordinary vertex index.
ROOT CAUSE
The restart sentinel is consumed as an ordinary vertex index.
VERIFIED REPAIR
Use the stage contract: Split an index buffer into nonempty primitive runs at a configured restart sentinel. Restart markers are not vertices; consecutive markers produce no empty runs.
Unsuccessful approach: Deleting sentinels without splitting joins otherwise independent primitives.
Case contract
Split an index buffer into nonempty primitive runs at a configured restart sentinel. Restart markers are not vertices; consecutive markers produce no empty runs.
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(indices, restart):
return [list(indices)] if indices else []
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve(*([0, 1, 99, 2, 3], 99)), [[0, 1], [2, 3]])
check('fixture 2', solve(*([99, 0, 99, 99], 99)), [[0]])
check('fixture 3', solve(*([], 99)), [])
check('fixture 4', solve(*([0, 1], 99)), [[0, 1]])
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 |
|---|---|---|---|
| fixture 1 | [[0, 1, 99, 2, 3]] | [[0, 1], [2, 3]] | Failed |
| fixture 2 | [[99, 0, 99, 99]] | [[0]] | Failed |
| fixture 3 | [] | [] | Passed |
| fixture 4 | [[0, 1]] | [[0, 1]] | Passed |
SHA-256 / fbc79fc7bb61e00987e1c2a4cad1dda3c3b473510ca4e0b9667ea33dd8df8b3e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(indices, restart):
return [[x for x in indices if x!=restart]] if indices else []
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve(*([0, 1, 99, 2, 3], 99)), [[0, 1], [2, 3]])
check('fixture 2', solve(*([99, 0, 99, 99], 99)), [[0]])
check('fixture 3', solve(*([], 99)), [])
check('fixture 4', solve(*([0, 1], 99)), [[0, 1]])
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 |
|---|---|---|---|
| fixture 1 | [[0, 1, 2, 3]] | [[0, 1], [2, 3]] | Failed |
| fixture 2 | [[0]] | [[0]] | Passed |
| fixture 3 | [] | [] | Passed |
| fixture 4 | [[0, 1]] | [[0, 1]] | Passed |
SHA-256 / 0f81e785c06416a5ad2b52bedd6194ab37ad0bb605ea6e7c408eda23a1d7f70a
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(indices, restart):
out=[]
current=[]
for index in indices:
if index==restart:
if current: out.append(current)
current=[]
else: current.append(index)
if current: out.append(current)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve(*([0, 1, 99, 2, 3], 99)), [[0, 1], [2, 3]])
check('fixture 2', solve(*([99, 0, 99, 99], 99)), [[0]])
check('fixture 3', solve(*([], 99)), [])
check('fixture 4', solve(*([0, 1], 99)), [[0, 1]])
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 |
|---|---|---|---|
| fixture 1 | [[0, 1], [2, 3]] | [[0, 1], [2, 3]] | Passed |
| fixture 2 | [[0]] | [[0]] | Passed |
| fixture 3 | [] | [] | Passed |
| fixture 4 | [[0, 1]] | [[0, 1]] | Passed |
SHA-256 / f5bfc410872ac3ddbc170bdc183e1be668faaa89fba64cc3a2ae942c5c203962
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:42.089309+00:00.
Case digest / f850f1975329ad00916f20effb8cfe9174fbf52b123c6aa542612513c2180b0e