{"abstract":"An SRT cue at 1.050 s is written as 00:00:01,50, which readers interpret as 500 ms.","category":"Subtitle cue timing","checks":9,"contract":"Format integer milliseconds as a cue timestamp. Negative values clamp to 0. style \"srt\" gives HH:MM:SS,mmm (hours at least two digits, never wrapped); style \"vtt\" gives MM:SS.mmm when the hour field is zero and HH:MM:SS.mmm otherwise.","evaluation_group":"w2-subtitle-cue-timing-timestamp-format","failed_approach":"Space-padding with %3d keeps the width but produces an illegal blank inside the timestamp.","family":"w2-subtitle-cue-timing-timestamp-format-srt-millisecond-padding","id":"FA-77876","implementations":{"attempt":{"sha256":"a9347308fccf78bacbb2886d68ab6217b3a26f7c539e2202aa8c9f926626363f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ms, style):\n    if ms<0: ms=0\n    h=ms//3600000\n    m=(ms-h*3600000)//60000\n    s=ms//1000%60\n    f=ms%1000\n    if style=='srt':\n        return '%02d:%02d:%02d,%3d'%(h,m,s,f)\n    if h==0:\n        return '%02d:%02d.%03d'%(m,s,f)\n    return '%02d:%02d:%02d.%03d'%(h,m,s,f)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: srt millisecond padding', [0, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [5, 'srt'], '00:00:00,005'), ('partial repair probe: srt millisecond padding', [3541034, 'srt'], '00:59:01,034'), ('partial repair variant: srt millisecond padding', [36000000, 'srt'], '10:00:00,000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('normal control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [7834, 'srt'], '00:00:07,834'), ('normal control', [3664439, 'srt'], '01:01:04,439')], [('regression: srt millisecond padding', [-1, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [360000000, 'srt'], '100:00:00,000'), ('partial repair probe: srt millisecond padding', [-5000, 'srt'], '00:00:00,000'), ('partial repair variant: srt millisecond padding', [30977039, 'srt'], '08:36:17,039'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('normal control', [-999, 'vtt'], '00:00.000'), ('normal control', [893654, 'srt'], '00:14:53,654'), ('normal control', [55880, 'vtt'], '00:55.880')], [('regression: srt millisecond padding', [3541034, 'srt'], '00:59:01,034'), ('regression variant: srt millisecond padding', [-1000, 'srt'], '00:00:00,000'), ('partial repair probe: srt millisecond padding', [60000, 'srt'], '00:01:00,000'), ('partial repair variant: srt millisecond padding', [3327047, 'srt'], '00:55:27,047'), ('boundary control', [3599999, 'vtt'], '59:59.999'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [11761, 'vtt'], '00:11.761'), ('normal control', [-5000, 'vtt'], '00:00.000'), ('normal control', [3576784, 'srt'], '00:59:36,784')], [('regression: srt millisecond padding', [-5000, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [-999, 'srt'], '00:00:00,000'), ('partial repair probe: srt millisecond padding', [5, 'srt'], '00:00:00,005'), ('partial repair variant: srt millisecond padding', [379730021, 'srt'], '105:28:50,021'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('boundary control', [3599999, 'vtt'], '59:59.999'), ('normal control', [59999, 'vtt'], '00:59.999'), ('normal control', [3509491, 'srt'], '00:58:29,491'), ('normal control', [175213793, 'vtt'], '48:40:13.793')], [('regression: srt millisecond padding', [60000, 'srt'], '00:01:00,000'), ('regression variant: srt millisecond padding', [36000000, 'srt'], '10:00:00,000'), ('partial repair probe: srt millisecond padding', [360000000, 'srt'], '100:00:00,000'), ('partial repair variant: srt millisecond padding', [3661001, 'srt'], '01:01:01,001'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('normal control', [3689889, 'srt'], '01:01:29,889'), ('normal control', [3673366, 'srt'], '01:01:13,366'), ('normal control', [290743422, 'vtt'], '80:45:43.422')]]\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":"675fa572e4a2a06f0a377d1eb8eca89353bec6d668b9a2e471d825d22822944b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ms, style):\n    if ms<0: ms=0\n    h=ms//3600000\n    m=(ms-h*3600000)//60000\n    s=ms//1000%60\n    f=ms%1000\n    if style=='srt':\n        return '%02d:%02d:%02d,%d'%(h,m,s,f)\n    if h==0:\n        return '%02d:%02d.%03d'%(m,s,f)\n    return '%02d:%02d:%02d.%03d'%(h,m,s,f)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: srt millisecond padding', [0, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [5, 'srt'], '00:00:00,005'), ('partial repair probe: srt millisecond padding', [3541034, 'srt'], '00:59:01,034'), ('partial repair variant: srt millisecond padding', [36000000, 'srt'], '10:00:00,000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('normal control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [7834, 'srt'], '00:00:07,834'), ('normal control', [3664439, 'srt'], '01:01:04,439')], [('regression: srt millisecond padding', [-1, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [360000000, 'srt'], '100:00:00,000'), ('partial repair probe: srt millisecond padding', [-5000, 'srt'], '00:00:00,000'), ('partial repair variant: srt millisecond padding', [30977039, 'srt'], '08:36:17,039'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('normal control', [-999, 'vtt'], '00:00.000'), ('normal control', [893654, 'srt'], '00:14:53,654'), ('normal control', [55880, 'vtt'], '00:55.880')], [('regression: srt millisecond padding', [3541034, 'srt'], '00:59:01,034'), ('regression variant: srt millisecond padding', [-1000, 'srt'], '00:00:00,000'), ('partial repair probe: srt millisecond padding', [60000, 'srt'], '00:01:00,000'), ('partial repair variant: srt millisecond padding', [3327047, 'srt'], '00:55:27,047'), ('boundary control', [3599999, 'vtt'], '59:59.999'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [11761, 'vtt'], '00:11.761'), ('normal control', [-5000, 'vtt'], '00:00.000'), ('normal control', [3576784, 'srt'], '00:59:36,784')], [('regression: srt millisecond padding', [-5000, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [-999, 'srt'], '00:00:00,000'), ('partial repair probe: srt millisecond padding', [5, 'srt'], '00:00:00,005'), ('partial repair variant: srt millisecond padding', [379730021, 'srt'], '105:28:50,021'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('boundary control', [3599999, 'vtt'], '59:59.999'), ('normal control', [59999, 'vtt'], '00:59.999'), ('normal control', [3509491, 'srt'], '00:58:29,491'), ('normal control', [175213793, 'vtt'], '48:40:13.793')], [('regression: srt millisecond padding', [60000, 'srt'], '00:01:00,000'), ('regression variant: srt millisecond padding', [36000000, 'srt'], '10:00:00,000'), ('partial repair probe: srt millisecond padding', [360000000, 'srt'], '100:00:00,000'), ('partial repair variant: srt millisecond padding', [3661001, 'srt'], '01:01:01,001'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('normal control', [3689889, 'srt'], '01:01:29,889'), ('normal control', [3673366, 'srt'], '01:01:13,366'), ('normal control', [290743422, 'vtt'], '80:45:43.422')]]\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":"6e31c12810576c45803f6ef033e2a2a8526aa92b12dda39ccbe03034edfdb9f1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ms, style):\n    if ms<0: ms=0\n    h=ms//3600000\n    m=(ms-h*3600000)//60000\n    s=ms//1000%60\n    f=ms%1000\n    if style=='srt':\n        return '%02d:%02d:%02d,%03d'%(h,m,s,f)\n    if h==0:\n        return '%02d:%02d.%03d'%(m,s,f)\n    return '%02d:%02d:%02d.%03d'%(h,m,s,f)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: srt millisecond padding', [0, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [5, 'srt'], '00:00:00,005'), ('partial repair probe: srt millisecond padding', [3541034, 'srt'], '00:59:01,034'), ('partial repair variant: srt millisecond padding', [36000000, 'srt'], '10:00:00,000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('normal control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [7834, 'srt'], '00:00:07,834'), ('normal control', [3664439, 'srt'], '01:01:04,439')], [('regression: srt millisecond padding', [-1, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [360000000, 'srt'], '100:00:00,000'), ('partial repair probe: srt millisecond padding', [-5000, 'srt'], '00:00:00,000'), ('partial repair variant: srt millisecond padding', [30977039, 'srt'], '08:36:17,039'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('normal control', [-999, 'vtt'], '00:00.000'), ('normal control', [893654, 'srt'], '00:14:53,654'), ('normal control', [55880, 'vtt'], '00:55.880')], [('regression: srt millisecond padding', [3541034, 'srt'], '00:59:01,034'), ('regression variant: srt millisecond padding', [-1000, 'srt'], '00:00:00,000'), ('partial repair probe: srt millisecond padding', [60000, 'srt'], '00:01:00,000'), ('partial repair variant: srt millisecond padding', [3327047, 'srt'], '00:55:27,047'), ('boundary control', [3599999, 'vtt'], '59:59.999'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [11761, 'vtt'], '00:11.761'), ('normal control', [-5000, 'vtt'], '00:00.000'), ('normal control', [3576784, 'srt'], '00:59:36,784')], [('regression: srt millisecond padding', [-5000, 'srt'], '00:00:00,000'), ('regression variant: srt millisecond padding', [-999, 'srt'], '00:00:00,000'), ('partial repair probe: srt millisecond padding', [5, 'srt'], '00:00:00,005'), ('partial repair variant: srt millisecond padding', [379730021, 'srt'], '105:28:50,021'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('boundary control', [3599999, 'vtt'], '59:59.999'), ('normal control', [59999, 'vtt'], '00:59.999'), ('normal control', [3509491, 'srt'], '00:58:29,491'), ('normal control', [175213793, 'vtt'], '48:40:13.793')], [('regression: srt millisecond padding', [60000, 'srt'], '00:01:00,000'), ('regression variant: srt millisecond padding', [36000000, 'srt'], '10:00:00,000'), ('partial repair probe: srt millisecond padding', [360000000, 'srt'], '100:00:00,000'), ('partial repair variant: srt millisecond padding', [3661001, 'srt'], '01:01:01,001'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [61001, 'vtt'], '01:01.001'), ('normal control', [3689889, 'srt'], '01:01:29,889'), ('normal control', [3673366, 'srt'], '01:01:13,366'), ('normal control', [290743422, 'vtt'], '80:45:43.422')]]\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-timestamp-format-srt-millisecond-padding","generated_at":"2026-09-29T14:49:30.024729+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":"Zero-pad the SRT millisecond field to three digits.","root_cause":"The SRT millisecond field is printed with %d and loses its leading zeros.","sha256":"5c8db010e2e70b336c7bad09e97cc984fbb89d59b48fd5f288319a2e6ca670c3","title":"SRT and WebVTT timestamp formatting: srt millisecond padding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.613,"exit_code":1,"observations":[{"actual":"00:00:00,  0","check":"regression: srt millisecond padding","expected":"00:00:00,000","passed":false},{"actual":"00:00:00,  5","check":"regression variant: srt millisecond padding","expected":"00:00:00,005","passed":false},{"actual":"00:59:01, 34","check":"partial repair probe: srt millisecond padding","expected":"00:59:01,034","passed":false},{"actual":"10:00:00,  0","check":"partial repair variant: srt millisecond padding","expected":"10:00:00,000","passed":false},{"actual":"00:00.000","check":"boundary control","expected":"00:00.000","passed":true},{"actual":"01:01.001","check":"boundary control","expected":"01:01.001","passed":true},{"actual":"01:00:00.000","check":"normal control","expected":"01:00:00.000","passed":true},{"actual":"00:00:07,834","check":"normal control","expected":"00:00:07,834","passed":true},{"actual":"01:01:04,439","check":"normal control","expected":"01:01:04,439","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: srt millisecond padding\", \"actual\": \"00:00:00,  0\", \"expected\": \"00:00:00,000\", \"passed\": false}, {\"check\": \"regression variant: srt millisecond padding\", \"actual\": \"00:00:00,  5\", \"expected\": \"00:00:00,005\", \"passed\": false}, {\"check\": \"partial repair probe: srt millisecond padding\", \"actual\": \"00:59:01, 34\", \"expected\": \"00:59:01,034\", \"passed\": false}, {\"check\": \"partial repair variant: srt millisecond padding\", \"actual\": \"10:00:00,  0\", \"expected\": \"10:00:00,000\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": \"00:00.000\", \"expected\": \"00:00.000\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"01:01.001\", \"expected\": \"01:01.001\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:00:00.000\", \"expected\": \"01:00:00.000\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:07,834\", \"expected\": \"00:00:07,834\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:01:04,439\", \"expected\": \"01:01:04,439\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.426,"exit_code":1,"observations":[{"actual":"00:00:00,0","check":"regression: srt millisecond padding","expected":"00:00:00,000","passed":false},{"actual":"00:00:00,5","check":"regression variant: srt millisecond padding","expected":"00:00:00,005","passed":false},{"actual":"00:59:01,34","check":"partial repair probe: srt millisecond padding","expected":"00:59:01,034","passed":false},{"actual":"10:00:00,0","check":"partial repair variant: srt millisecond padding","expected":"10:00:00,000","passed":false},{"actual":"00:00.000","check":"boundary control","expected":"00:00.000","passed":true},{"actual":"01:01.001","check":"boundary control","expected":"01:01.001","passed":true},{"actual":"01:00:00.000","check":"normal control","expected":"01:00:00.000","passed":true},{"actual":"00:00:07,834","check":"normal control","expected":"00:00:07,834","passed":true},{"actual":"01:01:04,439","check":"normal control","expected":"01:01:04,439","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: srt millisecond padding\", \"actual\": \"00:00:00,0\", \"expected\": \"00:00:00,000\", \"passed\": false}, {\"check\": \"regression variant: srt millisecond padding\", \"actual\": \"00:00:00,5\", \"expected\": \"00:00:00,005\", \"passed\": false}, {\"check\": \"partial repair probe: srt millisecond padding\", \"actual\": \"00:59:01,34\", \"expected\": \"00:59:01,034\", \"passed\": false}, {\"check\": \"partial repair variant: srt millisecond padding\", \"actual\": \"10:00:00,0\", \"expected\": \"10:00:00,000\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": \"00:00.000\", \"expected\": \"00:00.000\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"01:01.001\", \"expected\": \"01:01.001\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:00:00.000\", \"expected\": \"01:00:00.000\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:07,834\", \"expected\": \"00:00:07,834\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:01:04,439\", \"expected\": \"01:01:04,439\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.321,"exit_code":0,"observations":[{"actual":"00:00:00,000","check":"regression: srt millisecond padding","expected":"00:00:00,000","passed":true},{"actual":"00:00:00,005","check":"regression variant: srt millisecond padding","expected":"00:00:00,005","passed":true},{"actual":"00:59:01,034","check":"partial repair probe: srt millisecond padding","expected":"00:59:01,034","passed":true},{"actual":"10:00:00,000","check":"partial repair variant: srt millisecond padding","expected":"10:00:00,000","passed":true},{"actual":"00:00.000","check":"boundary control","expected":"00:00.000","passed":true},{"actual":"01:01.001","check":"boundary control","expected":"01:01.001","passed":true},{"actual":"01:00:00.000","check":"normal control","expected":"01:00:00.000","passed":true},{"actual":"00:00:07,834","check":"normal control","expected":"00:00:07,834","passed":true},{"actual":"01:01:04,439","check":"normal control","expected":"01:01:04,439","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: srt millisecond padding\", \"actual\": \"00:00:00,000\", \"expected\": \"00:00:00,000\", \"passed\": true}, {\"check\": \"regression variant: srt millisecond padding\", \"actual\": \"00:00:00,005\", \"expected\": \"00:00:00,005\", \"passed\": true}, {\"check\": \"partial repair probe: srt millisecond padding\", \"actual\": \"00:59:01,034\", \"expected\": \"00:59:01,034\", \"passed\": true}, {\"check\": \"partial repair variant: srt millisecond padding\", \"actual\": \"10:00:00,000\", \"expected\": \"10:00:00,000\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"00:00.000\", \"expected\": \"00:00.000\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"01:01.001\", \"expected\": \"01:01.001\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:00:00.000\", \"expected\": \"01:00:00.000\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:07,834\", \"expected\": \"00:00:07,834\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:01:04,439\", \"expected\": \"01:01:04,439\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}