{"abstract":"Wall-clock times just before a frame boundary snap to the previous frame.","category":"Broadcast timecode arithmetic","checks":9,"contract":"Rates \"23.976\", \"29.97\", \"59.94\" run at nominal*1000/1001 frames per second while labels count nominal frames per second (non-drop). mode \"to_ms\": label to elapsed milliseconds, rounded half up. mode \"to_tc\": milliseconds to the nearest frame (half up), formatted as a non-drop label wrapping at 24 hours.","contract_signature":"value, rate, mode","evaluation_group":"w2-broadcast-timecode-arithmetic-pulldown-wall-clock","failed_approach":"Half-to-even rounding sends exact halves to even frames.","family":"w2-broadcast-timecode-arithmetic-pulldown-wall-clock-ms-to-frame-rounding","id":"FA-78601","implementations":{"attempt":{"sha256":"c368008a69f56eedfd15a29068d1d9445d1d00951f17981bfe21f270628ea79f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, rate, mode):\n    nominal={'23.976':24,'29.97':30,'59.94':60,'24':24,'25':25,'30':30}[rate]\n    den=1001 if '.' in rate else 1000\n    num=nominal*1000\n    if mode=='to_ms':\n        h,m,s,f=map(int,value.split(':'))\n        n=((h*60+m)*60+s)*nominal+f\n        return (2*n*1000*den+num)//(2*num)\n    n=round(value*num/(1000*den))\n    return '%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//(60*nominal)%60,n//nominal%60,n%nominal)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ms to frame rounding', [86399999, '25', 'to_tc'], '00:00:00:00'), ('regression variant: ms to frame rounding', [60, '25', 'to_tc'], '00:00:00:02'), ('partial repair probe: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('partial repair variant: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', [3603600, '23.976', 'to_tc'], '01:00:00:00')], [('regression: ms to frame rounding', [250, '59.94', 'to_tc'], '00:00:00:15'), ('regression variant: ms to frame rounding', [86399999, '24', 'to_tc'], '00:00:00:00'), ('partial repair probe: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('partial repair variant: ms to frame rounding', [150, '30', 'to_tc'], '00:00:00:05'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('normal control', ['23:01:00:12', '30', 'to_ms'], 82860400), ('normal control', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('normal control', ['01:01:01:36', '30', 'to_ms'], 3662200)], [('regression: ms to frame rounding', [33, '30', 'to_tc'], '00:00:00:01'), ('regression variant: ms to frame rounding', [60, '29.97', 'to_tc'], '00:00:00:02'), ('partial repair probe: ms to frame rounding', [150, '30', 'to_tc'], '00:00:00:05'), ('partial repair variant: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('boundary control', [3600000, '29.97', 'to_tc'], '00:59:56:12'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['23:59:59:15', '59.94', 'to_ms'], 86485649), ('normal control', [3600000, '30', 'to_tc'], '01:00:00:00'), ('normal control', ['01:01:01:15', '23.976', 'to_ms'], 3665287)], [('regression: ms to frame rounding', [150, '23.976', 'to_tc'], '00:00:00:04'), ('regression variant: ms to frame rounding', [20, '29.97', 'to_tc'], '00:00:00:01'), ('partial repair probe: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('partial repair variant: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', [3600000, '29.97', 'to_tc'], '00:59:56:12'), ('normal control', [0, '23.976', 'to_tc'], '00:00:00:00'), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', ['01:01:59:45', '25', 'to_ms'], 3720800)], [('regression: ms to frame rounding', [100, '59.94', 'to_tc'], '00:00:00:06'), ('regression variant: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('partial repair probe: ms to frame rounding', [150, '30', 'to_tc'], '00:00:00:05'), ('partial repair variant: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [250, '24', 'to_tc'], '00:00:00:06'), ('normal control', ['23:00:59:00', '29.97', 'to_ms'], 82941859), ('normal control', [0, '24', 'to_tc'], '00:00:00:00')]]\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":"34261bb44f783f3da90662667d83350aec714bc291dd200c77fc8450d197a194","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, rate, mode):\n    nominal={'23.976':24,'29.97':30,'59.94':60,'24':24,'25':25,'30':30}[rate]\n    den=1001 if '.' in rate else 1000\n    num=nominal*1000\n    if mode=='to_ms':\n        h,m,s,f=map(int,value.split(':'))\n        n=((h*60+m)*60+s)*nominal+f\n        return (2*n*1000*den+num)//(2*num)\n    n=value*num//(1000*den)\n    return '%02d:%02d:%02d:%02d'%(n//(3600*nominal)%24,n//(60*nominal)%60,n//nominal%60,n%nominal)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ms to frame rounding', [86399999, '25', 'to_tc'], '00:00:00:00'), ('regression variant: ms to frame rounding', [60, '25', 'to_tc'], '00:00:00:02'), ('partial repair probe: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('partial repair variant: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', [3603600, '23.976', 'to_tc'], '01:00:00:00')], [('regression: ms to frame rounding', [250, '59.94', 'to_tc'], '00:00:00:15'), ('regression variant: ms to frame rounding', [86399999, '24', 'to_tc'], '00:00:00:00'), ('partial repair probe: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('partial repair variant: ms to frame rounding', [150, '30', 'to_tc'], '00:00:00:05'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('normal control', ['23:01:00:12', '30', 'to_ms'], 82860400), ('normal control', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('normal control', ['01:01:01:36', '30', 'to_ms'], 3662200)], [('regression: ms to frame rounding', [33, '30', 'to_tc'], '00:00:00:01'), ('regression variant: ms to frame rounding', [60, '29.97', 'to_tc'], '00:00:00:02'), ('partial repair probe: ms to frame rounding', [150, '30', 'to_tc'], '00:00:00:05'), ('partial repair variant: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('boundary control', [3600000, '29.97', 'to_tc'], '00:59:56:12'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['23:59:59:15', '59.94', 'to_ms'], 86485649), ('normal control', [3600000, '30', 'to_tc'], '01:00:00:00'), ('normal control', ['01:01:01:15', '23.976', 'to_ms'], 3665287)], [('regression: ms to frame rounding', [150, '23.976', 'to_tc'], '00:00:00:04'), ('regression variant: ms to frame rounding', [20, '29.97', 'to_tc'], '00:00:00:01'), ('partial repair probe: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('partial repair variant: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', [3600000, '29.97', 'to_tc'], '00:59:56:12'), ('normal control', [0, '23.976', 'to_tc'], '00:00:00:00'), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', ['01:01:59:45', '25', 'to_ms'], 3720800)], [('regression: ms to frame rounding', [100, '59.94', 'to_tc'], '00:00:00:06'), ('regression variant: ms to frame rounding', [20, '25', 'to_tc'], '00:00:00:01'), ('partial repair probe: ms to frame rounding', [150, '30', 'to_tc'], '00:00:00:05'), ('partial repair variant: ms to frame rounding', [100, '25', 'to_tc'], '00:00:00:03'), ('boundary control', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [250, '24', 'to_tc'], '00:00:00:06'), ('normal control', ['23:00:59:00', '29.97', 'to_ms'], 82941859), ('normal control', [0, '24', 'to_tc'], '00:00:00:00')]]\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-pulldown-wall-clock-ms-to-frame-rounding","generated_at":"2026-09-29T14:49:36.681575+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.","root_cause":"The frame index is floored instead of rounded to nearest.","sha256":"32ebfd1001609ca0644e143a118e00e43a81999211e622f128412038d9937398","title":"Non-drop label to wall clock at pulled-down rates: ms to frame rounding · 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":40.632,"exit_code":1,"observations":[{"actual":"00:00:00:00","check":"regression: ms to frame rounding","expected":"00:00:00:00","passed":true},{"actual":"00:00:00:02","check":"regression variant: ms to frame rounding","expected":"00:00:00:02","passed":true},{"actual":"00:00:00:02","check":"partial repair probe: ms to frame rounding","expected":"00:00:00:03","passed":false},{"actual":"00:00:00:00","check":"partial repair variant: ms to frame rounding","expected":"00:00:00:01","passed":false},{"actual":3603600,"check":"boundary control","expected":3603600,"passed":true},{"actual":40,"check":"boundary control","expected":40,"passed":true},{"actual":42,"check":"normal control","expected":42,"passed":true},{"actual":"00:00:00:00","check":"normal control","expected":"00:00:00:00","passed":true},{"actual":"01:00:00:00","check":"normal control","expected":"01:00:00:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ms to frame rounding\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:00\", \"passed\": true}, {\"check\": \"regression variant: ms to frame rounding\", \"actual\": \"00:00:00:02\", \"expected\": \"00:00:00:02\", \"passed\": true}, {\"check\": \"partial repair probe: ms to frame rounding\", \"actual\": \"00:00:00:02\", \"expected\": \"00:00:00:03\", \"passed\": false}, {\"check\": \"partial repair variant: ms to frame rounding\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:01\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 3603600, \"expected\": 3603600, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 40, \"expected\": 40, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 42, \"expected\": 42, \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:00\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:00:00:00\", \"expected\": \"01:00:00:00\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.751,"exit_code":1,"observations":[{"actual":"23:59:59:24","check":"regression: ms to frame rounding","expected":"00:00:00:00","passed":false},{"actual":"00:00:00:01","check":"regression variant: ms to frame rounding","expected":"00:00:00:02","passed":false},{"actual":"00:00:00:02","check":"partial repair probe: ms to frame rounding","expected":"00:00:00:03","passed":false},{"actual":"00:00:00:00","check":"partial repair variant: ms to frame rounding","expected":"00:00:00:01","passed":false},{"actual":3603600,"check":"boundary control","expected":3603600,"passed":true},{"actual":40,"check":"boundary control","expected":40,"passed":true},{"actual":42,"check":"normal control","expected":42,"passed":true},{"actual":"00:00:00:00","check":"normal control","expected":"00:00:00:00","passed":true},{"actual":"01:00:00:00","check":"normal control","expected":"01:00:00:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ms to frame rounding\", \"actual\": \"23:59:59:24\", \"expected\": \"00:00:00:00\", \"passed\": false}, {\"check\": \"regression variant: ms to frame rounding\", \"actual\": \"00:00:00:01\", \"expected\": \"00:00:00:02\", \"passed\": false}, {\"check\": \"partial repair probe: ms to frame rounding\", \"actual\": \"00:00:00:02\", \"expected\": \"00:00:00:03\", \"passed\": false}, {\"check\": \"partial repair variant: ms to frame rounding\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:01\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 3603600, \"expected\": 3603600, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 40, \"expected\": 40, \"passed\": true}, {\"check\": \"normal control\", \"actual\": 42, \"expected\": 42, \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:00\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"01:00:00:00\", \"expected\": \"01:00:00:00\", \"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."}}