FAILURE MAP
← Case archive

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.

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

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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