FAILURE MAP
← Case archive

FA-80581 / Bidirectional text layout / Open access

Bracket pair identification: stack overflow handling · case 01

Pairs keep being found after the opener stack overflowed.

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

ROOT CAUSE

An overflowing opener is skipped instead of stopping identification.

VERIFIED REPAIR

Stop processing when the stack limit is exceeded.

Unsuccessful approach: Allowing one extra entry delays the stop.

Case contract

Input [text, classes, stack limit]. Only characters of class ON take part. Openers ( [ { are pushed; on overflow of the stack limit stop and keep pairs found so far. A closer searches the stack from the top for its opener; if found it pairs and discards that entry and everything above; otherwise it is ignored. Return pairs sorted by opener.

Why this case matters

Mixed right-to-left and left-to-right text must resolve levels and visual order exactly, or words, numbers and carets land in the wrong place.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    text, classes, limit = x
    OPEN = {'(': ')', '[': ']', '{': '}'}
    CLOSE = {')', ']', '}'}
    stack = []
    pairs = []
    for i, ch in enumerate(text):
        if classes[i] != 'ON':
            continue
        if ch in OPEN:
            if len(stack) >= limit:
                continue
            stack.append((OPEN[ch], i))
        elif ch in CLOSE:
            for k in range(len(stack) - 1, -1, -1):
                if stack[k][0] == ch:
                    pairs.append([stack[k][1], i])
                    del stack[k:]
                    break
    return sorted(pairs)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('regression: stack overflow handling', ['(({{[(a){a)', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'L', 'R'], 4], []), ('regression: stack overflow handling', ['{[)(a([]a({](', ['ON', 'ON', 'ON', 'R', 'L', 'R', 'ON', 'L', 'L', 'L', 'L', 'ON', 'ON'], 2], []), ('regression: stack overflow handling', ['{a[}(((', ['ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON'], 1], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[[(a[(}[[{', ['ON', 'R', 'ON', 'L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], []), ('control layout', ['][}((}(()([', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON'], 3], [[6, 8]])], [('regression: stack overflow handling', ['](](a)(](', ['L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON'], 1], []), ('regression: stack overflow handling', ['{}((}{[}(())(', ['R', 'L', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 2], []), ('regression: stack overflow handling', ['[a[(}](][(){)', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON'], 1], []), ('regression: stack overflow handling', ['{}({a{{(()](}', ['ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 1]]), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('control layout', [')]])([', ['R', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], [])], [('regression: stack overflow handling', ['(][})([{({a]a]', ['ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'ON', 'L', 'R'], 2], [[0, 4]]), ('regression: stack overflow handling', ['{({{{{}a((a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'R', 'L'], 2], []), ('regression: stack overflow handling', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('regression: stack overflow handling', ['(()[{a{[[((}', ['ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'R'], 1], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['a][a', ['L', 'L', 'ON', 'R'], 3], []), ('control layout', ['a))(', ['L', 'L', 'ON', 'L'], 3], [])], [('regression: stack overflow handling', ['[([{{(]]', ['ON', 'ON', 'R', 'R', 'ON', 'ON', 'ON', 'R'], 1], []), ('regression: stack overflow handling', ['{({{{{}a((a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'R', 'L'], 2], []), ('partial-repair probe', ['()}][[a[(({}}{', ['L', 'R', 'R', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], []), ('regression: stack overflow handling', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['][', ['ON', 'ON'], 1], []), ('control layout', [')a}]', ['L', 'R', 'ON', 'ON'], 4], [])], [('regression: stack overflow handling', ['[]([[]a)})[', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 1], [[0, 1]]), ('regression: stack overflow handling', ['[a{a]})]([}', ['ON', 'L', 'ON', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], []), ('regression: stack overflow handling', ['(]{[}', ['ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('partial-repair probe', ['{]a[)][(', ['ON', 'ON', 'R', 'ON', 'ON', 'ON', 'R', 'ON'], 1], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[)[a{{{(', ['L', 'ON', 'ON', 'R', 'ON', 'ON', 'L', 'ON'], 3], []), ('control layout', ['(([)([', ['ON', 'ON', 'ON', 'ON', 'ON', 'L'], 3], [[1, 3]])]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(args), expected)
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
stack overflow stops[[0, 4], [1, 3]][]Failed
regression: stack overflow handling[[1, 7]][]Failed
regression: stack overflow handling[[1, 11]][]Failed
regression: stack overflow handling[[0, 3]][]Failed
overridden bracket ignored[][]Passed
mismatched inner bracket[[0, 2]][[0, 2]]Passed
control layout[][]Passed
control layout[[6, 8]][[6, 8]]Passed

SHA-256 / db6ad45672f0d64696184b5fa4d1b98dfac42fece9eb97003688566a7572540b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    text, classes, limit = x
    OPEN = {'(': ')', '[': ']', '{': '}'}
    CLOSE = {')', ']', '}'}
    stack = []
    pairs = []
    for i, ch in enumerate(text):
        if classes[i] != 'ON':
            continue
        if ch in OPEN:
            if len(stack) > limit:
                break
            stack.append((OPEN[ch], i))
        elif ch in CLOSE:
            for k in range(len(stack) - 1, -1, -1):
                if stack[k][0] == ch:
                    pairs.append([stack[k][1], i])
                    del stack[k:]
                    break
    return sorted(pairs)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('regression: stack overflow handling', ['(({{[(a){a)', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'L', 'R'], 4], []), ('regression: stack overflow handling', ['{[)(a([]a({](', ['ON', 'ON', 'ON', 'R', 'L', 'R', 'ON', 'L', 'L', 'L', 'L', 'ON', 'ON'], 2], []), ('regression: stack overflow handling', ['{a[}(((', ['ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON'], 1], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[[(a[(}[[{', ['ON', 'R', 'ON', 'L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], []), ('control layout', ['][}((}(()([', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON'], 3], [[6, 8]])], [('regression: stack overflow handling', ['](](a)(](', ['L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON'], 1], []), ('regression: stack overflow handling', ['{}((}{[}(())(', ['R', 'L', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 2], []), ('regression: stack overflow handling', ['[a[(}](][(){)', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON'], 1], []), ('regression: stack overflow handling', ['{}({a{{(()](}', ['ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 1]]), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('control layout', [')]])([', ['R', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], [])], [('regression: stack overflow handling', ['(][})([{({a]a]', ['ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'ON', 'L', 'R'], 2], [[0, 4]]), ('regression: stack overflow handling', ['{({{{{}a((a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'R', 'L'], 2], []), ('regression: stack overflow handling', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('regression: stack overflow handling', ['(()[{a{[[((}', ['ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'R'], 1], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['a][a', ['L', 'L', 'ON', 'R'], 3], []), ('control layout', ['a))(', ['L', 'L', 'ON', 'L'], 3], [])], [('regression: stack overflow handling', ['[([{{(]]', ['ON', 'ON', 'R', 'R', 'ON', 'ON', 'ON', 'R'], 1], []), ('regression: stack overflow handling', ['{({{{{}a((a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'R', 'L'], 2], []), ('partial-repair probe', ['()}][[a[(({}}{', ['L', 'R', 'R', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], []), ('regression: stack overflow handling', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['][', ['ON', 'ON'], 1], []), ('control layout', [')a}]', ['L', 'R', 'ON', 'ON'], 4], [])], [('regression: stack overflow handling', ['[]([[]a)})[', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 1], [[0, 1]]), ('regression: stack overflow handling', ['[a{a]})]([}', ['ON', 'L', 'ON', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], []), ('regression: stack overflow handling', ['(]{[}', ['ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('partial-repair probe', ['{]a[)][(', ['ON', 'ON', 'R', 'ON', 'ON', 'ON', 'R', 'ON'], 1], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[)[a{{{(', ['L', 'ON', 'ON', 'R', 'ON', 'ON', 'L', 'ON'], 3], []), ('control layout', ['(([)([', ['ON', 'ON', 'ON', 'ON', 'ON', 'L'], 3], [[1, 3]])]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(args), expected)
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
stack overflow stops[[0, 5], [1, 4], [2, 3]][]Failed
regression: stack overflow handling[[5, 7]][]Failed
regression: stack overflow handling[[6, 11]][]Failed
regression: stack overflow handling[[0, 3]][]Failed
overridden bracket ignored[][]Passed
mismatched inner bracket[[0, 2]][[0, 2]]Passed
control layout[][]Passed
control layout[[6, 8]][[6, 8]]Passed

SHA-256 / e06b4fbdbcf59902d1ddb6c1c5a41e9382acc638bd95230fe96a6074ffc264a1

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    text, classes, limit = x
    OPEN = {'(': ')', '[': ']', '{': '}'}
    CLOSE = {')', ']', '}'}
    stack = []
    pairs = []
    for i, ch in enumerate(text):
        if classes[i] != 'ON':
            continue
        if ch in OPEN:
            if len(stack) >= limit:
                break
            stack.append((OPEN[ch], i))
        elif ch in CLOSE:
            for k in range(len(stack) - 1, -1, -1):
                if stack[k][0] == ch:
                    pairs.append([stack[k][1], i])
                    del stack[k:]
                    break
    return sorted(pairs)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('regression: stack overflow handling', ['(({{[(a){a)', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'R', 'ON', 'ON', 'L', 'R'], 4], []), ('regression: stack overflow handling', ['{[)(a([]a({](', ['ON', 'ON', 'ON', 'R', 'L', 'R', 'ON', 'L', 'L', 'L', 'L', 'ON', 'ON'], 2], []), ('regression: stack overflow handling', ['{a[}(((', ['ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON'], 1], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[[(a[(}[[{', ['ON', 'R', 'ON', 'L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 3], []), ('control layout', ['][}((}(()([', ['ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON'], 3], [[6, 8]])], [('regression: stack overflow handling', ['](](a)(](', ['L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON'], 1], []), ('regression: stack overflow handling', ['{}((}{[}(())(', ['R', 'L', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'R'], 2], []), ('regression: stack overflow handling', ['[a[(}](][(){)', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON'], 1], []), ('regression: stack overflow handling', ['{}({a{{(()](}', ['ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON'], 4], [[0, 1]]), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', [')a{{a}]}({', ['L', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], [[2, 7], [3, 5]]), ('control layout', [')]])([', ['R', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], [])], [('regression: stack overflow handling', ['(][})([{({a]a]', ['ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'ON', 'L', 'R'], 2], [[0, 4]]), ('regression: stack overflow handling', ['{({{{{}a((a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'R', 'L'], 2], []), ('regression: stack overflow handling', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('regression: stack overflow handling', ['(()[{a{[[((}', ['ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'L', 'ON', 'ON', 'R'], 1], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['a][a', ['L', 'L', 'ON', 'R'], 3], []), ('control layout', ['a))(', ['L', 'L', 'ON', 'L'], 3], [])], [('regression: stack overflow handling', ['[([{{(]]', ['ON', 'ON', 'R', 'R', 'ON', 'ON', 'ON', 'R'], 1], []), ('regression: stack overflow handling', ['{({{{{}a((a', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'R', 'L'], 2], []), ('partial-repair probe', ['()}][[a[(({}}{', ['L', 'R', 'R', 'ON', 'ON', 'ON', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON'], 4], []), ('regression: stack overflow handling', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('control layout', ['][', ['ON', 'ON'], 1], []), ('control layout', [')a}]', ['L', 'R', 'ON', 'ON'], 4], [])], [('regression: stack overflow handling', ['[]([[]a)})[', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 1], [[0, 1]]), ('regression: stack overflow handling', ['[a{a]})]([}', ['ON', 'L', 'ON', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 1], []), ('regression: stack overflow handling', ['(]{[}', ['ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('partial-repair probe', ['{]a[)][(', ['ON', 'ON', 'R', 'ON', 'ON', 'ON', 'R', 'ON'], 1], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['[)[a{{{(', ['L', 'ON', 'ON', 'R', 'ON', 'ON', 'L', 'ON'], 3], []), ('control layout', ['(([)([', ['ON', 'ON', 'ON', 'ON', 'ON', 'L'], 3], [[1, 3]])]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(args), expected)
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
stack overflow stops[][]Passed
regression: stack overflow handling[][]Passed
regression: stack overflow handling[][]Passed
regression: stack overflow handling[][]Passed
overridden bracket ignored[][]Passed
mismatched inner bracket[[0, 2]][[0, 2]]Passed
control layout[][]Passed
control layout[[6, 8]][[6, 8]]Passed

SHA-256 / eae7d61977f38fc9a6f3919d13ffeef727219b7fdb467ec195e3d7436c10352d

Verification & scope

A deterministic toy bidi model over stipulated class labels and integer levels; it is inspired by, but does not claim conformance to, any published algorithm. 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:49:55.195024+00:00.

Case digest / 730403c625e63d7e7aad61a97746fae113aa588f0384a83449ec3e3aa64c5992