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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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