{"abstract":"Karaoke highlighting races through the line ten times too fast.","category":"Subtitle cue timing","checks":7,"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].","contract_signature":"cue, text","evaluation_group":"w2-subtitle-cue-timing-karaoke-syllables","failed_approach":"Multiplying by 100 treats the durations as deciseconds.","family":"w2-subtitle-cue-timing-karaoke-syllables-centisecond-unit","id":"FA-78221","implementations":{"attempt":{"sha256":"f7c2234e4d59a4864d3df8283c2b8b5964d394f5f72c40b30315610bbf664145","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(cue, text):\n    cs,ce=cue\n    out=[]\n    t=cs\n    for m in re.finditer(r'\\{\\\\(kf|ko|k|K)(\\d+)\\}([^{]*)',text):\n        d=int(m.group(2))*100\n        syl=m.group(3)\n        if syl and t<ce:\n            out.append([syl,t,min(t+d,ce)])\n        t+=d\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: centisecond unit', [[0, 1000], '{\\\\k50}Hel{\\\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('regression variant: centisecond unit', [[0, 2000], '{\\\\K25}la{\\\\ko25}Hel{\\\\K0}Hel{\\\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('partial repair probe: centisecond unit', [[1000, 1500], '{\\\\kf10} {\\\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('partial repair variant: centisecond unit', [[0, 800], '{\\\\k0}lo{\\\\ko50}la{\\\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('normal control', [[0, 300], '{\\\\k10}'], []), ('normal control', [[1000, 1100], '{\\\\K0}lo'], [['lo', 1000, 1000]]), ('normal control', [[1000, 1500], '{\\\\kf0}'], [])], [('regression: centisecond unit', [[0, 300], '{\\\\k20}a{\\\\kf20}b'], [['a', 0, 200], ['b', 200, 300]]), ('regression variant: centisecond unit', [[1000, 1800], '{\\\\ko50}{\\\\kf25}{\\\\k50} '], [[' ', 1750, 1800]]), ('partial repair probe: centisecond unit', [[0, 2000], '{\\\\K25}la{\\\\ko25}Hel{\\\\K0}Hel{\\\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('partial repair variant: centisecond unit', [[1000, 1100], '{\\\\k5}Hel{\\\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]]), ('normal control', [[1000, 1100], '{\\\\ko30}'], []), ('normal control', [[1000, 3000], '{\\\\ko5}'], []), ('normal control', [[0, 500], '{\\\\kf5}'], [])], [('regression: centisecond unit', [[0, 200], '{\\\\k20}a{\\\\k10}{\\\\k5}b'], [['a', 0, 200]]), ('regression variant: centisecond unit', [[1000, 3000], '{\\\\kf50}{\\\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair probe: centisecond unit', [[1000, 1800], '{\\\\ko50}{\\\\kf25}{\\\\k50} '], [[' ', 1750, 1800]]), ('partial repair variant: centisecond unit', [[0, 800], '{\\\\kf25}o '], [['o ', 0, 250]]), ('normal control', [[0, 100], '{\\\\k5}'], []), ('normal control', [[1000, 1100], '{\\\\K5}'], []), ('normal control', [[0, 100], '{\\\\k5}{\\\\K25}'], [])], [('regression: centisecond unit', [[0, 100], '{\\\\ko10}x{\\\\k1}y'], [['x', 0, 100]]), ('regression variant: centisecond unit', [[0, 300], '{\\\\k10}la{\\\\k5}la{\\\\k50}lo{\\\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair probe: centisecond unit', [[1000, 3000], '{\\\\kf50}{\\\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair variant: centisecond unit', [[1000, 1500], '{\\\\k30}lo{\\\\k5} {\\\\k0}'], [['lo', 1000, 1300], [' ', 1300, 1350]]), ('normal control', [[1000, 1300], '{\\\\K0}o '], [['o ', 1000, 1000]]), ('normal control', [[0, 2000], '{\\\\kf0}la{\\\\k5}'], [['la', 0, 0]]), ('normal control', [[1000, 1100], '{\\\\ko5}'], [])], [('regression: centisecond unit', [[1000, 1500], '{\\\\kf10} {\\\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('regression variant: centisecond unit', [[1000, 1500], '{\\\\ko5} {\\\\ko25}{\\\\k5}o {\\\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]), ('partial repair probe: centisecond unit', [[0, 300], '{\\\\k10}la{\\\\k5}la{\\\\k50}lo{\\\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair variant: centisecond unit', [[0, 500], '{\\\\ko30}Hel{\\\\K5}Hel{\\\\k50}lo{\\\\K30}{\\\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('normal control', [[1000, 1800], '{\\\\k50}'], []), ('normal control', [[1000, 1100], '{\\\\k0}lo'], [['lo', 1000, 1000]]), ('normal control', [[0, 300], '{\\\\ko30}'], [])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"7f1b58c186e5473f86fc8377379e8bd0a7450577644598334115d362a98cc157","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(cue, text):\n    cs,ce=cue\n    out=[]\n    t=cs\n    for m in re.finditer(r'\\{\\\\(kf|ko|k|K)(\\d+)\\}([^{]*)',text):\n        d=int(m.group(2))\n        syl=m.group(3)\n        if syl and t<ce:\n            out.append([syl,t,min(t+d,ce)])\n        t+=d\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: centisecond unit', [[0, 1000], '{\\\\k50}Hel{\\\\k50}lo'], [['Hel', 0, 500], ['lo', 500, 1000]]), ('regression variant: centisecond unit', [[0, 2000], '{\\\\K25}la{\\\\ko25}Hel{\\\\K0}Hel{\\\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('partial repair probe: centisecond unit', [[1000, 1500], '{\\\\kf10} {\\\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('partial repair variant: centisecond unit', [[0, 800], '{\\\\k0}lo{\\\\ko50}la{\\\\kf30}lo'], [['lo', 0, 0], ['la', 0, 500], ['lo', 500, 800]]), ('normal control', [[0, 300], '{\\\\k10}'], []), ('normal control', [[1000, 1100], '{\\\\K0}lo'], [['lo', 1000, 1000]]), ('normal control', [[1000, 1500], '{\\\\kf0}'], [])], [('regression: centisecond unit', [[0, 300], '{\\\\k20}a{\\\\kf20}b'], [['a', 0, 200], ['b', 200, 300]]), ('regression variant: centisecond unit', [[1000, 1800], '{\\\\ko50}{\\\\kf25}{\\\\k50} '], [[' ', 1750, 1800]]), ('partial repair probe: centisecond unit', [[0, 2000], '{\\\\K25}la{\\\\ko25}Hel{\\\\K0}Hel{\\\\ko25}'], [['la', 0, 250], ['Hel', 250, 500], ['Hel', 500, 500]]), ('partial repair variant: centisecond unit', [[1000, 1100], '{\\\\k5}Hel{\\\\k5}la'], [['Hel', 1000, 1050], ['la', 1050, 1100]]), ('normal control', [[1000, 1100], '{\\\\ko30}'], []), ('normal control', [[1000, 3000], '{\\\\ko5}'], []), ('normal control', [[0, 500], '{\\\\kf5}'], [])], [('regression: centisecond unit', [[0, 200], '{\\\\k20}a{\\\\k10}{\\\\k5}b'], [['a', 0, 200]]), ('regression variant: centisecond unit', [[1000, 3000], '{\\\\kf50}{\\\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair probe: centisecond unit', [[1000, 1800], '{\\\\ko50}{\\\\kf25}{\\\\k50} '], [[' ', 1750, 1800]]), ('partial repair variant: centisecond unit', [[0, 800], '{\\\\kf25}o '], [['o ', 0, 250]]), ('normal control', [[0, 100], '{\\\\k5}'], []), ('normal control', [[1000, 1100], '{\\\\K5}'], []), ('normal control', [[0, 100], '{\\\\k5}{\\\\K25}'], [])], [('regression: centisecond unit', [[0, 100], '{\\\\ko10}x{\\\\k1}y'], [['x', 0, 100]]), ('regression variant: centisecond unit', [[0, 300], '{\\\\k10}la{\\\\k5}la{\\\\k50}lo{\\\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair probe: centisecond unit', [[1000, 3000], '{\\\\kf50}{\\\\k25}Hel'], [['Hel', 1500, 1750]]), ('partial repair variant: centisecond unit', [[1000, 1500], '{\\\\k30}lo{\\\\k5} {\\\\k0}'], [['lo', 1000, 1300], [' ', 1300, 1350]]), ('normal control', [[1000, 1300], '{\\\\K0}o '], [['o ', 1000, 1000]]), ('normal control', [[0, 2000], '{\\\\kf0}la{\\\\k5}'], [['la', 0, 0]]), ('normal control', [[1000, 1100], '{\\\\ko5}'], [])], [('regression: centisecond unit', [[1000, 1500], '{\\\\kf10} {\\\\k10}la'], [[' ', 1000, 1100], ['la', 1100, 1200]]), ('regression variant: centisecond unit', [[1000, 1500], '{\\\\ko5} {\\\\ko25}{\\\\k5}o {\\\\k0} '], [[' ', 1000, 1050], ['o ', 1300, 1350], [' ', 1350, 1350]]), ('partial repair probe: centisecond unit', [[0, 300], '{\\\\k10}la{\\\\k5}la{\\\\k50}lo{\\\\ko25}lo'], [['la', 0, 100], ['la', 100, 150], ['lo', 150, 300]]), ('partial repair variant: centisecond unit', [[0, 500], '{\\\\ko30}Hel{\\\\K5}Hel{\\\\k50}lo{\\\\K30}{\\\\k30}lo'], [['Hel', 0, 300], ['Hel', 300, 350], ['lo', 350, 500]]), ('normal control', [[1000, 1800], '{\\\\k50}'], []), ('normal control', [[1000, 1100], '{\\\\k0}lo'], [['lo', 1000, 1000]]), ('normal control', [[0, 300], '{\\\\ko30}'], [])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-subtitle-cue-timing-karaoke-syllables-centisecond-unit","generated_at":"2026-09-29T14:49:33.334380+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Subtitle timing defects shift, hide or overlap captions that viewers depend on for comprehension and accessibility.","root_cause":"Tag durations are read as milliseconds instead of centiseconds.","sha256":"2ccbaa2640659127ee1a2446fb65b9ba5f8d9b6230cb04b1f56d62caf4506fd9","title":"Karaoke syllable timing: centisecond unit · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":42.312,"exit_code":1,"observations":[{"actual":[["Hel",0,1000]],"check":"regression: centisecond unit","expected":[["Hel",0,500],["lo",500,1000]],"passed":false},{"actual":[["la",0,2000]],"check":"regression variant: centisecond unit","expected":[["la",0,250],["Hel",250,500],["Hel",500,500]],"passed":false},{"actual":[[" ",1000,1500]],"check":"partial repair probe: centisecond unit","expected":[[" ",1000,1100],["la",1100,1200]],"passed":false},{"actual":[["lo",0,0],["la",0,800]],"check":"partial repair variant: centisecond unit","expected":[["lo",0,0],["la",0,500],["lo",500,800]],"passed":false},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[["lo",1000,1000]],"check":"normal control","expected":[["lo",1000,1000]],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: centisecond unit\", \"actual\": [[\"Hel\", 0, 1000]], \"expected\": [[\"Hel\", 0, 500], [\"lo\", 500, 1000]], \"passed\": false}, {\"check\": \"regression variant: centisecond unit\", \"actual\": [[\"la\", 0, 2000]], \"expected\": [[\"la\", 0, 250], [\"Hel\", 250, 500], [\"Hel\", 500, 500]], \"passed\": false}, {\"check\": \"partial repair probe: centisecond unit\", \"actual\": [[\" \", 1000, 1500]], \"expected\": [[\" \", 1000, 1100], [\"la\", 1100, 1200]], \"passed\": false}, {\"check\": \"partial repair variant: centisecond unit\", \"actual\": [[\"lo\", 0, 0], [\"la\", 0, 800]], \"expected\": [[\"lo\", 0, 0], [\"la\", 0, 500], [\"lo\", 500, 800]], \"passed\": false}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[\"lo\", 1000, 1000]], \"expected\": [[\"lo\", 1000, 1000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.811,"exit_code":1,"observations":[{"actual":[["Hel",0,50],["lo",50,100]],"check":"regression: centisecond unit","expected":[["Hel",0,500],["lo",500,1000]],"passed":false},{"actual":[["la",0,25],["Hel",25,50],["Hel",50,50]],"check":"regression variant: centisecond unit","expected":[["la",0,250],["Hel",250,500],["Hel",500,500]],"passed":false},{"actual":[[" ",1000,1010],["la",1010,1020]],"check":"partial repair probe: centisecond unit","expected":[[" ",1000,1100],["la",1100,1200]],"passed":false},{"actual":[["lo",0,0],["la",0,50],["lo",50,80]],"check":"partial repair variant: centisecond unit","expected":[["lo",0,0],["la",0,500],["lo",500,800]],"passed":false},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[["lo",1000,1000]],"check":"normal control","expected":[["lo",1000,1000]],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: centisecond unit\", \"actual\": [[\"Hel\", 0, 50], [\"lo\", 50, 100]], \"expected\": [[\"Hel\", 0, 500], [\"lo\", 500, 1000]], \"passed\": false}, {\"check\": \"regression variant: centisecond unit\", \"actual\": [[\"la\", 0, 25], [\"Hel\", 25, 50], [\"Hel\", 50, 50]], \"expected\": [[\"la\", 0, 250], [\"Hel\", 250, 500], [\"Hel\", 500, 500]], \"passed\": false}, {\"check\": \"partial repair probe: centisecond unit\", \"actual\": [[\" \", 1000, 1010], [\"la\", 1010, 1020]], \"expected\": [[\" \", 1000, 1100], [\"la\", 1100, 1200]], \"passed\": false}, {\"check\": \"partial repair variant: centisecond unit\", \"actual\": [[\"lo\", 0, 0], [\"la\", 0, 50], [\"lo\", 50, 80]], \"expected\": [[\"lo\", 0, 0], [\"la\", 0, 500], [\"lo\", 500, 800]], \"passed\": false}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[\"lo\", 1000, 1000]], \"expected\": [[\"lo\", 1000, 1000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}