{"abstract":"A cue written as 00:00:01,5 starts at 1.005 s instead of 1.5 s.","category":"Subtitle cue timing","checks":9,"contract":"Parse an SRT timestamp HH:MM:SS,mmm to integer milliseconds. Hours have 2 or more digits, minutes and seconds are below 60, the fraction has 1 to 3 digits and is right-padded (\",5\" means 500 ms), \".\" is accepted as the separator, surrounding whitespace (including a CR from CRLF files) is ignored; invalid text returns None.","evaluation_group":"w2-subtitle-cue-timing-srt-parse","failed_approach":"Converting the raw fraction digits with int(frac) still reads one- and two-digit fractions as tiny millisecond counts.","family":"w2-subtitle-cue-timing-srt-parse-fraction-padding","id":"FA-77841","implementations":{"attempt":{"sha256":"d1a6bb128c46dce47daf97c9abab25772c2c32819d49d5103ed46705b8e38a7f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    s=s.strip()\n    parts=s.replace('.',',').split(',')\n    if len(parts)!=2: return None\n    hms,frac=parts\n    fields=hms.split(':')\n    if len(fields)!=3: return None\n    if not all(p.isdigit() for p in fields) or not frac.isdigit(): return None\n    if len(frac)>3: return None\n    h,mi,se=int(fields[0]),int(fields[1]),int(fields[2])\n    if mi>=60 or se>=60: return None\n    ms=int(frac)\n    return h*3600000+mi*60000+se*1000+ms\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: fraction padding', ['00:00:01,5'], 1500), ('regression variant: fraction padding', [' 100:00:00,07'], 360000070), ('partial repair probe: fraction padding', ['02:30:42,5\\t'], 9042500), ('partial repair variant: fraction padding', ['10:30:59,12\\t'], 37859120), ('boundary control', ['00:00:00,000'], 0), ('boundary control', ['00:60:00,000'], None), ('normal control', ['01:02:03.004'], 3723004), ('normal control', ['100:00:00,000'], 360000000), ('normal control', ['00:61:00;5 \\r'], None)], [('regression: fraction padding', [' 00:05:00.5 '], 300500), ('regression variant: fraction padding', [' 100:00:01.50\\r'], 360001500), ('partial repair probe: fraction padding', ['00:30:59,12 '], 1859120), ('partial repair variant: fraction padding', ['123:05:01.12\\t'], 443101120), ('boundary control', ['01:02:03.004'], 3723004), ('boundary control', ['100:00:00,000'], 360000000), ('normal control', ['123:60:59,5'], None), ('normal control', ['99:00:00.500\\r'], 356400500), ('normal control', [' 00:30:60,500'], None)], [('regression: fraction padding', ['02:30:42,5\\t'], 9042500), ('regression variant: fraction padding', [' 100:59:59,12'], 363599120), ('partial repair probe: fraction padding', [' 123:59:42,50 '], 446382500), ('partial repair variant: fraction padding', [' 02:30:59,12 '], 9059120), ('boundary control', ['00:59:59,999\\r'], 3599999), ('boundary control', ['00:00:00,000'], 0), ('normal control', ['00:00:60.1234 '], None), ('normal control', ['10:61:61. \\r'], None), ('normal control', ['00:30:59;12'], None)], [('regression: fraction padding', ['00:30:59,12 '], 1859120), ('regression variant: fraction padding', ['02:59:42,12 '], 10782120), ('partial repair probe: fraction padding', [' 100:00:00,07'], 360000070), ('partial repair variant: fraction padding', [' 100:05:42.50'], 360342500), ('boundary control', ['00:60:00,000'], None), ('boundary control', ['01:02:03.004'], 3723004), ('normal control', ['00:00:60,1234\\r'], None), ('normal control', ['00:00:60,07'], None), ('normal control', [' 00:61:42,000'], None)], [('regression: fraction padding', [' 123:59:42,50 '], 446382500), ('regression variant: fraction padding', ['10:30:59,12\\t'], 37859120), ('partial repair probe: fraction padding', [' 100:00:01.50\\r'], 360001500), ('partial repair variant: fraction padding', ['100:30:00,5'], 361800500), ('boundary control', ['100:00:00,000'], 360000000), ('boundary control', ['00:59:59,999\\r'], 3599999), ('normal control', ['01:30:01,500 \\r'], 5401500), ('normal control', ['01:05:00,500\\r'], 3900500), ('normal control', ['100:30:42,500\\r'], 361842500)]]\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":"3f5d589bd5535b5b1caeed48328422f1eb3b9e9614cdd7bff9e46b7cd58d4fbe","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    s=s.strip()\n    parts=s.replace('.',',').split(',')\n    if len(parts)!=2: return None\n    hms,frac=parts\n    fields=hms.split(':')\n    if len(fields)!=3: return None\n    if not all(p.isdigit() for p in fields) or not frac.isdigit(): return None\n    if len(frac)>3: return None\n    h,mi,se=int(fields[0]),int(fields[1]),int(fields[2])\n    if mi>=60 or se>=60: return None\n    ms=int(frac.rjust(3,'0'))\n    return h*3600000+mi*60000+se*1000+ms\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: fraction padding', ['00:00:01,5'], 1500), ('regression variant: fraction padding', [' 100:00:00,07'], 360000070), ('partial repair probe: fraction padding', ['02:30:42,5\\t'], 9042500), ('partial repair variant: fraction padding', ['10:30:59,12\\t'], 37859120), ('boundary control', ['00:00:00,000'], 0), ('boundary control', ['00:60:00,000'], None), ('normal control', ['01:02:03.004'], 3723004), ('normal control', ['100:00:00,000'], 360000000), ('normal control', ['00:61:00;5 \\r'], None)], [('regression: fraction padding', [' 00:05:00.5 '], 300500), ('regression variant: fraction padding', [' 100:00:01.50\\r'], 360001500), ('partial repair probe: fraction padding', ['00:30:59,12 '], 1859120), ('partial repair variant: fraction padding', ['123:05:01.12\\t'], 443101120), ('boundary control', ['01:02:03.004'], 3723004), ('boundary control', ['100:00:00,000'], 360000000), ('normal control', ['123:60:59,5'], None), ('normal control', ['99:00:00.500\\r'], 356400500), ('normal control', [' 00:30:60,500'], None)], [('regression: fraction padding', ['02:30:42,5\\t'], 9042500), ('regression variant: fraction padding', [' 100:59:59,12'], 363599120), ('partial repair probe: fraction padding', [' 123:59:42,50 '], 446382500), ('partial repair variant: fraction padding', [' 02:30:59,12 '], 9059120), ('boundary control', ['00:59:59,999\\r'], 3599999), ('boundary control', ['00:00:00,000'], 0), ('normal control', ['00:00:60.1234 '], None), ('normal control', ['10:61:61. \\r'], None), ('normal control', ['00:30:59;12'], None)], [('regression: fraction padding', ['00:30:59,12 '], 1859120), ('regression variant: fraction padding', ['02:59:42,12 '], 10782120), ('partial repair probe: fraction padding', [' 100:00:00,07'], 360000070), ('partial repair variant: fraction padding', [' 100:05:42.50'], 360342500), ('boundary control', ['00:60:00,000'], None), ('boundary control', ['01:02:03.004'], 3723004), ('normal control', ['00:00:60,1234\\r'], None), ('normal control', ['00:00:60,07'], None), ('normal control', [' 00:61:42,000'], None)], [('regression: fraction padding', [' 123:59:42,50 '], 446382500), ('regression variant: fraction padding', ['10:30:59,12\\t'], 37859120), ('partial repair probe: fraction padding', [' 100:00:01.50\\r'], 360001500), ('partial repair variant: fraction padding', ['100:30:00,5'], 361800500), ('boundary control', ['100:00:00,000'], 360000000), ('boundary control', ['00:59:59,999\\r'], 3599999), ('normal control', ['01:30:01,500 \\r'], 5401500), ('normal control', ['01:05:00,500\\r'], 3900500), ('normal control', ['100:30:42,500\\r'], 361842500)]]\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"},"fixed":{"sha256":"d94f63f769e5c12346de3e5b27a30e74a94f2062e120c2cda540ae11039dc500","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s):\n    s=s.strip()\n    parts=s.replace('.',',').split(',')\n    if len(parts)!=2: return None\n    hms,frac=parts\n    fields=hms.split(':')\n    if len(fields)!=3: return None\n    if not all(p.isdigit() for p in fields) or not frac.isdigit(): return None\n    if len(frac)>3: return None\n    h,mi,se=int(fields[0]),int(fields[1]),int(fields[2])\n    if mi>=60 or se>=60: return None\n    ms=int(frac.ljust(3,'0'))\n    return h*3600000+mi*60000+se*1000+ms\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: fraction padding', ['00:00:01,5'], 1500), ('regression variant: fraction padding', [' 100:00:00,07'], 360000070), ('partial repair probe: fraction padding', ['02:30:42,5\\t'], 9042500), ('partial repair variant: fraction padding', ['10:30:59,12\\t'], 37859120), ('boundary control', ['00:00:00,000'], 0), ('boundary control', ['00:60:00,000'], None), ('normal control', ['01:02:03.004'], 3723004), ('normal control', ['100:00:00,000'], 360000000), ('normal control', ['00:61:00;5 \\r'], None)], [('regression: fraction padding', [' 00:05:00.5 '], 300500), ('regression variant: fraction padding', [' 100:00:01.50\\r'], 360001500), ('partial repair probe: fraction padding', ['00:30:59,12 '], 1859120), ('partial repair variant: fraction padding', ['123:05:01.12\\t'], 443101120), ('boundary control', ['01:02:03.004'], 3723004), ('boundary control', ['100:00:00,000'], 360000000), ('normal control', ['123:60:59,5'], None), ('normal control', ['99:00:00.500\\r'], 356400500), ('normal control', [' 00:30:60,500'], None)], [('regression: fraction padding', ['02:30:42,5\\t'], 9042500), ('regression variant: fraction padding', [' 100:59:59,12'], 363599120), ('partial repair probe: fraction padding', [' 123:59:42,50 '], 446382500), ('partial repair variant: fraction padding', [' 02:30:59,12 '], 9059120), ('boundary control', ['00:59:59,999\\r'], 3599999), ('boundary control', ['00:00:00,000'], 0), ('normal control', ['00:00:60.1234 '], None), ('normal control', ['10:61:61. \\r'], None), ('normal control', ['00:30:59;12'], None)], [('regression: fraction padding', ['00:30:59,12 '], 1859120), ('regression variant: fraction padding', ['02:59:42,12 '], 10782120), ('partial repair probe: fraction padding', [' 100:00:00,07'], 360000070), ('partial repair variant: fraction padding', [' 100:05:42.50'], 360342500), ('boundary control', ['00:60:00,000'], None), ('boundary control', ['01:02:03.004'], 3723004), ('normal control', ['00:00:60,1234\\r'], None), ('normal control', ['00:00:60,07'], None), ('normal control', [' 00:61:42,000'], None)], [('regression: fraction padding', [' 123:59:42,50 '], 446382500), ('regression variant: fraction padding', ['10:30:59,12\\t'], 37859120), ('partial repair probe: fraction padding', [' 100:00:01.50\\r'], 360001500), ('partial repair variant: fraction padding', ['100:30:00,5'], 361800500), ('boundary control', ['100:00:00,000'], 360000000), ('boundary control', ['00:59:59,999\\r'], 3599999), ('normal control', ['01:30:01,500 \\r'], 5401500), ('normal control', ['01:05:00,500\\r'], 3900500), ('normal control', ['100:30:42,500\\r'], 361842500)]]\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-srt-parse-fraction-padding","generated_at":"2026-09-29T14:49:29.406001+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.","repair":"Right-pad the fraction to three digits before converting it to milliseconds.","root_cause":"Short millisecond fractions are left-padded with frac.rjust(3,'0'), treating ',5' as 5 ms.","sha256":"0bedc4de7cbc6b3bc03dfb99d47048b88d76e57a0fa37b1999e5465d310e75eb","title":"SRT timestamp parsing: fraction padding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.373,"exit_code":1,"observations":[{"actual":1005,"check":"regression: fraction padding","expected":1500,"passed":false},{"actual":360000007,"check":"regression variant: fraction padding","expected":360000070,"passed":false},{"actual":9042005,"check":"partial repair probe: fraction padding","expected":9042500,"passed":false},{"actual":37859012,"check":"partial repair variant: fraction padding","expected":37859120,"passed":false},{"actual":0,"check":"boundary control","expected":0,"passed":true},{"actual":null,"check":"boundary control","expected":null,"passed":true},{"actual":3723004,"check":"normal control","expected":3723004,"passed":true},{"actual":360000000,"check":"normal control","expected":360000000,"passed":true},{"actual":null,"check":"normal control","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fraction padding\", \"actual\": 1005, \"expected\": 1500, \"passed\": false}, {\"check\": \"regression variant: fraction padding\", \"actual\": 360000007, \"expected\": 360000070, \"passed\": false}, {\"check\": \"partial repair probe: fraction padding\", \"actual\": 9042005, \"expected\": 9042500, \"passed\": false}, {\"check\": \"partial repair variant: fraction padding\", \"actual\": 37859012, \"expected\": 37859120, \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 3723004, \"expected\": 3723004, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 360000000, \"expected\": 360000000, \"passed\": true}, {\"check\": \"normal control\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.905,"exit_code":1,"observations":[{"actual":1005,"check":"regression: fraction padding","expected":1500,"passed":false},{"actual":360000007,"check":"regression variant: fraction padding","expected":360000070,"passed":false},{"actual":9042005,"check":"partial repair probe: fraction padding","expected":9042500,"passed":false},{"actual":37859012,"check":"partial repair variant: fraction padding","expected":37859120,"passed":false},{"actual":0,"check":"boundary control","expected":0,"passed":true},{"actual":null,"check":"boundary control","expected":null,"passed":true},{"actual":3723004,"check":"normal control","expected":3723004,"passed":true},{"actual":360000000,"check":"normal control","expected":360000000,"passed":true},{"actual":null,"check":"normal control","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fraction padding\", \"actual\": 1005, \"expected\": 1500, \"passed\": false}, {\"check\": \"regression variant: fraction padding\", \"actual\": 360000007, \"expected\": 360000070, \"passed\": false}, {\"check\": \"partial repair probe: fraction padding\", \"actual\": 9042005, \"expected\": 9042500, \"passed\": false}, {\"check\": \"partial repair variant: fraction padding\", \"actual\": 37859012, \"expected\": 37859120, \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 3723004, \"expected\": 3723004, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 360000000, \"expected\": 360000000, \"passed\": true}, {\"check\": \"normal control\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.492,"exit_code":0,"observations":[{"actual":1500,"check":"regression: fraction padding","expected":1500,"passed":true},{"actual":360000070,"check":"regression variant: fraction padding","expected":360000070,"passed":true},{"actual":9042500,"check":"partial repair probe: fraction padding","expected":9042500,"passed":true},{"actual":37859120,"check":"partial repair variant: fraction padding","expected":37859120,"passed":true},{"actual":0,"check":"boundary control","expected":0,"passed":true},{"actual":null,"check":"boundary control","expected":null,"passed":true},{"actual":3723004,"check":"normal control","expected":3723004,"passed":true},{"actual":360000000,"check":"normal control","expected":360000000,"passed":true},{"actual":null,"check":"normal control","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fraction padding\", \"actual\": 1500, \"expected\": 1500, \"passed\": true}, {\"check\": \"regression variant: fraction padding\", \"actual\": 360000070, \"expected\": 360000070, \"passed\": true}, {\"check\": \"partial repair probe: fraction padding\", \"actual\": 9042500, \"expected\": 9042500, \"passed\": true}, {\"check\": \"partial repair variant: fraction padding\", \"actual\": 37859120, \"expected\": 37859120, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 3723004, \"expected\": 3723004, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 360000000, \"expected\": 360000000, \"passed\": true}, {\"check\": \"normal control\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}