{"abstract":"WebVTT cues between one and sixty minutes are written with a redundant 00: hour prefix.","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.","contract_signature":"ms, style","evaluation_group":"w2-subtitle-cue-timing-timestamp-format","failed_approach":"Conditioning the short form on the seconds field still picks the long form for most sub-hour cues.","family":"w2-subtitle-cue-timing-timestamp-format-vtt-hour-omission","id":"FA-77881","implementations":{"attempt":{"sha256":"1f130b81df00404f0244711c601856cfc8e671a3463a7353ccf1add3365ea676","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 and s==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: vtt hour omission', [3599999, 'vtt'], '59:59.999'), ('regression variant: vtt hour omission', [61977, 'vtt'], '01:01.977'), ('partial repair probe: vtt hour omission', [3192469, 'vtt'], '53:12.469'), ('partial repair variant: vtt hour omission', [3189669, 'vtt'], '53:09.669'), ('boundary control', [0, 'srt'], '00:00:00,000'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [0, 'vtt'], '00:00.000'), ('normal control', [7834, 'srt'], '00:00:07,834'), ('normal control', [3664439, 'srt'], '01:01:04,439')], [('regression: vtt hour omission', [61001, 'vtt'], '01:01.001'), ('regression variant: vtt hour omission', [153727, 'vtt'], '02:33.727'), ('partial repair probe: vtt hour omission', [353272, 'vtt'], '05:53.272'), ('partial repair variant: vtt hour omission', [37938, 'vtt'], '00:37.938'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [0, 'srt'], '00:00:00,000'), ('normal control', [4082731, 'srt'], '01:08:02,731'), ('normal control', [3541034, 'srt'], '00:59:01,034'), ('normal control', [334598, 'srt'], '00:05:34,598')], [('regression: vtt hour omission', [3192469, 'vtt'], '53:12.469'), ('regression variant: vtt hour omission', [3189669, 'vtt'], '53:09.669'), ('partial repair probe: vtt hour omission', [55880, 'vtt'], '00:55.880'), ('partial repair variant: vtt hour omission', [1976232, 'vtt'], '32:56.232'), ('boundary control', [-1, 'srt'], '00:00:00,000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('normal control', [60000, 'srt'], '00:01:00,000'), ('normal control', [5, 'srt'], '00:00:00,005'), ('normal control', [3849665, 'vtt'], '01:04:09.665')], [('regression: vtt hour omission', [353272, 'vtt'], '05:53.272'), ('regression variant: vtt hour omission', [1976232, 'vtt'], '32:56.232'), ('partial repair probe: vtt hour omission', [11761, 'vtt'], '00:11.761'), ('partial repair variant: vtt hour omission', [37617, 'vtt'], '00:37.617'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('boundary control', [-1, 'srt'], '00:00:00,000'), ('normal control', [76782995, 'vtt'], '21:19:42.995'), ('normal control', [3509491, 'srt'], '00:58:29,491'), ('normal control', [175213793, 'vtt'], '48:40:13.793')], [('regression: vtt hour omission', [60000, 'vtt'], '01:00.000'), ('regression variant: vtt hour omission', [3328850, 'vtt'], '55:28.850'), ('partial repair probe: vtt hour omission', [59999, 'vtt'], '00:59.999'), ('partial repair variant: vtt hour omission', [33430, 'vtt'], '00:33.430'), ('boundary control', [0, 'srt'], '00:00:00,000'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('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":"a0b5f122205069837afa3f50b7e03e5a13c0fe00a7af34729b0b75dd0f4df6fd","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 and m==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: vtt hour omission', [3599999, 'vtt'], '59:59.999'), ('regression variant: vtt hour omission', [61977, 'vtt'], '01:01.977'), ('partial repair probe: vtt hour omission', [3192469, 'vtt'], '53:12.469'), ('partial repair variant: vtt hour omission', [3189669, 'vtt'], '53:09.669'), ('boundary control', [0, 'srt'], '00:00:00,000'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('normal control', [0, 'vtt'], '00:00.000'), ('normal control', [7834, 'srt'], '00:00:07,834'), ('normal control', [3664439, 'srt'], '01:01:04,439')], [('regression: vtt hour omission', [61001, 'vtt'], '01:01.001'), ('regression variant: vtt hour omission', [153727, 'vtt'], '02:33.727'), ('partial repair probe: vtt hour omission', [353272, 'vtt'], '05:53.272'), ('partial repair variant: vtt hour omission', [37938, 'vtt'], '00:37.938'), ('boundary control', [0, 'vtt'], '00:00.000'), ('boundary control', [0, 'srt'], '00:00:00,000'), ('normal control', [4082731, 'srt'], '01:08:02,731'), ('normal control', [3541034, 'srt'], '00:59:01,034'), ('normal control', [334598, 'srt'], '00:05:34,598')], [('regression: vtt hour omission', [3192469, 'vtt'], '53:12.469'), ('regression variant: vtt hour omission', [3189669, 'vtt'], '53:09.669'), ('partial repair probe: vtt hour omission', [55880, 'vtt'], '00:55.880'), ('partial repair variant: vtt hour omission', [1976232, 'vtt'], '32:56.232'), ('boundary control', [-1, 'srt'], '00:00:00,000'), ('boundary control', [0, 'vtt'], '00:00.000'), ('normal control', [60000, 'srt'], '00:01:00,000'), ('normal control', [5, 'srt'], '00:00:00,005'), ('normal control', [3849665, 'vtt'], '01:04:09.665')], [('regression: vtt hour omission', [353272, 'vtt'], '05:53.272'), ('regression variant: vtt hour omission', [1976232, 'vtt'], '32:56.232'), ('partial repair probe: vtt hour omission', [11761, 'vtt'], '00:11.761'), ('partial repair variant: vtt hour omission', [37617, 'vtt'], '00:37.617'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('boundary control', [-1, 'srt'], '00:00:00,000'), ('normal control', [76782995, 'vtt'], '21:19:42.995'), ('normal control', [3509491, 'srt'], '00:58:29,491'), ('normal control', [175213793, 'vtt'], '48:40:13.793')], [('regression: vtt hour omission', [60000, 'vtt'], '01:00.000'), ('regression variant: vtt hour omission', [3328850, 'vtt'], '55:28.850'), ('partial repair probe: vtt hour omission', [59999, 'vtt'], '00:59.999'), ('partial repair variant: vtt hour omission', [33430, 'vtt'], '00:33.430'), ('boundary control', [0, 'srt'], '00:00:00,000'), ('boundary control', [3600000, 'vtt'], '01:00:00.000'), ('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-vtt-hour-omission","generated_at":"2026-09-29T14:49:30.057358+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":"The short form is only chosen when both hours and minutes are zero.","sha256":"85f6d918ed93579cdf0147be29df8264a73eb35cbf32c4c0939b0e20debb195d","title":"SRT and WebVTT timestamp formatting: vtt hour omission · 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.235,"exit_code":1,"observations":[{"actual":"00:59:59.999","check":"regression: vtt hour omission","expected":"59:59.999","passed":false},{"actual":"00:01:01.977","check":"regression variant: vtt hour omission","expected":"01:01.977","passed":false},{"actual":"00:53:12.469","check":"partial repair probe: vtt hour omission","expected":"53:12.469","passed":false},{"actual":"00:53:09.669","check":"partial repair variant: vtt hour omission","expected":"53:09.669","passed":false},{"actual":"00:00:00,000","check":"boundary control","expected":"00:00:00,000","passed":true},{"actual":"01:00:00.000","check":"boundary control","expected":"01:00:00.000","passed":true},{"actual":"00:00.000","check":"normal control","expected":"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: vtt hour omission\", \"actual\": \"00:59:59.999\", \"expected\": \"59:59.999\", \"passed\": false}, {\"check\": \"regression variant: vtt hour omission\", \"actual\": \"00:01:01.977\", \"expected\": \"01:01.977\", \"passed\": false}, {\"check\": \"partial repair probe: vtt hour omission\", \"actual\": \"00:53:12.469\", \"expected\": \"53:12.469\", \"passed\": false}, {\"check\": \"partial repair variant: vtt hour omission\", \"actual\": \"00:53:09.669\", \"expected\": \"53:09.669\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": \"00:00:00,000\", \"expected\": \"00:00:00,000\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"01:00:00.000\", \"expected\": \"01:00:00.000\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00.000\", \"expected\": \"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":41.011,"exit_code":1,"observations":[{"actual":"00:59:59.999","check":"regression: vtt hour omission","expected":"59:59.999","passed":false},{"actual":"00:01:01.977","check":"regression variant: vtt hour omission","expected":"01:01.977","passed":false},{"actual":"00:53:12.469","check":"partial repair probe: vtt hour omission","expected":"53:12.469","passed":false},{"actual":"00:53:09.669","check":"partial repair variant: vtt hour omission","expected":"53:09.669","passed":false},{"actual":"00:00:00,000","check":"boundary control","expected":"00:00:00,000","passed":true},{"actual":"01:00:00.000","check":"boundary control","expected":"01:00:00.000","passed":true},{"actual":"00:00.000","check":"normal control","expected":"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: vtt hour omission\", \"actual\": \"00:59:59.999\", \"expected\": \"59:59.999\", \"passed\": false}, {\"check\": \"regression variant: vtt hour omission\", \"actual\": \"00:01:01.977\", \"expected\": \"01:01.977\", \"passed\": false}, {\"check\": \"partial repair probe: vtt hour omission\", \"actual\": \"00:53:12.469\", \"expected\": \"53:12.469\", \"passed\": false}, {\"check\": \"partial repair variant: vtt hour omission\", \"actual\": \"00:53:09.669\", \"expected\": \"53:09.669\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": \"00:00:00,000\", \"expected\": \"00:00:00,000\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"01:00:00.000\", \"expected\": \"01:00:00.000\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00.000\", \"expected\": \"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"}},"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."}}