{"abstract":"Labels at hour 24 or later produce counts beyond the broadcast day.","category":"Broadcast timecode arithmetic","checks":9,"contract":"Parse HH:MM:SS;FF drop-frame 29.97 labels (the last separator may be \";\", \",\" or \".\"). Labels ;00 and ;01 at second 00 of minutes not divisible by 10 do not exist and return None, as do out-of-range fields (hours 0-23, frames 0-29). Frame count = nominal 30 fps count minus 2 per elapsed minute except every tenth minute.","evaluation_group":"w2-broadcast-timecode-arithmetic-df29-label-to-frames","failed_approach":"Allowing hour 24 still produces a count one full day long.","family":"w2-broadcast-timecode-arithmetic-df29-label-to-frames-hour-range","id":"FA-78411","implementations":{"attempt":{"sha256":"2d1917cf9a15d7073125a2d3300a4696bec502370d36f1b70af882e51de9b8c6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(tc):\n    m=re.fullmatch(r'(\\d{2}):(\\d{2}):(\\d{2})[;,.](\\d{2})',tc)\n    if not m:\n        return None\n    h,mi,s,f=map(int,m.groups())\n    if h>24 or mi>59 or s>59:\n        return None\n    if f>29:\n        return None\n    if s==0 and f<2 and mi%10!=0:\n        return None\n    tm=h*60+mi\n    return (tm*60+s)*30+f-2*(tm-tm//10)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hour range', ['24:01:01.01'], None), ('regression variant: hour range', ['24:01:00,03'], None), ('partial repair probe: hour range', ['24:10:00,02'], None), ('partial repair variant: hour range', ['24:20:00.01'], None), ('boundary control', ['00:01:00;02'], 1800), ('boundary control', ['01:00:00;00'], 107892), ('normal control', ['00:01:00;00'], None), ('normal control', ['00:00:59;29'], 1799), ('normal control', ['23:59:59;29'], 2589407)], [('regression: hour range', ['24:59:01.01'], None), ('regression variant: hour range', ['24:11:00;29'], None), ('partial repair probe: hour range', ['24:59:01;03'], None), ('partial repair variant: hour range', ['24:20:01;01'], None), ('boundary control', ['00:01:00;00'], None), ('boundary control', ['00:00:59;29'], 1799), ('normal control', ['24:00:00:31'], None), ('normal control', ['09:11:60.03'], None), ('normal control', ['00:01:59;01'], 3569)], [('regression: hour range', ['24:10:00,02'], None), ('regression variant: hour range', ['24:01:01;29'], None), ('partial repair probe: hour range', ['24:20:59;15'], None), ('partial repair variant: hour range', ['24:11:00,15'], None), ('boundary control', ['00:10:00;00'], 17982), ('boundary control', ['23:59:59;29'], 2589407), ('normal control', ['23:10:01.01'], 2499529), ('normal control', ['01:09:59;03'], 125847), ('normal control', ['00:59:00;31'], None)], [('regression: hour range', ['24:59:01;03'], None), ('regression variant: hour range', ['24:09:01;03'], None), ('partial repair probe: hour range', ['24:01:00,03'], None), ('partial repair variant: hour range', ['24:09:00;03'], None), ('boundary control', ['01:00:00;00'], 107892), ('boundary control', ['00:01:00;02'], 1800), ('normal control', ['01:60:00,02'], None), ('normal control', ['01:01:59;30'], None), ('normal control', ['00:20:60;03'], None)], [('regression: hour range', ['24:20:59;15'], None), ('regression variant: hour range', ['24:20:00.01'], None), ('partial repair probe: hour range', ['24:11:00;29'], None), ('partial repair variant: hour range', ['24:09:59;02'], None), ('boundary control', ['00:00:59;29'], 1799), ('boundary control', ['00:01:00;00'], None), ('normal control', ['01:20:60;00'], None), ('normal control', ['09:60:00:31'], None), ('normal control', ['01:11:01;30'], None)]]\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":"8833502515d9b233e08dac1ebf64e0bea048132c0a1e5083cc4e6a13c0b8db73","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(tc):\n    m=re.fullmatch(r'(\\d{2}):(\\d{2}):(\\d{2})[;,.](\\d{2})',tc)\n    if not m:\n        return None\n    h,mi,s,f=map(int,m.groups())\n    if mi>59 or s>59:\n        return None\n    if f>29:\n        return None\n    if s==0 and f<2 and mi%10!=0:\n        return None\n    tm=h*60+mi\n    return (tm*60+s)*30+f-2*(tm-tm//10)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hour range', ['24:01:01.01'], None), ('regression variant: hour range', ['24:01:00,03'], None), ('partial repair probe: hour range', ['24:10:00,02'], None), ('partial repair variant: hour range', ['24:20:00.01'], None), ('boundary control', ['00:01:00;02'], 1800), ('boundary control', ['01:00:00;00'], 107892), ('normal control', ['00:01:00;00'], None), ('normal control', ['00:00:59;29'], 1799), ('normal control', ['23:59:59;29'], 2589407)], [('regression: hour range', ['24:59:01.01'], None), ('regression variant: hour range', ['24:11:00;29'], None), ('partial repair probe: hour range', ['24:59:01;03'], None), ('partial repair variant: hour range', ['24:20:01;01'], None), ('boundary control', ['00:01:00;00'], None), ('boundary control', ['00:00:59;29'], 1799), ('normal control', ['24:00:00:31'], None), ('normal control', ['09:11:60.03'], None), ('normal control', ['00:01:59;01'], 3569)], [('regression: hour range', ['24:10:00,02'], None), ('regression variant: hour range', ['24:01:01;29'], None), ('partial repair probe: hour range', ['24:20:59;15'], None), ('partial repair variant: hour range', ['24:11:00,15'], None), ('boundary control', ['00:10:00;00'], 17982), ('boundary control', ['23:59:59;29'], 2589407), ('normal control', ['23:10:01.01'], 2499529), ('normal control', ['01:09:59;03'], 125847), ('normal control', ['00:59:00;31'], None)], [('regression: hour range', ['24:59:01;03'], None), ('regression variant: hour range', ['24:09:01;03'], None), ('partial repair probe: hour range', ['24:01:00,03'], None), ('partial repair variant: hour range', ['24:09:00;03'], None), ('boundary control', ['01:00:00;00'], 107892), ('boundary control', ['00:01:00;02'], 1800), ('normal control', ['01:60:00,02'], None), ('normal control', ['01:01:59;30'], None), ('normal control', ['00:20:60;03'], None)], [('regression: hour range', ['24:20:59;15'], None), ('regression variant: hour range', ['24:20:00.01'], None), ('partial repair probe: hour range', ['24:11:00;29'], None), ('partial repair variant: hour range', ['24:09:59;02'], None), ('boundary control', ['00:00:59;29'], 1799), ('boundary control', ['00:01:00;00'], None), ('normal control', ['01:20:60;00'], None), ('normal control', ['09:60:00:31'], None), ('normal control', ['01:11:01;30'], None)]]\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":"453120e3c64015f1f992ddd884d51cc3b5231659400cefd7cf8cd99f53d7c29f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport re\nN = 1\nobservations = []\ndef solve(tc):\n    m=re.fullmatch(r'(\\d{2}):(\\d{2}):(\\d{2})[;,.](\\d{2})',tc)\n    if not m:\n        return None\n    h,mi,s,f=map(int,m.groups())\n    if h>23 or mi>59 or s>59:\n        return None\n    if f>29:\n        return None\n    if s==0 and f<2 and mi%10!=0:\n        return None\n    tm=h*60+mi\n    return (tm*60+s)*30+f-2*(tm-tm//10)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hour range', ['24:01:01.01'], None), ('regression variant: hour range', ['24:01:00,03'], None), ('partial repair probe: hour range', ['24:10:00,02'], None), ('partial repair variant: hour range', ['24:20:00.01'], None), ('boundary control', ['00:01:00;02'], 1800), ('boundary control', ['01:00:00;00'], 107892), ('normal control', ['00:01:00;00'], None), ('normal control', ['00:00:59;29'], 1799), ('normal control', ['23:59:59;29'], 2589407)], [('regression: hour range', ['24:59:01.01'], None), ('regression variant: hour range', ['24:11:00;29'], None), ('partial repair probe: hour range', ['24:59:01;03'], None), ('partial repair variant: hour range', ['24:20:01;01'], None), ('boundary control', ['00:01:00;00'], None), ('boundary control', ['00:00:59;29'], 1799), ('normal control', ['24:00:00:31'], None), ('normal control', ['09:11:60.03'], None), ('normal control', ['00:01:59;01'], 3569)], [('regression: hour range', ['24:10:00,02'], None), ('regression variant: hour range', ['24:01:01;29'], None), ('partial repair probe: hour range', ['24:20:59;15'], None), ('partial repair variant: hour range', ['24:11:00,15'], None), ('boundary control', ['00:10:00;00'], 17982), ('boundary control', ['23:59:59;29'], 2589407), ('normal control', ['23:10:01.01'], 2499529), ('normal control', ['01:09:59;03'], 125847), ('normal control', ['00:59:00;31'], None)], [('regression: hour range', ['24:59:01;03'], None), ('regression variant: hour range', ['24:09:01;03'], None), ('partial repair probe: hour range', ['24:01:00,03'], None), ('partial repair variant: hour range', ['24:09:00;03'], None), ('boundary control', ['01:00:00;00'], 107892), ('boundary control', ['00:01:00;02'], 1800), ('normal control', ['01:60:00,02'], None), ('normal control', ['01:01:59;30'], None), ('normal control', ['00:20:60;03'], None)], [('regression: hour range', ['24:20:59;15'], None), ('regression variant: hour range', ['24:20:00.01'], None), ('partial repair probe: hour range', ['24:11:00;29'], None), ('partial repair variant: hour range', ['24:09:59;02'], None), ('boundary control', ['00:00:59;29'], 1799), ('boundary control', ['00:01:00;00'], None), ('normal control', ['01:20:60;00'], None), ('normal control', ['09:60:00:31'], None), ('normal control', ['01:11:01;30'], None)]]\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 SMPTE or any broadcast 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-broadcast-timecode-arithmetic-df29-label-to-frames-hour-range","generated_at":"2026-09-29T14:49:35.063879+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Timecode arithmetic errors misplace edits, commercial breaks and captions against the broadcast clock.","repair":"Reject hours above 23.","root_cause":"The hour field is not range checked.","sha256":"2a8610b07652d07074dd2c3b494716939e59b4c9a212d7b10b271fef48ac14a9","title":"Drop-frame 29.97 label to frame count: hour range · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.874,"exit_code":1,"observations":[{"actual":2591237,"check":"regression: hour range","expected":null,"passed":false},{"actual":2591209,"check":"regression variant: hour range","expected":null,"passed":false},{"actual":2607392,"check":"partial repair probe: hour range","expected":null,"passed":false},{"actual":2625373,"check":"partial repair variant: hour range","expected":null,"passed":false},{"actual":1800,"check":"boundary control","expected":1800,"passed":true},{"actual":107892,"check":"boundary control","expected":107892,"passed":true},{"actual":null,"check":"normal control","expected":null,"passed":true},{"actual":1799,"check":"normal control","expected":1799,"passed":true},{"actual":2589407,"check":"normal control","expected":2589407,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hour range\", \"actual\": 2591237, \"expected\": null, \"passed\": false}, {\"check\": \"regression variant: hour range\", \"actual\": 2591209, \"expected\": null, \"passed\": false}, {\"check\": \"partial repair probe: hour range\", \"actual\": 2607392, \"expected\": null, \"passed\": false}, {\"check\": \"partial repair variant: hour range\", \"actual\": 2625373, \"expected\": null, \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 1800, \"expected\": 1800, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 107892, \"expected\": 107892, \"passed\": true}, {\"check\": \"normal control\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 1799, \"expected\": 1799, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 2589407, \"expected\": 2589407, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.912,"exit_code":1,"observations":[{"actual":2591237,"check":"regression: hour range","expected":null,"passed":false},{"actual":2591209,"check":"regression variant: hour range","expected":null,"passed":false},{"actual":2607392,"check":"partial repair probe: hour range","expected":null,"passed":false},{"actual":2625373,"check":"partial repair variant: hour range","expected":null,"passed":false},{"actual":1800,"check":"boundary control","expected":1800,"passed":true},{"actual":107892,"check":"boundary control","expected":107892,"passed":true},{"actual":null,"check":"normal control","expected":null,"passed":true},{"actual":1799,"check":"normal control","expected":1799,"passed":true},{"actual":2589407,"check":"normal control","expected":2589407,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hour range\", \"actual\": 2591237, \"expected\": null, \"passed\": false}, {\"check\": \"regression variant: hour range\", \"actual\": 2591209, \"expected\": null, \"passed\": false}, {\"check\": \"partial repair probe: hour range\", \"actual\": 2607392, \"expected\": null, \"passed\": false}, {\"check\": \"partial repair variant: hour range\", \"actual\": 2625373, \"expected\": null, \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 1800, \"expected\": 1800, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 107892, \"expected\": 107892, \"passed\": true}, {\"check\": \"normal control\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 1799, \"expected\": 1799, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 2589407, \"expected\": 2589407, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.614,"exit_code":0,"observations":[{"actual":null,"check":"regression: hour range","expected":null,"passed":true},{"actual":null,"check":"regression variant: hour range","expected":null,"passed":true},{"actual":null,"check":"partial repair probe: hour range","expected":null,"passed":true},{"actual":null,"check":"partial repair variant: hour range","expected":null,"passed":true},{"actual":1800,"check":"boundary control","expected":1800,"passed":true},{"actual":107892,"check":"boundary control","expected":107892,"passed":true},{"actual":null,"check":"normal control","expected":null,"passed":true},{"actual":1799,"check":"normal control","expected":1799,"passed":true},{"actual":2589407,"check":"normal control","expected":2589407,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hour range\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"regression variant: hour range\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"partial repair probe: hour range\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"partial repair variant: hour range\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 1800, \"expected\": 1800, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 107892, \"expected\": 107892, \"passed\": true}, {\"check\": \"normal control\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 1799, \"expected\": 1799, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 2589407, \"expected\": 2589407, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}