FAILURE MAP
← Case archive

FA-80806 / Bidirectional text layout / Open access

Visual run list for shaping: run sequence reversal · case 01

Visual runs come out in logical order.

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

ROOT CAUSE

Sequences of runs at or above the level are appended without reversing.

VERIFIED REPAIR

Reverse each maximal sequence of runs at or above the level.

Unsuccessful approach: Reversing only on odd passes leaves even-level nesting in the wrong order.

Case contract

Input resolved levels of a line. Group maximal equal-level runs [logical start, length, level]; reorder whole runs from the highest level down to the lowest odd level by reversing sequences of runs at or above the level. Return [[start, length, "rtl"|"ltr"]] in visual order.

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):
    levels = x
    n = len(levels)
    runs = []
    for i in range(n):
        if runs and runs[-1][2] == levels[i]:
            runs[-1][1] += 1
        else:
            runs.append([i, 1, levels[i]])
    if not runs:
        return []
    odd = [r[2] for r in runs if r[2] % 2]
    if odd:
        for lev in range(max(r[2] for r in runs), min(odd) - 1, -1):
            out, i = [], 0
            while i < len(runs):
                if runs[i][2] >= lev:
                    j = i
                    while j < len(runs) and runs[j][2] >= lev:
                        j += 1
                    out.extend(runs[i:j])
                    i = j
                else:
                    out.append(runs[i])
                    i += 1
            runs = out
    return [[s, ln, 'rtl' if lv % 2 else 'ltr'] for s, ln, lv in runs]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 4, 2, 2], [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]), ('regression: run sequence reversal', [3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2], [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]), ('regression: run sequence reversal', [4, 3, 4, 1, 1, 1, 1], [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [3, 3, 2, 2, 2, 2, 2], [[0, 2, 'rtl'], [2, 5, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run sequence reversal', [2, 1, 1], [[1, 2, 'rtl'], [0, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 3], [[2, 1, 'rtl'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 3, 3, 3, 2, 2, 2, 0, 2, 2, 2, 1], [[1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl'], [7, 1, 'ltr'], [11, 1, 'rtl'], [8, 3, 'ltr']]), ('regression: run sequence reversal', [4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 2], [[11, 1, 'ltr'], [5, 6, 'rtl'], [0, 4, 'ltr'], [4, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('control layout', [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [[0, 4, 'rtl'], [4, 4, 'ltr'], [8, 3, 'rtl']]), ('control layout', [2, 2], [[0, 2, 'ltr']])], [('regression: run sequence reversal', [1, 1, 2, 2, 2, 2, 1, 1, 1, 1], [[6, 4, 'rtl'], [2, 4, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 2, 2, 2, 2, 2, 1], [[8, 1, 'rtl'], [3, 5, 'ltr'], [0, 3, 'rtl']]), ('partial-repair probe', [1, 1, 1, 1, 0, 0, 0, 3, 2, 2], [[0, 4, 'rtl'], [4, 3, 'ltr'], [7, 1, 'rtl'], [8, 2, 'ltr']]), ('regression: run sequence reversal', [2, 4, 4, 1, 2, 2], [[4, 2, 'ltr'], [3, 1, 'rtl'], [0, 1, 'ltr'], [1, 2, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 0, 0, 0], [[0, 2, 'rtl'], [2, 3, 'ltr']]), ('control layout', [2, 2, 3, 3, 3], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run sequence reversal', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [1, 2, 1, 1, 1, 1, 2, 2, 1, 1], [[8, 2, 'rtl'], [6, 2, 'ltr'], [2, 4, 'rtl'], [1, 1, 'ltr'], [0, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 4, 4, 3, 4, 4], [[6, 2, 'ltr'], [5, 1, 'rtl'], [3, 2, 'ltr'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [2, 4, 4, 4, 4, 1, 1], [[5, 2, 'rtl'], [0, 1, 'ltr'], [1, 4, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1], [[0, 3, 'rtl']]), ('control layout', [2, 2, 2, 2, 2], [[0, 5, 'ltr']])], [('regression: run sequence reversal', [1, 1, 1, 1, 1, 2, 2, 2, 2, 0], [[5, 4, 'ltr'], [0, 5, 'rtl'], [9, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 1, 1, 3, 0, 0, 0, 1], [[4, 1, 'rtl'], [0, 4, 'rtl'], [5, 3, 'ltr'], [8, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1], [[9, 2, 'rtl'], [5, 3, 'rtl'], [8, 1, 'ltr'], [0, 5, 'rtl']]), ('regression: run sequence reversal', [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 3, 1], [[0, 4, 'ltr'], [11, 1, 'rtl'], [4, 2, 'ltr'], [6, 5, 'rtl']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [[0, 2, 'ltr'], [2, 1, 'rtl'], [3, 9, 'ltr']]), ('control layout', [3, 3], [[0, 2, 'rtl']])]]
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
LTR number inside RTL[[0, 2, 'rtl'], [2, 2, 'ltr'], [4, 1, 'rtl']][[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]Failed
regression: run sequence reversal[[0, 4, 'rtl'], [4, 1, 'ltr'], [5, 2, 'ltr']][[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]Failed
regression: run sequence reversal[[0, 1, 'rtl'], [1, 5, 'ltr'], [6, 2, 'rtl'], [8, 3, 'ltr']][[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]Failed
regression: run sequence reversal[[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr'], [3, 4, 'rtl']][[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]Failed
lowest odd is three[[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']][[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]Passed
control layout[[0, 2, 'rtl'], [2, 5, 'ltr']][[0, 2, 'rtl'], [2, 5, 'ltr']]Passed
control layout[[0, 5, 'ltr']][[0, 5, 'ltr']]Passed
control layout[[0, 2, 'rtl'], [2, 1, 'ltr']][[0, 2, 'rtl'], [2, 1, 'ltr']]Passed

SHA-256 / f8b1f8cf0c1597430edfab5aa7c3d9ba299c386e11d4a31b6862a4faff46c663

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    levels = x
    n = len(levels)
    runs = []
    for i in range(n):
        if runs and runs[-1][2] == levels[i]:
            runs[-1][1] += 1
        else:
            runs.append([i, 1, levels[i]])
    if not runs:
        return []
    odd = [r[2] for r in runs if r[2] % 2]
    if odd:
        for lev in range(max(r[2] for r in runs), min(odd) - 1, -1):
            out, i = [], 0
            while i < len(runs):
                if runs[i][2] >= lev:
                    j = i
                    while j < len(runs) and runs[j][2] >= lev:
                        j += 1
                    out.extend(runs[i:j][::-1] if lev % 2 else runs[i:j])
                    i = j
                else:
                    out.append(runs[i])
                    i += 1
            runs = out
    return [[s, ln, 'rtl' if lv % 2 else 'ltr'] for s, ln, lv in runs]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 4, 2, 2], [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]), ('regression: run sequence reversal', [3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2], [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]), ('regression: run sequence reversal', [4, 3, 4, 1, 1, 1, 1], [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [3, 3, 2, 2, 2, 2, 2], [[0, 2, 'rtl'], [2, 5, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run sequence reversal', [2, 1, 1], [[1, 2, 'rtl'], [0, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 3], [[2, 1, 'rtl'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 3, 3, 3, 2, 2, 2, 0, 2, 2, 2, 1], [[1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl'], [7, 1, 'ltr'], [11, 1, 'rtl'], [8, 3, 'ltr']]), ('regression: run sequence reversal', [4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 2], [[11, 1, 'ltr'], [5, 6, 'rtl'], [0, 4, 'ltr'], [4, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('control layout', [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [[0, 4, 'rtl'], [4, 4, 'ltr'], [8, 3, 'rtl']]), ('control layout', [2, 2], [[0, 2, 'ltr']])], [('regression: run sequence reversal', [1, 1, 2, 2, 2, 2, 1, 1, 1, 1], [[6, 4, 'rtl'], [2, 4, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 2, 2, 2, 2, 2, 1], [[8, 1, 'rtl'], [3, 5, 'ltr'], [0, 3, 'rtl']]), ('partial-repair probe', [1, 1, 1, 1, 0, 0, 0, 3, 2, 2], [[0, 4, 'rtl'], [4, 3, 'ltr'], [7, 1, 'rtl'], [8, 2, 'ltr']]), ('regression: run sequence reversal', [2, 4, 4, 1, 2, 2], [[4, 2, 'ltr'], [3, 1, 'rtl'], [0, 1, 'ltr'], [1, 2, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 0, 0, 0], [[0, 2, 'rtl'], [2, 3, 'ltr']]), ('control layout', [2, 2, 3, 3, 3], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run sequence reversal', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [1, 2, 1, 1, 1, 1, 2, 2, 1, 1], [[8, 2, 'rtl'], [6, 2, 'ltr'], [2, 4, 'rtl'], [1, 1, 'ltr'], [0, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 4, 4, 3, 4, 4], [[6, 2, 'ltr'], [5, 1, 'rtl'], [3, 2, 'ltr'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [2, 4, 4, 4, 4, 1, 1], [[5, 2, 'rtl'], [0, 1, 'ltr'], [1, 4, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1], [[0, 3, 'rtl']]), ('control layout', [2, 2, 2, 2, 2], [[0, 5, 'ltr']])], [('regression: run sequence reversal', [1, 1, 1, 1, 1, 2, 2, 2, 2, 0], [[5, 4, 'ltr'], [0, 5, 'rtl'], [9, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 1, 1, 3, 0, 0, 0, 1], [[4, 1, 'rtl'], [0, 4, 'rtl'], [5, 3, 'ltr'], [8, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1], [[9, 2, 'rtl'], [5, 3, 'rtl'], [8, 1, 'ltr'], [0, 5, 'rtl']]), ('regression: run sequence reversal', [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 3, 1], [[0, 4, 'ltr'], [11, 1, 'rtl'], [4, 2, 'ltr'], [6, 5, 'rtl']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [[0, 2, 'ltr'], [2, 1, 'rtl'], [3, 9, 'ltr']]), ('control layout', [3, 3], [[0, 2, 'rtl']])]]
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
LTR number inside RTL[[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']][[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]Passed
regression: run sequence reversal[[5, 2, 'ltr'], [4, 1, 'ltr'], [0, 4, 'rtl']][[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]Failed
regression: run sequence reversal[[8, 3, 'ltr'], [6, 2, 'rtl'], [1, 5, 'ltr'], [0, 1, 'rtl']][[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]Failed
regression: run sequence reversal[[3, 4, 'rtl'], [0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']][[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]Failed
lowest odd is three[[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']][[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]Passed
control layout[[0, 2, 'rtl'], [2, 5, 'ltr']][[0, 2, 'rtl'], [2, 5, 'ltr']]Passed
control layout[[0, 5, 'ltr']][[0, 5, 'ltr']]Passed
control layout[[0, 2, 'rtl'], [2, 1, 'ltr']][[0, 2, 'rtl'], [2, 1, 'ltr']]Passed

SHA-256 / abde1bbb2517f609eb1a548077a10a13696c50434a7c929e2532b8b8150aca33

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    levels = x
    n = len(levels)
    runs = []
    for i in range(n):
        if runs and runs[-1][2] == levels[i]:
            runs[-1][1] += 1
        else:
            runs.append([i, 1, levels[i]])
    if not runs:
        return []
    odd = [r[2] for r in runs if r[2] % 2]
    if odd:
        for lev in range(max(r[2] for r in runs), min(odd) - 1, -1):
            out, i = [], 0
            while i < len(runs):
                if runs[i][2] >= lev:
                    j = i
                    while j < len(runs) and runs[j][2] >= lev:
                        j += 1
                    out.extend(runs[i:j][::-1])
                    i = j
                else:
                    out.append(runs[i])
                    i += 1
            runs = out
    return [[s, ln, 'rtl' if lv % 2 else 'ltr'] for s, ln, lv in runs]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 4, 2, 2], [[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]), ('regression: run sequence reversal', [3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2], [[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]), ('regression: run sequence reversal', [4, 3, 4, 1, 1, 1, 1], [[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [3, 3, 2, 2, 2, 2, 2], [[0, 2, 'rtl'], [2, 5, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run sequence reversal', [2, 1, 1], [[1, 2, 'rtl'], [0, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 3], [[2, 1, 'rtl'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 3, 3, 3, 2, 2, 2, 0, 2, 2, 2, 1], [[1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl'], [7, 1, 'ltr'], [11, 1, 'rtl'], [8, 3, 'ltr']]), ('regression: run sequence reversal', [4, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 2], [[11, 1, 'ltr'], [5, 6, 'rtl'], [0, 4, 'ltr'], [4, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('control layout', [1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1], [[0, 4, 'rtl'], [4, 4, 'ltr'], [8, 3, 'rtl']]), ('control layout', [2, 2], [[0, 2, 'ltr']])], [('regression: run sequence reversal', [1, 1, 2, 2, 2, 2, 1, 1, 1, 1], [[6, 4, 'rtl'], [2, 4, 'ltr'], [0, 2, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 2, 2, 2, 2, 2, 1], [[8, 1, 'rtl'], [3, 5, 'ltr'], [0, 3, 'rtl']]), ('partial-repair probe', [1, 1, 1, 1, 0, 0, 0, 3, 2, 2], [[0, 4, 'rtl'], [4, 3, 'ltr'], [7, 1, 'rtl'], [8, 2, 'ltr']]), ('regression: run sequence reversal', [2, 4, 4, 1, 2, 2], [[4, 2, 'ltr'], [3, 1, 'rtl'], [0, 1, 'ltr'], [1, 2, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 0, 0, 0], [[0, 2, 'rtl'], [2, 3, 'ltr']]), ('control layout', [2, 2, 3, 3, 3], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run sequence reversal', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [1, 2, 1, 1, 1, 1, 2, 2, 1, 1], [[8, 2, 'rtl'], [6, 2, 'ltr'], [2, 4, 'rtl'], [1, 1, 'ltr'], [0, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 4, 4, 3, 4, 4], [[6, 2, 'ltr'], [5, 1, 'rtl'], [3, 2, 'ltr'], [0, 3, 'rtl']]), ('regression: run sequence reversal', [2, 4, 4, 4, 4, 1, 1], [[5, 2, 'rtl'], [0, 1, 'ltr'], [1, 4, 'ltr']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1], [[0, 3, 'rtl']]), ('control layout', [2, 2, 2, 2, 2], [[0, 5, 'ltr']])], [('regression: run sequence reversal', [1, 1, 1, 1, 1, 2, 2, 2, 2, 0], [[5, 4, 'ltr'], [0, 5, 'rtl'], [9, 1, 'ltr']]), ('regression: run sequence reversal', [1, 1, 1, 1, 3, 0, 0, 0, 1], [[4, 1, 'rtl'], [0, 4, 'rtl'], [5, 3, 'ltr'], [8, 1, 'rtl']]), ('regression: run sequence reversal', [1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1], [[9, 2, 'rtl'], [5, 3, 'rtl'], [8, 1, 'ltr'], [0, 5, 'rtl']]), ('regression: run sequence reversal', [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 3, 1], [[0, 4, 'ltr'], [11, 1, 'rtl'], [4, 2, 'ltr'], [6, 5, 'rtl']]), ('LTR number inside RTL', [1, 1, 2, 2, 1], [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [[0, 2, 'ltr'], [2, 1, 'rtl'], [3, 9, 'ltr']]), ('control layout', [3, 3], [[0, 2, 'rtl']])]]
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
LTR number inside RTL[[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']][[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']]Passed
regression: run sequence reversal[[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']][[4, 1, 'ltr'], [5, 2, 'ltr'], [0, 4, 'rtl']]Passed
regression: run sequence reversal[[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']][[8, 3, 'ltr'], [6, 2, 'rtl'], [0, 1, 'rtl'], [1, 5, 'ltr']]Passed
regression: run sequence reversal[[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']][[3, 4, 'rtl'], [2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'ltr']]Passed
lowest odd is three[[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']][[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]Passed
control layout[[0, 2, 'rtl'], [2, 5, 'ltr']][[0, 2, 'rtl'], [2, 5, 'ltr']]Passed
control layout[[0, 5, 'ltr']][[0, 5, 'ltr']]Passed
control layout[[0, 2, 'rtl'], [2, 1, 'ltr']][[0, 2, 'rtl'], [2, 1, 'ltr']]Passed

SHA-256 / d5f6f2140cb9a59b1d3febc414fc78ec78f689ceabbc3f95ccd23271824aa50a

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

Case digest / 0079416eb78150158ad9f763e4705ee99554026ac00f0a540e27bfab19190b4f