FAILURE MAP
← Case archive

FA-78236 / Subtitle cue timing / Open access

Karaoke syllable timing: late syllable test · case 01

A zero-length syllable appears exactly at the cue end.

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

ROOT CAUSE

Syllables starting exactly at the cue end are kept.

VERIFIED REPAIR

Keep syllables only when they start before the cue end.

Unsuccessful approach: Requiring the whole syllable to fit drops partially overflowing syllables instead of clipping them.

Case contract

Karaoke text is a sequence of {\k|\K|\kf|\ko<cs>}syllable with durations in centiseconds. Syllable i starts at cue start plus the sum of all previous durations (empty syllables still consume time). Syllables starting at or after the cue end are dropped; others are clipped to the cue end. Output [syllable,start_ms,end_ms].

Why this case matters

Subtitle timing defects shift, hide or overlap captions that viewers depend on for comprehension and accessibility.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(cue, text):
    cs,ce=cue
    out=[]
    t=cs
    for m in re.finditer(r'\{\\(kf|ko|k|K)(\d+)\}([^{]*)',text):
        d=int(m.group(2))*10
        syl=m.group(3)
        if syl and t<=ce:
            out.append([syl,t,min(t+d,ce)])
        t+=d
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: late syllable test', [[0, 100], '{\\ko10}x{\\k1}y'], [['x', 0, 100]]), ('regression variant: late syllable test', [[0, 100], '{\\kf10}lo{\\k25}Hel{\\k25}o '], [['lo', 0, 100]]), ('partial repair probe: late syllable test', [[0, 300], '{\\k10}la{\\k5}la{\\k50}lo{\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair variant: late syllable test', [[1000, 1300], '{\\K50}la{\\ko30}Hel{\\k50}Hel{\\K25} '], [['la', 1000, 1300]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 1500], '{\\kf10} {\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('normal control', [[0, 2000], '{\\K25}la{\\ko25}Hel{\\K0}Hel{\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('normal control', [[1000, 1500], '{\\ko5} {\\ko25}{\\k5}o {\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]])], [('regression: late syllable test', [[1000, 1500], '{\\K50}o {\\kf50} '], [['o ', 1000, 1500]]), ('regression variant: late syllable test', [[1000, 1500], '{\\ko50}Hel{\\k5}o '], [['Hel', 1000, 1500]]), ('partial repair probe: late syllable test', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair variant: late syllable test', [[1000, 1100], '{\\K50}la'], [['la', 1000, 1100]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('normal control', [[1000, 1100], '{\\k5}Hel{\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]]), ('normal control', [[0, 500], '{\\k30}o '], [['o ', 0, 300]]), ('normal control', [[0, 300], '{\\k10}'], [])], [('regression: late syllable test', [[1000, 1100], '{\\k0}Hel{\\K10} {\\k5}o {\\k5} {\\k10}'], [['Hel', 1000, 1000], [' ', 1000, 1100]]), ('regression variant: late syllable test', [[1000, 1300], '{\\k30}Hel{\\kf30}la{\\k5} {\\K5}lo'], [['Hel', 1000, 1300]]), ('partial repair probe: late syllable test', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: late syllable test', [[0, 500], '{\\ko10}la{\\K50} {\\kf25}lo{\\k25}o '], [['la', 0, 100], [' ', 100, 500]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 3000], '{\\k30}{\\ko0}Hel{\\kf50}la'], [['Hel', 1300, 1300], ['la', 1300, 1800]]), ('normal control', [[0, 2000], '{\\ko50}{\\k50}la'], [['la', 500, 1000]]), ('normal control', [[1000, 1800], '{\\k0}Hel{\\ko0}Hel{\\K25}o '], [['Hel', 1000, 1000], ['Hel', 1000, 1000], ['o ', 1000, 1250]])], [('regression: late syllable test', [[1000, 1800], '{\\K25}lo{\\K30}o {\\ko25}lo{\\ko10}la'], [['lo', 1000, 1250], ['o ', 1250, 1550], ['lo', 1550, 1800]]), ('regression variant: late syllable test', [[1000, 1500], '{\\k50} {\\K10} {\\k50}lo'], [[' ', 1000, 1500]]), ('partial repair probe: late syllable test', [[0, 500], '{\\kf30}Hel{\\k50} {\\k0}lo'], [['Hel', 0, 300], [' ', 300, 500]]), ('partial repair variant: late syllable test', [[1000, 1500], '{\\ko25}{\\k10}{\\K50}la{\\ko30}{\\ko50}o '], [['la', 1350, 1500]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('normal control', [[0, 500], '{\\ko5}la'], [['la', 0, 50]]), ('normal control', [[1000, 1300], '{\\ko50}{\\K50}la{\\ko5}lo{\\k25}o '], []), ('normal control', [[1000, 1500], '{\\k5}lo{\\K30}o '], [['lo', 1000, 1050], ['o ', 1050, 1350]])], [('regression: late syllable test', [[0, 100], '{\\ko10}{\\kf0}o {\\kf0} {\\kf30}lo'], []), ('regression variant: late syllable test', [[0, 100], '{\\K10}la{\\K0}{\\kf10}lo'], [['la', 0, 100]]), ('partial repair probe: late syllable test', [[0, 100], '{\\kf0}{\\k30} {\\k0}o {\\ko5}Hel{\\k10} '], [[' ', 0, 100]]), ('partial repair variant: late syllable test', [[1000, 1300], '{\\kf5} {\\k30}o {\\k10}la'], [[' ', 1000, 1050], ['o ', 1050, 1300]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 1500], '{\\k0}{\\kf5}lo{\\K25} '], [['lo', 1000, 1050], [' ', 1050, 1300]]), ('normal control', [[0, 300], '{\\k5} '], [[' ', 0, 50]]), ('normal control', [[1000, 3000], '{\\ko5}Hel{\\K50}la{\\k0} {\\kf5}lo'], [['Hel', 1000, 1050], ['la', 1050, 1550], [' ', 1550, 1550], ['lo', 1550, 1600]])]]
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
regression: late syllable test[['x', 0, 100], ['y', 100, 100]][['x', 0, 100]]Failed
regression variant: late syllable test[['lo', 0, 100], ['Hel', 100, 100]][['lo', 0, 100]]Failed
partial repair probe: late syllable test[['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]][['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]Passed
partial repair variant: late syllable test[['la', 1000, 1300]][['la', 1000, 1300]]Passed
boundary control[['Hel', 0, 500], ['lo', 500, 1000]][['Hel', 0, 500], ['lo', 500, 1000]]Passed
boundary control[['a', 0, 200]][['a', 0, 200]]Passed
normal control[[' ', 1000, 1100], ['la', 1100, 1200]][[' ', 1000, 1100], ['la', 1100, 1200]]Passed
normal control[['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]][['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]Passed
normal control[[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]][[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]Passed

SHA-256 / 8196122da11e5e4ff89299f101a6e94824e6c8da42dbe907249665ecaca4f74e

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(cue, text):
    cs,ce=cue
    out=[]
    t=cs
    for m in re.finditer(r'\{\\(kf|ko|k|K)(\d+)\}([^{]*)',text):
        d=int(m.group(2))*10
        syl=m.group(3)
        if syl and t+d<=ce:
            out.append([syl,t,min(t+d,ce)])
        t+=d
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: late syllable test', [[0, 100], '{\\ko10}x{\\k1}y'], [['x', 0, 100]]), ('regression variant: late syllable test', [[0, 100], '{\\kf10}lo{\\k25}Hel{\\k25}o '], [['lo', 0, 100]]), ('partial repair probe: late syllable test', [[0, 300], '{\\k10}la{\\k5}la{\\k50}lo{\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair variant: late syllable test', [[1000, 1300], '{\\K50}la{\\ko30}Hel{\\k50}Hel{\\K25} '], [['la', 1000, 1300]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 1500], '{\\kf10} {\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('normal control', [[0, 2000], '{\\K25}la{\\ko25}Hel{\\K0}Hel{\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('normal control', [[1000, 1500], '{\\ko5} {\\ko25}{\\k5}o {\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]])], [('regression: late syllable test', [[1000, 1500], '{\\K50}o {\\kf50} '], [['o ', 1000, 1500]]), ('regression variant: late syllable test', [[1000, 1500], '{\\ko50}Hel{\\k5}o '], [['Hel', 1000, 1500]]), ('partial repair probe: late syllable test', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair variant: late syllable test', [[1000, 1100], '{\\K50}la'], [['la', 1000, 1100]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('normal control', [[1000, 1100], '{\\k5}Hel{\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]]), ('normal control', [[0, 500], '{\\k30}o '], [['o ', 0, 300]]), ('normal control', [[0, 300], '{\\k10}'], [])], [('regression: late syllable test', [[1000, 1100], '{\\k0}Hel{\\K10} {\\k5}o {\\k5} {\\k10}'], [['Hel', 1000, 1000], [' ', 1000, 1100]]), ('regression variant: late syllable test', [[1000, 1300], '{\\k30}Hel{\\kf30}la{\\k5} {\\K5}lo'], [['Hel', 1000, 1300]]), ('partial repair probe: late syllable test', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: late syllable test', [[0, 500], '{\\ko10}la{\\K50} {\\kf25}lo{\\k25}o '], [['la', 0, 100], [' ', 100, 500]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 3000], '{\\k30}{\\ko0}Hel{\\kf50}la'], [['Hel', 1300, 1300], ['la', 1300, 1800]]), ('normal control', [[0, 2000], '{\\ko50}{\\k50}la'], [['la', 500, 1000]]), ('normal control', [[1000, 1800], '{\\k0}Hel{\\ko0}Hel{\\K25}o '], [['Hel', 1000, 1000], ['Hel', 1000, 1000], ['o ', 1000, 1250]])], [('regression: late syllable test', [[1000, 1800], '{\\K25}lo{\\K30}o {\\ko25}lo{\\ko10}la'], [['lo', 1000, 1250], ['o ', 1250, 1550], ['lo', 1550, 1800]]), ('regression variant: late syllable test', [[1000, 1500], '{\\k50} {\\K10} {\\k50}lo'], [[' ', 1000, 1500]]), ('partial repair probe: late syllable test', [[0, 500], '{\\kf30}Hel{\\k50} {\\k0}lo'], [['Hel', 0, 300], [' ', 300, 500]]), ('partial repair variant: late syllable test', [[1000, 1500], '{\\ko25}{\\k10}{\\K50}la{\\ko30}{\\ko50}o '], [['la', 1350, 1500]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('normal control', [[0, 500], '{\\ko5}la'], [['la', 0, 50]]), ('normal control', [[1000, 1300], '{\\ko50}{\\K50}la{\\ko5}lo{\\k25}o '], []), ('normal control', [[1000, 1500], '{\\k5}lo{\\K30}o '], [['lo', 1000, 1050], ['o ', 1050, 1350]])], [('regression: late syllable test', [[0, 100], '{\\ko10}{\\kf0}o {\\kf0} {\\kf30}lo'], []), ('regression variant: late syllable test', [[0, 100], '{\\K10}la{\\K0}{\\kf10}lo'], [['la', 0, 100]]), ('partial repair probe: late syllable test', [[0, 100], '{\\kf0}{\\k30} {\\k0}o {\\ko5}Hel{\\k10} '], [[' ', 0, 100]]), ('partial repair variant: late syllable test', [[1000, 1300], '{\\kf5} {\\k30}o {\\k10}la'], [[' ', 1000, 1050], ['o ', 1050, 1300]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 1500], '{\\k0}{\\kf5}lo{\\K25} '], [['lo', 1000, 1050], [' ', 1050, 1300]]), ('normal control', [[0, 300], '{\\k5} '], [[' ', 0, 50]]), ('normal control', [[1000, 3000], '{\\ko5}Hel{\\K50}la{\\k0} {\\kf5}lo'], [['Hel', 1000, 1050], ['la', 1050, 1550], [' ', 1550, 1550], ['lo', 1550, 1600]])]]
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
regression: late syllable test[['x', 0, 100]][['x', 0, 100]]Passed
regression variant: late syllable test[['lo', 0, 100]][['lo', 0, 100]]Passed
partial repair probe: late syllable test[['la', 0, 100], ['la', 100, 150]][['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]Failed
partial repair variant: late syllable test[][['la', 1000, 1300]]Failed
boundary control[['Hel', 0, 500], ['lo', 500, 1000]][['Hel', 0, 500], ['lo', 500, 1000]]Passed
boundary control[['a', 0, 200]][['a', 0, 200]]Passed
normal control[[' ', 1000, 1100], ['la', 1100, 1200]][[' ', 1000, 1100], ['la', 1100, 1200]]Passed
normal control[['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]][['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]Passed
normal control[[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]][[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]Passed

SHA-256 / 3a75d2d3a3add1e788f0b854ee33a82dcaf17a06df23bbf5fd9f8e8f5e2c41be

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(cue, text):
    cs,ce=cue
    out=[]
    t=cs
    for m in re.finditer(r'\{\\(kf|ko|k|K)(\d+)\}([^{]*)',text):
        d=int(m.group(2))*10
        syl=m.group(3)
        if syl and t<ce:
            out.append([syl,t,min(t+d,ce)])
        t+=d
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: late syllable test', [[0, 100], '{\\ko10}x{\\k1}y'], [['x', 0, 100]]), ('regression variant: late syllable test', [[0, 100], '{\\kf10}lo{\\k25}Hel{\\k25}o '], [['lo', 0, 100]]), ('partial repair probe: late syllable test', [[0, 300], '{\\k10}la{\\k5}la{\\k50}lo{\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair variant: late syllable test', [[1000, 1300], '{\\K50}la{\\ko30}Hel{\\k50}Hel{\\K25} '], [['la', 1000, 1300]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 1500], '{\\kf10} {\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('normal control', [[0, 2000], '{\\K25}la{\\ko25}Hel{\\K0}Hel{\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('normal control', [[1000, 1500], '{\\ko5} {\\ko25}{\\k5}o {\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]])], [('regression: late syllable test', [[1000, 1500], '{\\K50}o {\\kf50} '], [['o ', 1000, 1500]]), ('regression variant: late syllable test', [[1000, 1500], '{\\ko50}Hel{\\k5}o '], [['Hel', 1000, 1500]]), ('partial repair probe: late syllable test', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair variant: late syllable test', [[1000, 1100], '{\\K50}la'], [['la', 1000, 1100]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('normal control', [[1000, 1100], '{\\k5}Hel{\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]]), ('normal control', [[0, 500], '{\\k30}o '], [['o ', 0, 300]]), ('normal control', [[0, 300], '{\\k10}'], [])], [('regression: late syllable test', [[1000, 1100], '{\\k0}Hel{\\K10} {\\k5}o {\\k5} {\\k10}'], [['Hel', 1000, 1000], [' ', 1000, 1100]]), ('regression variant: late syllable test', [[1000, 1300], '{\\k30}Hel{\\kf30}la{\\k5} {\\K5}lo'], [['Hel', 1000, 1300]]), ('partial repair probe: late syllable test', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: late syllable test', [[0, 500], '{\\ko10}la{\\K50} {\\kf25}lo{\\k25}o '], [['la', 0, 100], [' ', 100, 500]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 3000], '{\\k30}{\\ko0}Hel{\\kf50}la'], [['Hel', 1300, 1300], ['la', 1300, 1800]]), ('normal control', [[0, 2000], '{\\ko50}{\\k50}la'], [['la', 500, 1000]]), ('normal control', [[1000, 1800], '{\\k0}Hel{\\ko0}Hel{\\K25}o '], [['Hel', 1000, 1000], ['Hel', 1000, 1000], ['o ', 1000, 1250]])], [('regression: late syllable test', [[1000, 1800], '{\\K25}lo{\\K30}o {\\ko25}lo{\\ko10}la'], [['lo', 1000, 1250], ['o ', 1250, 1550], ['lo', 1550, 1800]]), ('regression variant: late syllable test', [[1000, 1500], '{\\k50} {\\K10} {\\k50}lo'], [[' ', 1000, 1500]]), ('partial repair probe: late syllable test', [[0, 500], '{\\kf30}Hel{\\k50} {\\k0}lo'], [['Hel', 0, 300], [' ', 300, 500]]), ('partial repair variant: late syllable test', [[1000, 1500], '{\\ko25}{\\k10}{\\K50}la{\\ko30}{\\ko50}o '], [['la', 1350, 1500]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('normal control', [[0, 500], '{\\ko5}la'], [['la', 0, 50]]), ('normal control', [[1000, 1300], '{\\ko50}{\\K50}la{\\ko5}lo{\\k25}o '], []), ('normal control', [[1000, 1500], '{\\k5}lo{\\K30}o '], [['lo', 1000, 1050], ['o ', 1050, 1350]])], [('regression: late syllable test', [[0, 100], '{\\ko10}{\\kf0}o {\\kf0} {\\kf30}lo'], []), ('regression variant: late syllable test', [[0, 100], '{\\K10}la{\\K0}{\\kf10}lo'], [['la', 0, 100]]), ('partial repair probe: late syllable test', [[0, 100], '{\\kf0}{\\k30} {\\k0}o {\\ko5}Hel{\\k10} '], [[' ', 0, 100]]), ('partial repair variant: late syllable test', [[1000, 1300], '{\\kf5} {\\k30}o {\\k10}la'], [[' ', 1000, 1050], ['o ', 1050, 1300]]), ('boundary control', [[0, 1000], '{\\k50}Hel{\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('boundary control', [[0, 200], '{\\k20}a{\\k10}{\\k5}b'], [['a', 0, 200]]), ('normal control', [[1000, 1500], '{\\k0}{\\kf5}lo{\\K25} '], [['lo', 1000, 1050], [' ', 1050, 1300]]), ('normal control', [[0, 300], '{\\k5} '], [[' ', 0, 50]]), ('normal control', [[1000, 3000], '{\\ko5}Hel{\\K50}la{\\k0} {\\kf5}lo'], [['Hel', 1000, 1050], ['la', 1050, 1550], [' ', 1550, 1550], ['lo', 1550, 1600]])]]
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
regression: late syllable test[['x', 0, 100]][['x', 0, 100]]Passed
regression variant: late syllable test[['lo', 0, 100]][['lo', 0, 100]]Passed
partial repair probe: late syllable test[['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]][['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]Passed
partial repair variant: late syllable test[['la', 1000, 1300]][['la', 1000, 1300]]Passed
boundary control[['Hel', 0, 500], ['lo', 500, 1000]][['Hel', 0, 500], ['lo', 500, 1000]]Passed
boundary control[['a', 0, 200]][['a', 0, 200]]Passed
normal control[[' ', 1000, 1100], ['la', 1100, 1200]][[' ', 1000, 1100], ['la', 1100, 1200]]Passed
normal control[['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]][['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]Passed
normal control[[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]][[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]Passed

SHA-256 / 0023f108b87ce72a031b84921e5500ccd40e5b8f9e12900665bca86242b123e6

Verification & scope

A deterministic bounded teaching model with a stipulated toy contract; it does not claim conformance to any subtitle standard. 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:33.381755+00:00.

Case digest / 474d2f6b6dd79c9168b616b47514c3fdd7f42e5898bf50434dd2fa67eb99cc3d