FA-80796 / Bidirectional text layout / Open access
Visual run list for shaping: run direction label · case 01
Level-2 runs are shaped right-to-left.
ROOT CAUSE
Direction is taken from level > 0 instead of level parity.
VERIFIED REPAIR
A run is RTL exactly when its level is odd.
Unsuccessful approach: Treating only level 1 as RTL misses level 3.
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][::-1])
i = j
else:
out.append(runs[i])
i += 1
runs = out
return [[s, ln, 'rtl' if lv > 0 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 direction label', [1, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1], [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']]), ('partial-repair probe', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run direction label', [3, 3, 2, 4, 4, 2, 4], [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1, 1, 0, 0], [[0, 4, 'rtl'], [4, 2, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [0, 0, 1, 1, 1], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run direction label', [2, 2, 3, 3, 3, 3, 0], [[0, 2, 'ltr'], [2, 4, 'rtl'], [6, 1, 'ltr']]), ('regression: run direction label', [3, 3, 3, 3, 1, 1, 1, 1, 2], [[8, 1, 'ltr'], [4, 4, 'rtl'], [0, 4, 'rtl']]), ('regression: run direction label', [0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 2], [[0, 6, 'ltr'], [6, 4, 'rtl'], [10, 1, 'ltr']]), ('regression: run direction label', [2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1], [[10, 2, 'rtl'], [0, 1, 'ltr'], [1, 9, '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', [1, 1], [[0, 2, 'rtl']]), ('control layout', [1, 1], [[0, 2, 'rtl']])], [('regression: run direction label', [2, 2, 2, 2, 1, 1, 1, 1, 3, 3], [[8, 2, 'rtl'], [4, 4, 'rtl'], [0, 4, 'ltr']]), ('regression: run direction label', [3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 2], [[11, 1, 'ltr'], [8, 3, 'rtl'], [5, 3, 'rtl'], [3, 2, 'rtl'], [0, 3, 'rtl']]), ('regression: run direction label', [2, 3], [[0, 1, 'ltr'], [1, 1, 'rtl']]), ('regression: run direction label', [2, 2, 1, 1, 1, 2, 2, 3, 3, 3, 0], [[5, 2, 'ltr'], [7, 3, 'rtl'], [2, 3, 'rtl'], [0, 2, 'ltr'], [10, 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, 1, 1, 1, 1], [[0, 8, 'rtl']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run direction label', [2, 2, 2, 2, 2, 2, 4, 1, 3, 3, 3, 3], [[8, 4, 'rtl'], [7, 1, 'rtl'], [0, 6, 'ltr'], [6, 1, 'ltr']]), ('regression: run direction label', [2, 2, 2, 3, 3, 3, 1], [[6, 1, 'rtl'], [0, 3, 'ltr'], [3, 3, 'rtl']]), ('regression: run direction label', [2, 3], [[0, 1, 'ltr'], [1, 1, 'rtl']]), ('partial-repair probe', [0, 0, 0, 0, 3], [[0, 4, 'ltr'], [4, 1, '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', [1, 1, 1, 1, 1, 1, 1, 1], [[0, 8, 'rtl']]), ('control layout', [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [[0, 11, 'rtl']])], [('regression: run direction label', [4, 4, 4, 4, 1], [[4, 1, 'rtl'], [0, 4, 'ltr']]), ('regression: run direction label', [1, 3, 4], [[2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'rtl']]), ('regression: run direction label', [2, 1, 1, 1, 1, 3, 3, 3, 3, 1, 4], [[10, 1, 'ltr'], [9, 1, 'rtl'], [5, 4, 'rtl'], [1, 4, 'rtl'], [0, 1, 'ltr']]), ('partial-repair probe', [3, 3], [[0, 2, 'rtl']]), ('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, 1, 1], [[0, 6, 'rtl']]), ('control layout', [1, 1], [[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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| LTR number inside RTL | [[4, 1, 'rtl'], [2, 2, 'rtl'], [0, 2, 'rtl']] | [[4, 1, 'rtl'], [2, 2, 'ltr'], [0, 2, 'rtl']] | Failed |
| regression: run direction label | [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'rtl'], [0, 1, 'rtl']] | [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']] | Failed |
| partial-repair probe | [[3, 1, 'rtl'], [0, 3, 'rtl']] | [[3, 1, 'rtl'], [0, 3, 'rtl']] | Passed |
| regression: run direction label | [[0, 2, 'rtl'], [2, 1, 'rtl'], [3, 2, 'rtl'], [5, 1, 'rtl'], [6, 1, 'rtl']] | [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']] | Failed |
| lowest odd is three | [[0, 1, 'rtl'], [1, 1, 'rtl'], [2, 1, 'rtl']] | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | Failed |
| control layout | [[0, 4, 'rtl'], [4, 2, 'ltr']] | [[0, 4, 'rtl'], [4, 2, 'ltr']] | Passed |
| control layout | [[0, 5, 'ltr']] | [[0, 5, 'ltr']] | Passed |
| control layout | [[0, 2, 'ltr'], [2, 3, 'rtl']] | [[0, 2, 'ltr'], [2, 3, 'rtl']] | Passed |
SHA-256 / 6750155f8a4891961ee7f3d6c3b68d0434ce033a944172688515a09caf0b679a
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])
i = j
else:
out.append(runs[i])
i += 1
runs = out
return [[s, ln, 'rtl' if lv == 1 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 direction label', [1, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1], [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']]), ('partial-repair probe', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run direction label', [3, 3, 2, 4, 4, 2, 4], [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1, 1, 0, 0], [[0, 4, 'rtl'], [4, 2, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [0, 0, 1, 1, 1], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run direction label', [2, 2, 3, 3, 3, 3, 0], [[0, 2, 'ltr'], [2, 4, 'rtl'], [6, 1, 'ltr']]), ('regression: run direction label', [3, 3, 3, 3, 1, 1, 1, 1, 2], [[8, 1, 'ltr'], [4, 4, 'rtl'], [0, 4, 'rtl']]), ('regression: run direction label', [0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 2], [[0, 6, 'ltr'], [6, 4, 'rtl'], [10, 1, 'ltr']]), ('regression: run direction label', [2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1], [[10, 2, 'rtl'], [0, 1, 'ltr'], [1, 9, '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', [1, 1], [[0, 2, 'rtl']]), ('control layout', [1, 1], [[0, 2, 'rtl']])], [('regression: run direction label', [2, 2, 2, 2, 1, 1, 1, 1, 3, 3], [[8, 2, 'rtl'], [4, 4, 'rtl'], [0, 4, 'ltr']]), ('regression: run direction label', [3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 2], [[11, 1, 'ltr'], [8, 3, 'rtl'], [5, 3, 'rtl'], [3, 2, 'rtl'], [0, 3, 'rtl']]), ('regression: run direction label', [2, 3], [[0, 1, 'ltr'], [1, 1, 'rtl']]), ('regression: run direction label', [2, 2, 1, 1, 1, 2, 2, 3, 3, 3, 0], [[5, 2, 'ltr'], [7, 3, 'rtl'], [2, 3, 'rtl'], [0, 2, 'ltr'], [10, 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, 1, 1, 1, 1], [[0, 8, 'rtl']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run direction label', [2, 2, 2, 2, 2, 2, 4, 1, 3, 3, 3, 3], [[8, 4, 'rtl'], [7, 1, 'rtl'], [0, 6, 'ltr'], [6, 1, 'ltr']]), ('regression: run direction label', [2, 2, 2, 3, 3, 3, 1], [[6, 1, 'rtl'], [0, 3, 'ltr'], [3, 3, 'rtl']]), ('regression: run direction label', [2, 3], [[0, 1, 'ltr'], [1, 1, 'rtl']]), ('partial-repair probe', [0, 0, 0, 0, 3], [[0, 4, 'ltr'], [4, 1, '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', [1, 1, 1, 1, 1, 1, 1, 1], [[0, 8, 'rtl']]), ('control layout', [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [[0, 11, 'rtl']])], [('regression: run direction label', [4, 4, 4, 4, 1], [[4, 1, 'rtl'], [0, 4, 'ltr']]), ('regression: run direction label', [1, 3, 4], [[2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'rtl']]), ('regression: run direction label', [2, 1, 1, 1, 1, 3, 3, 3, 3, 1, 4], [[10, 1, 'ltr'], [9, 1, 'rtl'], [5, 4, 'rtl'], [1, 4, 'rtl'], [0, 1, 'ltr']]), ('partial-repair probe', [3, 3], [[0, 2, 'rtl']]), ('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, 1, 1], [[0, 6, 'rtl']]), ('control layout', [1, 1], [[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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 direction label | [[7, 5, 'rtl'], [1, 3, 'ltr'], [4, 3, 'ltr'], [0, 1, 'rtl']] | [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']] | Failed |
| partial-repair probe | [[3, 1, 'rtl'], [0, 3, 'ltr']] | [[3, 1, 'rtl'], [0, 3, 'rtl']] | Failed |
| regression: run direction label | [[0, 2, 'ltr'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']] | [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']] | Failed |
| lowest odd is three | [[0, 1, 'ltr'], [1, 1, 'ltr'], [2, 1, 'ltr']] | [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']] | Failed |
| control layout | [[0, 4, 'rtl'], [4, 2, 'ltr']] | [[0, 4, 'rtl'], [4, 2, 'ltr']] | Passed |
| control layout | [[0, 5, 'ltr']] | [[0, 5, 'ltr']] | Passed |
| control layout | [[0, 2, 'ltr'], [2, 3, 'rtl']] | [[0, 2, 'ltr'], [2, 3, 'rtl']] | Passed |
SHA-256 / d48e23d6ebeb5d945ab4a4bfeda2aeec896e16f068ebd4751f7394556ea1fde3
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 direction label', [1, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1], [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']]), ('partial-repair probe', [3, 3, 3, 1], [[3, 1, 'rtl'], [0, 3, 'rtl']]), ('regression: run direction label', [3, 3, 2, 4, 4, 2, 4], [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']]), ('lowest odd is three', [2, 3, 2], [[0, 1, 'ltr'], [1, 1, 'rtl'], [2, 1, 'ltr']]), ('control layout', [1, 1, 1, 1, 0, 0], [[0, 4, 'rtl'], [4, 2, 'ltr']]), ('control layout', [0, 0, 0, 0, 0], [[0, 5, 'ltr']]), ('control layout', [0, 0, 1, 1, 1], [[0, 2, 'ltr'], [2, 3, 'rtl']])], [('regression: run direction label', [2, 2, 3, 3, 3, 3, 0], [[0, 2, 'ltr'], [2, 4, 'rtl'], [6, 1, 'ltr']]), ('regression: run direction label', [3, 3, 3, 3, 1, 1, 1, 1, 2], [[8, 1, 'ltr'], [4, 4, 'rtl'], [0, 4, 'rtl']]), ('regression: run direction label', [0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 2], [[0, 6, 'ltr'], [6, 4, 'rtl'], [10, 1, 'ltr']]), ('regression: run direction label', [2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1], [[10, 2, 'rtl'], [0, 1, 'ltr'], [1, 9, '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', [1, 1], [[0, 2, 'rtl']]), ('control layout', [1, 1], [[0, 2, 'rtl']])], [('regression: run direction label', [2, 2, 2, 2, 1, 1, 1, 1, 3, 3], [[8, 2, 'rtl'], [4, 4, 'rtl'], [0, 4, 'ltr']]), ('regression: run direction label', [3, 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, 2], [[11, 1, 'ltr'], [8, 3, 'rtl'], [5, 3, 'rtl'], [3, 2, 'rtl'], [0, 3, 'rtl']]), ('regression: run direction label', [2, 3], [[0, 1, 'ltr'], [1, 1, 'rtl']]), ('regression: run direction label', [2, 2, 1, 1, 1, 2, 2, 3, 3, 3, 0], [[5, 2, 'ltr'], [7, 3, 'rtl'], [2, 3, 'rtl'], [0, 2, 'ltr'], [10, 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, 1, 1, 1, 1], [[0, 8, 'rtl']]), ('control layout', [1, 1, 0], [[0, 2, 'rtl'], [2, 1, 'ltr']])], [('regression: run direction label', [2, 2, 2, 2, 2, 2, 4, 1, 3, 3, 3, 3], [[8, 4, 'rtl'], [7, 1, 'rtl'], [0, 6, 'ltr'], [6, 1, 'ltr']]), ('regression: run direction label', [2, 2, 2, 3, 3, 3, 1], [[6, 1, 'rtl'], [0, 3, 'ltr'], [3, 3, 'rtl']]), ('regression: run direction label', [2, 3], [[0, 1, 'ltr'], [1, 1, 'rtl']]), ('partial-repair probe', [0, 0, 0, 0, 3], [[0, 4, 'ltr'], [4, 1, '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', [1, 1, 1, 1, 1, 1, 1, 1], [[0, 8, 'rtl']]), ('control layout', [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [[0, 11, 'rtl']])], [('regression: run direction label', [4, 4, 4, 4, 1], [[4, 1, 'rtl'], [0, 4, 'ltr']]), ('regression: run direction label', [1, 3, 4], [[2, 1, 'ltr'], [1, 1, 'rtl'], [0, 1, 'rtl']]), ('regression: run direction label', [2, 1, 1, 1, 1, 3, 3, 3, 3, 1, 4], [[10, 1, 'ltr'], [9, 1, 'rtl'], [5, 4, 'rtl'], [1, 4, 'rtl'], [0, 1, 'ltr']]), ('partial-repair probe', [3, 3], [[0, 2, 'rtl']]), ('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, 1, 1], [[0, 6, 'rtl']]), ('control layout', [1, 1], [[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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 direction label | [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']] | [[7, 5, 'rtl'], [1, 3, 'rtl'], [4, 3, 'ltr'], [0, 1, 'rtl']] | Passed |
| partial-repair probe | [[3, 1, 'rtl'], [0, 3, 'rtl']] | [[3, 1, 'rtl'], [0, 3, 'rtl']] | Passed |
| regression: run direction label | [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 1, 'ltr']] | [[0, 2, 'rtl'], [2, 1, 'ltr'], [3, 2, 'ltr'], [5, 1, 'ltr'], [6, 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, 4, 'rtl'], [4, 2, 'ltr']] | [[0, 4, 'rtl'], [4, 2, 'ltr']] | Passed |
| control layout | [[0, 5, 'ltr']] | [[0, 5, 'ltr']] | Passed |
| control layout | [[0, 2, 'ltr'], [2, 3, 'rtl']] | [[0, 2, 'ltr'], [2, 3, 'rtl']] | Passed |
SHA-256 / 36ba28907e716296fc38c9251ffa975f4cd455d82045e27cd6406b5759c68ec6
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.316352+00:00.
Case digest / c9cd5cd7d5597b44645df0caac34454b47de7b61f4f0b36478130abe3f948605