FA-78216 / Subtitle cue timing / Open access
Karaoke syllable timing: karaoke tag family · case 01
Sweep-fill and outline karaoke syllables vanish and later syllables start early.
ROOT CAUSE
Only the \k and \K tags are recognized.
VERIFIED REPAIR
Recognize \k, \K, \kf and \ko.
Unsuccessful approach: Adding \kf still drops \ko syllables and their durations.
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'\{\\(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: karaoke tag family', [[0, 300], '{\\k20}a{\\kf20}b'], [['a', 0, 200], ['b', 200, 300]]), ('regression variant: karaoke tag family', [[1000, 3000], '{\\kf50}{\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair probe: karaoke tag family', [[1000, 1800], '{\\ko50}{\\kf25}{\\k50} '], [[' ', 1750, 1800]]), ('partial repair variant: karaoke tag family', [[1000, 1800], '{\\k25}la{\\ko5}la{\\K5} '], [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]]), ('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', [[0, 300], '{\\k10}la{\\k5}la{\\k50}lo{\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('normal control', [[1000, 1500], '{\\K50}o {\\kf50} '], [['o ', 1000, 1500]]), ('normal control', [[1000, 1100], '{\\k5}Hel{\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]])], [('regression: karaoke tag family', [[0, 100], '{\\ko10}x{\\k1}y'], [['x', 0, 100]]), ('regression variant: karaoke tag family', [[1000, 1500], '{\\ko5} {\\ko25}{\\k5}o {\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]), ('partial repair probe: karaoke tag family', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair variant: karaoke tag family', [[0, 2000], '{\\ko50}{\\k50}la'], [['la', 500, 1000]]), ('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], '{\\k30}o '], [['o ', 0, 300]]), ('normal control', [[1000, 1300], '{\\K50}la{\\ko30}Hel{\\k50}Hel{\\K25} '], [['la', 1000, 1300]]), ('normal control', [[1000, 1500], '{\\k5}lo{\\K30}o '], [['lo', 1000, 1050], ['o ', 1050, 1350]])], [('regression: karaoke tag family', [[1000, 1500], '{\\kf10} {\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('regression variant: karaoke tag family', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair probe: karaoke tag family', [[0, 800], '{\\k0}lo{\\ko50}la{\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('partial repair variant: karaoke tag family', [[1000, 1800], '{\\K25}lo{\\K30}o {\\ko25}lo{\\ko10}la'], [['lo', 1000, 1250], ['o ', 1250, 1550], ['lo', 1550, 1800]]), ('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, 1800], '{\\K25}'], []), ('normal control', [[0, 300], '{\\k50}{\\K25}la{\\kf25}o {\\k50}lo'], []), ('normal control', [[1000, 1300], '{\\k30}Hel{\\kf30}la{\\k5} {\\K5}lo'], [['Hel', 1000, 1300]])], [('regression: karaoke tag family', [[0, 2000], '{\\K25}la{\\ko25}Hel{\\K0}Hel{\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('regression variant: karaoke tag family', [[0, 800], '{\\k0}lo{\\ko50}la{\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('partial repair probe: karaoke tag family', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: karaoke tag family', [[0, 500], '{\\kf10}{\\ko25} {\\k10}o '], [[' ', 100, 350], ['o ', 350, 450]]), ('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, 1500], '{\\K25}Hel{\\K5}la{\\k30}lo{\\ko5}lo'], [['Hel', 1000, 1250], ['la', 1250, 1300], ['lo', 1300, 1500]]), ('normal control', [[1000, 1300], '{\\k5} {\\k0}o {\\k30}Hel'], [[' ', 1000, 1050], ['o ', 1050, 1050], ['Hel', 1050, 1300]]), ('normal control', [[1000, 1100], '{\\K0}lo'], [['lo', 1000, 1000]])], [('regression: karaoke tag family', [[1000, 1800], '{\\ko50}{\\kf25}{\\k50} '], [[' ', 1750, 1800]]), ('regression variant: karaoke tag family', [[0, 800], '{\\kf25}o '], [['o ', 0, 250]]), ('partial repair probe: karaoke tag family', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: karaoke tag family', [[0, 100], '{\\ko10}{\\kf0}o {\\kf0} {\\kf30}lo'], []), ('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, 1100], '{\\K30}Hel{\\k0} {\\K30}Hel{\\kf25}Hel'], [['Hel', 1000, 1100]]), ('normal control', [[1000, 1300], '{\\k5}lo{\\k10}lo'], [['lo', 1000, 1050], ['lo', 1050, 1150]]), ('normal control', [[1000, 1300], '{\\K5}lo'], [['lo', 1000, 1050]])]]
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: karaoke tag family | [['a', 0, 200]] | [['a', 0, 200], ['b', 200, 300]] | Failed |
| regression variant: karaoke tag family | [['Hel', 1000, 1250]] | [['Hel', 1500, 1750]] | Failed |
| partial repair probe: karaoke tag family | [[' ', 1000, 1500]] | [[' ', 1750, 1800]] | Failed |
| partial repair variant: karaoke tag family | [['la', 1000, 1250], [' ', 1250, 1300]] | [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]] | 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 | [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]] | [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]] | Passed |
| normal control | [['o ', 1000, 1500]] | [['o ', 1000, 1500]] | Passed |
| normal control | [['Hel', 1000, 1050], ['la', 1050, 1100]] | [['Hel', 1000, 1050], ['la', 1050, 1100]] | Passed |
SHA-256 / 7fb95b1f973afe3dfc4d9bc24764dedc3398bcf13863ee58bc544033dc9b217d
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|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: karaoke tag family', [[0, 300], '{\\k20}a{\\kf20}b'], [['a', 0, 200], ['b', 200, 300]]), ('regression variant: karaoke tag family', [[1000, 3000], '{\\kf50}{\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair probe: karaoke tag family', [[1000, 1800], '{\\ko50}{\\kf25}{\\k50} '], [[' ', 1750, 1800]]), ('partial repair variant: karaoke tag family', [[1000, 1800], '{\\k25}la{\\ko5}la{\\K5} '], [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]]), ('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', [[0, 300], '{\\k10}la{\\k5}la{\\k50}lo{\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('normal control', [[1000, 1500], '{\\K50}o {\\kf50} '], [['o ', 1000, 1500]]), ('normal control', [[1000, 1100], '{\\k5}Hel{\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]])], [('regression: karaoke tag family', [[0, 100], '{\\ko10}x{\\k1}y'], [['x', 0, 100]]), ('regression variant: karaoke tag family', [[1000, 1500], '{\\ko5} {\\ko25}{\\k5}o {\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]), ('partial repair probe: karaoke tag family', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair variant: karaoke tag family', [[0, 2000], '{\\ko50}{\\k50}la'], [['la', 500, 1000]]), ('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], '{\\k30}o '], [['o ', 0, 300]]), ('normal control', [[1000, 1300], '{\\K50}la{\\ko30}Hel{\\k50}Hel{\\K25} '], [['la', 1000, 1300]]), ('normal control', [[1000, 1500], '{\\k5}lo{\\K30}o '], [['lo', 1000, 1050], ['o ', 1050, 1350]])], [('regression: karaoke tag family', [[1000, 1500], '{\\kf10} {\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('regression variant: karaoke tag family', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair probe: karaoke tag family', [[0, 800], '{\\k0}lo{\\ko50}la{\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('partial repair variant: karaoke tag family', [[1000, 1800], '{\\K25}lo{\\K30}o {\\ko25}lo{\\ko10}la'], [['lo', 1000, 1250], ['o ', 1250, 1550], ['lo', 1550, 1800]]), ('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, 1800], '{\\K25}'], []), ('normal control', [[0, 300], '{\\k50}{\\K25}la{\\kf25}o {\\k50}lo'], []), ('normal control', [[1000, 1300], '{\\k30}Hel{\\kf30}la{\\k5} {\\K5}lo'], [['Hel', 1000, 1300]])], [('regression: karaoke tag family', [[0, 2000], '{\\K25}la{\\ko25}Hel{\\K0}Hel{\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('regression variant: karaoke tag family', [[0, 800], '{\\k0}lo{\\ko50}la{\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('partial repair probe: karaoke tag family', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: karaoke tag family', [[0, 500], '{\\kf10}{\\ko25} {\\k10}o '], [[' ', 100, 350], ['o ', 350, 450]]), ('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, 1500], '{\\K25}Hel{\\K5}la{\\k30}lo{\\ko5}lo'], [['Hel', 1000, 1250], ['la', 1250, 1300], ['lo', 1300, 1500]]), ('normal control', [[1000, 1300], '{\\k5} {\\k0}o {\\k30}Hel'], [[' ', 1000, 1050], ['o ', 1050, 1050], ['Hel', 1050, 1300]]), ('normal control', [[1000, 1100], '{\\K0}lo'], [['lo', 1000, 1000]])], [('regression: karaoke tag family', [[1000, 1800], '{\\ko50}{\\kf25}{\\k50} '], [[' ', 1750, 1800]]), ('regression variant: karaoke tag family', [[0, 800], '{\\kf25}o '], [['o ', 0, 250]]), ('partial repair probe: karaoke tag family', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: karaoke tag family', [[0, 100], '{\\ko10}{\\kf0}o {\\kf0} {\\kf30}lo'], []), ('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, 1100], '{\\K30}Hel{\\k0} {\\K30}Hel{\\kf25}Hel'], [['Hel', 1000, 1100]]), ('normal control', [[1000, 1300], '{\\k5}lo{\\k10}lo'], [['lo', 1000, 1050], ['lo', 1050, 1150]]), ('normal control', [[1000, 1300], '{\\K5}lo'], [['lo', 1000, 1050]])]]
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: karaoke tag family | [['a', 0, 200], ['b', 200, 300]] | [['a', 0, 200], ['b', 200, 300]] | Passed |
| regression variant: karaoke tag family | [['Hel', 1500, 1750]] | [['Hel', 1500, 1750]] | Passed |
| partial repair probe: karaoke tag family | [[' ', 1250, 1750]] | [[' ', 1750, 1800]] | Failed |
| partial repair variant: karaoke tag family | [['la', 1000, 1250], [' ', 1250, 1300]] | [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]] | 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 | [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]] | [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]] | Passed |
| normal control | [['o ', 1000, 1500]] | [['o ', 1000, 1500]] | Passed |
| normal control | [['Hel', 1000, 1050], ['la', 1050, 1100]] | [['Hel', 1000, 1050], ['la', 1050, 1100]] | Passed |
SHA-256 / 40a6578b3c508660e7e1a6568f880cf3eae026e07c38c595340ed4889e97bf3d
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: karaoke tag family', [[0, 300], '{\\k20}a{\\kf20}b'], [['a', 0, 200], ['b', 200, 300]]), ('regression variant: karaoke tag family', [[1000, 3000], '{\\kf50}{\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair probe: karaoke tag family', [[1000, 1800], '{\\ko50}{\\kf25}{\\k50} '], [[' ', 1750, 1800]]), ('partial repair variant: karaoke tag family', [[1000, 1800], '{\\k25}la{\\ko5}la{\\K5} '], [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]]), ('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', [[0, 300], '{\\k10}la{\\k5}la{\\k50}lo{\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('normal control', [[1000, 1500], '{\\K50}o {\\kf50} '], [['o ', 1000, 1500]]), ('normal control', [[1000, 1100], '{\\k5}Hel{\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]])], [('regression: karaoke tag family', [[0, 100], '{\\ko10}x{\\k1}y'], [['x', 0, 100]]), ('regression variant: karaoke tag family', [[1000, 1500], '{\\ko5} {\\ko25}{\\k5}o {\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]), ('partial repair probe: karaoke tag family', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair variant: karaoke tag family', [[0, 2000], '{\\ko50}{\\k50}la'], [['la', 500, 1000]]), ('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], '{\\k30}o '], [['o ', 0, 300]]), ('normal control', [[1000, 1300], '{\\K50}la{\\ko30}Hel{\\k50}Hel{\\K25} '], [['la', 1000, 1300]]), ('normal control', [[1000, 1500], '{\\k5}lo{\\K30}o '], [['lo', 1000, 1050], ['o ', 1050, 1350]])], [('regression: karaoke tag family', [[1000, 1500], '{\\kf10} {\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('regression variant: karaoke tag family', [[0, 300], '{\\ko25}la{\\k25}o {\\kf5}la'], [['la', 0, 250], ['o ', 250, 300]]), ('partial repair probe: karaoke tag family', [[0, 800], '{\\k0}lo{\\ko50}la{\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('partial repair variant: karaoke tag family', [[1000, 1800], '{\\K25}lo{\\K30}o {\\ko25}lo{\\ko10}la'], [['lo', 1000, 1250], ['o ', 1250, 1550], ['lo', 1550, 1800]]), ('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, 1800], '{\\K25}'], []), ('normal control', [[0, 300], '{\\k50}{\\K25}la{\\kf25}o {\\k50}lo'], []), ('normal control', [[1000, 1300], '{\\k30}Hel{\\kf30}la{\\k5} {\\K5}lo'], [['Hel', 1000, 1300]])], [('regression: karaoke tag family', [[0, 2000], '{\\K25}la{\\ko25}Hel{\\K0}Hel{\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('regression variant: karaoke tag family', [[0, 800], '{\\k0}lo{\\ko50}la{\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('partial repair probe: karaoke tag family', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: karaoke tag family', [[0, 500], '{\\kf10}{\\ko25} {\\k10}o '], [[' ', 100, 350], ['o ', 350, 450]]), ('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, 1500], '{\\K25}Hel{\\K5}la{\\k30}lo{\\ko5}lo'], [['Hel', 1000, 1250], ['la', 1250, 1300], ['lo', 1300, 1500]]), ('normal control', [[1000, 1300], '{\\k5} {\\k0}o {\\k30}Hel'], [[' ', 1000, 1050], ['o ', 1050, 1050], ['Hel', 1050, 1300]]), ('normal control', [[1000, 1100], '{\\K0}lo'], [['lo', 1000, 1000]])], [('regression: karaoke tag family', [[1000, 1800], '{\\ko50}{\\kf25}{\\k50} '], [[' ', 1750, 1800]]), ('regression variant: karaoke tag family', [[0, 800], '{\\kf25}o '], [['o ', 0, 250]]), ('partial repair probe: karaoke tag family', [[0, 500], '{\\ko30}Hel{\\K5}Hel{\\k50}lo{\\K30}{\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('partial repair variant: karaoke tag family', [[0, 100], '{\\ko10}{\\kf0}o {\\kf0} {\\kf30}lo'], []), ('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, 1100], '{\\K30}Hel{\\k0} {\\K30}Hel{\\kf25}Hel'], [['Hel', 1000, 1100]]), ('normal control', [[1000, 1300], '{\\k5}lo{\\k10}lo'], [['lo', 1000, 1050], ['lo', 1050, 1150]]), ('normal control', [[1000, 1300], '{\\K5}lo'], [['lo', 1000, 1050]])]]
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: karaoke tag family | [['a', 0, 200], ['b', 200, 300]] | [['a', 0, 200], ['b', 200, 300]] | Passed |
| regression variant: karaoke tag family | [['Hel', 1500, 1750]] | [['Hel', 1500, 1750]] | Passed |
| partial repair probe: karaoke tag family | [[' ', 1750, 1800]] | [[' ', 1750, 1800]] | Passed |
| partial repair variant: karaoke tag family | [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]] | [['la', 1000, 1250], ['la', 1250, 1300], [' ', 1300, 1350]] | 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 | [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]] | [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]] | Passed |
| normal control | [['o ', 1000, 1500]] | [['o ', 1000, 1500]] | Passed |
| normal control | [['Hel', 1000, 1050], ['la', 1050, 1100]] | [['Hel', 1000, 1050], ['la', 1050, 1100]] | Passed |
SHA-256 / d9d8b8c7811a608ee67b25fdb4c79149ec60d0ea7d6fde5a2f5a9c2fc4758944
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.325458+00:00.
Case digest / fe06b71651d1a24886b11e06bb8311ff8d33607177561ef2600a605da3d9db32