FA-80576 / Bidirectional text layout / Open access
Bracket pair identification: bracket class filter · case 01
Brackets forced to R by an override are still paired.
ROOT CAUSE
Only L-class brackets are excluded from pairing.
VERIFIED REPAIR
Only ON-class brackets take part in pairing.
Unsuccessful approach: Admitting R-class brackets repeats the error for RTL overrides.
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] == 'L':
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 = [[('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('regression: bracket class filter', ['}(][(]}()(}', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'R', 'R'], 3], [[7, 8]]), ('regression: bracket class filter', [']]({}', ['ON', 'ON', 'ON', 'R', 'ON'], 4], []), ('regression: bracket class filter', ['{{)(([))[', ['ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'R'], 4], [[3, 6]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', [']()({)a(]a', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'L'], 3], [[1, 2], [3, 5]]), ('control layout', ['{{)}()[]}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L'], 3], [[1, 3], [4, 5], [6, 7]])], [('regression: bracket class filter', ['((}}aa]()(()a', ['L', 'ON', 'ON', 'ON', 'R', 'L', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L'], 2], []), ('regression: bracket class filter', ['(aa]a])([[(]{a', ['ON', 'R', 'L', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R'], 2], []), ('regression: bracket class filter', [')((({}}(]', ['L', 'ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON'], 3], [[4, 6]]), ('regression: bracket class filter', ['a(){', ['R', 'R', 'ON', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', [')]])([', ['R', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['}}]', ['ON', 'ON', 'ON'], 4], [])], [('regression: bracket class filter', ['a[()}a]aa', ['R', 'ON', 'R', 'ON', 'ON', 'R', 'L', 'R', 'L'], 3], []), ('regression: bracket class filter', ['{{({()}]}', ['L', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 4], [[1, 6], [2, 5]]), ('regression: bracket class filter', ['{)[}[(((]{(]{', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('regression: bracket class filter', ['{{)(([))[', ['ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'R'], 4], [[3, 6]]), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['[[]', ['ON', 'ON', 'ON'], 3], [[1, 2]]), ('control layout', ['a]]{)a((](a', ['R', 'ON', 'R', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'L'], 2], [])], [('regression: bracket class filter', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('regression: bracket class filter', ['((}}aa]()(()a', ['L', 'ON', 'ON', 'ON', 'R', 'L', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L'], 2], []), ('regression: bracket class filter', ['][](((({})a()', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 2], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['{}}a{([(([{', ['ON', 'ON', 'ON', 'L', 'ON', 'L', 'ON', 'L', 'ON', 'ON', 'ON'], 2], [[0, 1]]), ('control layout', ['}{', ['ON', 'ON'], 3], [])], [('regression: bracket class filter', ['}}}{(]}((', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 2], []), ('regression: bracket class filter', ['([(]}}))(}a(', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 3], [[2, 6]]), ('regression: bracket class filter', ['}a()[a(({]', ['ON', 'L', 'R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'L'], 3], []), ('regression: bracket class filter', ['[((({a}', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON'], 4], [[4, 6]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['}{', ['ON', 'ON'], 3], []), ('control layout', ['((][{]a{{)}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 4], [[1, 9], [3, 5]])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| overridden bracket ignored | [[0, 2]] | [] | Failed |
| regression: bracket class filter | [] | [[7, 8]] | Failed |
| regression: bracket class filter | [[3, 4]] | [] | Failed |
| regression: bracket class filter | [] | [[3, 6]] | Failed |
| stack overflow stops | [] | [] | Passed |
| mismatched inner bracket | [[0, 2]] | [[0, 2]] | Passed |
| control layout | [[1, 2], [3, 5]] | [[1, 2], [3, 5]] | Passed |
| control layout | [[1, 3], [4, 5], [6, 7]] | [[1, 3], [4, 5], [6, 7]] | Passed |
SHA-256 / 7499dec00584198f5d6be2e9152680a78800753630f623fa777a09217000b905
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] not in ('ON', 'R'):
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 = [[('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('regression: bracket class filter', ['}(][(]}()(}', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'R', 'R'], 3], [[7, 8]]), ('regression: bracket class filter', [']]({}', ['ON', 'ON', 'ON', 'R', 'ON'], 4], []), ('regression: bracket class filter', ['{{)(([))[', ['ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'R'], 4], [[3, 6]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', [']()({)a(]a', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'L'], 3], [[1, 2], [3, 5]]), ('control layout', ['{{)}()[]}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L'], 3], [[1, 3], [4, 5], [6, 7]])], [('regression: bracket class filter', ['((}}aa]()(()a', ['L', 'ON', 'ON', 'ON', 'R', 'L', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L'], 2], []), ('regression: bracket class filter', ['(aa]a])([[(]{a', ['ON', 'R', 'L', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R'], 2], []), ('regression: bracket class filter', [')((({}}(]', ['L', 'ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON'], 3], [[4, 6]]), ('regression: bracket class filter', ['a(){', ['R', 'R', 'ON', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', [')]])([', ['R', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['}}]', ['ON', 'ON', 'ON'], 4], [])], [('regression: bracket class filter', ['a[()}a]aa', ['R', 'ON', 'R', 'ON', 'ON', 'R', 'L', 'R', 'L'], 3], []), ('regression: bracket class filter', ['{{({()}]}', ['L', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 4], [[1, 6], [2, 5]]), ('regression: bracket class filter', ['{)[}[(((]{(]{', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('regression: bracket class filter', ['{{)(([))[', ['ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'R'], 4], [[3, 6]]), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['[[]', ['ON', 'ON', 'ON'], 3], [[1, 2]]), ('control layout', ['a]]{)a((](a', ['R', 'ON', 'R', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'L'], 2], [])], [('regression: bracket class filter', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('regression: bracket class filter', ['((}}aa]()(()a', ['L', 'ON', 'ON', 'ON', 'R', 'L', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L'], 2], []), ('regression: bracket class filter', ['][](((({})a()', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 2], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['{}}a{([(([{', ['ON', 'ON', 'ON', 'L', 'ON', 'L', 'ON', 'L', 'ON', 'ON', 'ON'], 2], [[0, 1]]), ('control layout', ['}{', ['ON', 'ON'], 3], [])], [('regression: bracket class filter', ['}}}{(]}((', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 2], []), ('regression: bracket class filter', ['([(]}}))(}a(', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 3], [[2, 6]]), ('regression: bracket class filter', ['}a()[a(({]', ['ON', 'L', 'R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'L'], 3], []), ('regression: bracket class filter', ['[((({a}', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON'], 4], [[4, 6]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['}{', ['ON', 'ON'], 3], []), ('control layout', ['((][{]a{{)}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 4], [[1, 9], [3, 5]])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| overridden bracket ignored | [[0, 2]] | [] | Failed |
| regression: bracket class filter | [] | [[7, 8]] | Failed |
| regression: bracket class filter | [[3, 4]] | [] | Failed |
| regression: bracket class filter | [] | [[3, 6]] | Failed |
| stack overflow stops | [] | [] | Passed |
| mismatched inner bracket | [[0, 2]] | [[0, 2]] | Passed |
| control layout | [[1, 2], [3, 5]] | [[1, 2], [3, 5]] | Passed |
| control layout | [[1, 3], [4, 5], [6, 7]] | [[1, 3], [4, 5], [6, 7]] | Passed |
SHA-256 / c02df4861f5a492ede504be4385420b611e1b00fbaec1ead496528996948d926
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 = [[('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('regression: bracket class filter', ['}(][(]}()(}', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'R', 'R'], 3], [[7, 8]]), ('regression: bracket class filter', [']]({}', ['ON', 'ON', 'ON', 'R', 'ON'], 4], []), ('regression: bracket class filter', ['{{)(([))[', ['ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'R'], 4], [[3, 6]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', [']()({)a(]a', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'L'], 3], [[1, 2], [3, 5]]), ('control layout', ['{{)}()[]}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L'], 3], [[1, 3], [4, 5], [6, 7]])], [('regression: bracket class filter', ['((}}aa]()(()a', ['L', 'ON', 'ON', 'ON', 'R', 'L', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L'], 2], []), ('regression: bracket class filter', ['(aa]a])([[(]{a', ['ON', 'R', 'L', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R'], 2], []), ('regression: bracket class filter', [')((({}}(]', ['L', 'ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON'], 3], [[4, 6]]), ('regression: bracket class filter', ['a(){', ['R', 'R', 'ON', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', [')]])([', ['R', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['}}]', ['ON', 'ON', 'ON'], 4], [])], [('regression: bracket class filter', ['a[()}a]aa', ['R', 'ON', 'R', 'ON', 'ON', 'R', 'L', 'R', 'L'], 3], []), ('regression: bracket class filter', ['{{({()}]}', ['L', 'ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'ON'], 4], [[1, 6], [2, 5]]), ('regression: bracket class filter', ['{)[}[(((]{(]{', ['ON', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('regression: bracket class filter', ['{{)(([))[', ['ON', 'ON', 'L', 'ON', 'R', 'ON', 'ON', 'ON', 'R'], 4], [[3, 6]]), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['[[]', ['ON', 'ON', 'ON'], 3], [[1, 2]]), ('control layout', ['a]]{)a((](a', ['R', 'ON', 'R', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'L'], 2], [])], [('regression: bracket class filter', ['[]a}}[](a](((', ['ON', 'R', 'R', 'ON', 'R', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 1], []), ('regression: bracket class filter', ['((}}aa]()(()a', ['L', 'ON', 'ON', 'ON', 'R', 'L', 'ON', 'ON', 'R', 'ON', 'ON', 'ON', 'L'], 2], []), ('regression: bracket class filter', ['][](((({})a()', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 2], []), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('mismatched inner bracket', ['([)]', ['ON', 'ON', 'ON', 'ON'], 4], [[0, 2]]), ('control layout', ['{}}a{([(([{', ['ON', 'ON', 'ON', 'L', 'ON', 'L', 'ON', 'L', 'ON', 'ON', 'ON'], 2], [[0, 1]]), ('control layout', ['}{', ['ON', 'ON'], 3], [])], [('regression: bracket class filter', ['}}}{(]}((', ['R', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON', 'ON'], 2], []), ('regression: bracket class filter', ['([(]}}))(}a(', ['L', 'R', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'R', 'ON'], 3], [[2, 6]]), ('regression: bracket class filter', ['}a()[a(({]', ['ON', 'L', 'R', 'ON', 'R', 'L', 'ON', 'ON', 'ON', 'L'], 3], []), ('regression: bracket class filter', ['[((({a}', ['ON', 'R', 'ON', 'ON', 'ON', 'L', 'ON'], 4], [[4, 6]]), ('overridden bracket ignored', ['(a)', ['R', 'L', 'ON'], 4], []), ('stack overflow stops', ['((()))', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON'], 2], []), ('control layout', ['}{', ['ON', 'ON'], 3], []), ('control layout', ['((][{]a{{)}', ['ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'R', 'L', 'ON', 'R'], 4], [[1, 9], [3, 5]])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| overridden bracket ignored | [] | [] | Passed |
| regression: bracket class filter | [[7, 8]] | [[7, 8]] | Passed |
| regression: bracket class filter | [] | [] | Passed |
| regression: bracket class filter | [[3, 6]] | [[3, 6]] | Passed |
| stack overflow stops | [] | [] | Passed |
| mismatched inner bracket | [[0, 2]] | [[0, 2]] | Passed |
| control layout | [[1, 2], [3, 5]] | [[1, 2], [3, 5]] | Passed |
| control layout | [[1, 3], [4, 5], [6, 7]] | [[1, 3], [4, 5], [6, 7]] | Passed |
SHA-256 / 8eec6521807ab2e7b3025104efe73f4b7facde1f1f3f97123366c5fbccce4836
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.081843+00:00.
Case digest / 87518641863b5c4e39b8b754a2099a4e58ed71a0e7d8af97fb91a884adeca9d3