{"abstract":"An hour of 29.97 labels maps to exactly one hour of wall clock, 3.6 seconds short.","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":"Treating integer 30 as pulled down slows genuine 30 fps material.","family":"w2-broadcast-timecode-arithmetic-pulldown-wall-clock-pulldown-denominator","id":"FA-78591","implementations":{"attempt":{"sha256":"75088f821f4f8717d3758426409fcd13ea34c9ba1f89ce43238c7982773216a1","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 rate not in ('24','25') 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=(2*value*num+1000*den)//(2000*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: pulldown denominator', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('regression variant: pulldown denominator', ['23:59:59:15', '59.94', 'to_ms'], 86485649), ('partial repair probe: pulldown denominator', ['10:00:01:06', '30', 'to_ms'], 36001200), ('partial repair variant: pulldown denominator', ['01:59:01:15', '30', 'to_ms'], 7141500), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', [1020, '24', 'to_tc'], '00:00:01:00'), ('normal control', [86399999, '25', 'to_tc'], '00:00:00:00')], [('regression: pulldown denominator', [3600000, '29.97', 'to_tc'], '00:59:56:12'), ('regression variant: pulldown denominator', [150, '29.97', 'to_tc'], '00:00:00:04'), ('partial repair probe: pulldown denominator', [3600000, '30', 'to_tc'], '01:00:00:00'), ('partial repair variant: pulldown denominator', ['01:01:00:36', '30', 'to_ms'], 3661200), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['10:59:00:00', '24', 'to_ms'], 39540000), ('normal control', [1, '59.94', 'to_tc'], '00:00:00:00'), ('normal control', [1001, '59.94', 'to_tc'], '00:00:01:00')], [('regression: pulldown denominator', [3603600, '23.976', 'to_tc'], '01:00:00:00'), ('regression variant: pulldown denominator', ['01:01:01:15', '23.976', 'to_ms'], 3665287), ('partial repair probe: pulldown denominator', ['10:59:59:36', '30', 'to_ms'], 39600200), ('partial repair variant: pulldown denominator', ['01:59:59:29', '30', 'to_ms'], 7199967), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', [60, '25', 'to_tc'], '00:00:00:02'), ('normal control', ['10:00:00:36', '24', 'to_ms'], 36001500)], [('regression: pulldown denominator', ['10:59:00:45', '23.976', 'to_ms'], 39581417), ('regression variant: pulldown denominator', [3603600, '29.97', 'to_tc'], '01:00:00:00'), ('partial repair probe: pulldown denominator', ['10:00:01:15', '30', 'to_ms'], 36001500), ('partial repair variant: pulldown denominator', [32276345, '30', 'to_tc'], '08:57:56:10'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['10:59:00:45', '25', 'to_ms'], 39541800), ('normal control', [0, '24', 'to_tc'], '00:00:00:00'), ('normal control', [1, '23.976', 'to_tc'], '00:00:00:00')], [('regression: pulldown denominator', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('regression variant: pulldown denominator', ['23:00:59:00', '29.97', 'to_ms'], 82941859), ('partial repair probe: pulldown denominator', ['00:59:01:06', '30', 'to_ms'], 3541200), ('partial repair variant: pulldown denominator', [3603600, '30', 'to_tc'], '01:00:03:18'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [60, '29.97', 'to_tc'], '00:00:00:02'), ('normal control', [20, '29.97', 'to_tc'], '00:00:00:01'), ('normal control', [20, '25', 'to_tc'], '00:00:00:01')]]\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":"9e19f4d31515a2c2dab9ae59cf34054fa263aa2822ec2d47d3b38b2b13253254","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=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=(2*value*num+1000*den)//(2000*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: pulldown denominator', ['01:00:00:00', '29.97', 'to_ms'], 3603600), ('regression variant: pulldown denominator', ['23:59:59:15', '59.94', 'to_ms'], 86485649), ('partial repair probe: pulldown denominator', ['10:00:01:06', '30', 'to_ms'], 36001200), ('partial repair variant: pulldown denominator', ['01:59:01:15', '30', 'to_ms'], 7141500), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [1, '24', 'to_tc'], '00:00:00:00'), ('normal control', [1020, '24', 'to_tc'], '00:00:01:00'), ('normal control', [86399999, '25', 'to_tc'], '00:00:00:00')], [('regression: pulldown denominator', [3600000, '29.97', 'to_tc'], '00:59:56:12'), ('regression variant: pulldown denominator', [150, '29.97', 'to_tc'], '00:00:00:04'), ('partial repair probe: pulldown denominator', [3600000, '30', 'to_tc'], '01:00:00:00'), ('partial repair variant: pulldown denominator', ['01:01:00:36', '30', 'to_ms'], 3661200), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['10:59:00:00', '24', 'to_ms'], 39540000), ('normal control', [1, '59.94', 'to_tc'], '00:00:00:00'), ('normal control', [1001, '59.94', 'to_tc'], '00:00:01:00')], [('regression: pulldown denominator', [3603600, '23.976', 'to_tc'], '01:00:00:00'), ('regression variant: pulldown denominator', ['01:01:01:15', '23.976', 'to_ms'], 3665287), ('partial repair probe: pulldown denominator', ['10:59:59:36', '30', 'to_ms'], 39600200), ('partial repair variant: pulldown denominator', ['01:59:59:29', '30', 'to_ms'], 7199967), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [100, '23.976', 'to_tc'], '00:00:00:02'), ('normal control', [60, '25', 'to_tc'], '00:00:00:02'), ('normal control', ['10:00:00:36', '24', 'to_ms'], 36001500)], [('regression: pulldown denominator', ['10:59:00:45', '23.976', 'to_ms'], 39581417), ('regression variant: pulldown denominator', [3603600, '29.97', 'to_tc'], '01:00:00:00'), ('partial repair probe: pulldown denominator', ['10:00:01:15', '30', 'to_ms'], 36001500), ('partial repair variant: pulldown denominator', [32276345, '30', 'to_tc'], '08:57:56:10'), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('normal control', ['10:59:00:45', '25', 'to_ms'], 39541800), ('normal control', [0, '24', 'to_tc'], '00:00:00:00'), ('normal control', [1, '23.976', 'to_tc'], '00:00:00:00')], [('regression: pulldown denominator', [86399999, '23.976', 'to_tc'], '23:58:33:16'), ('regression variant: pulldown denominator', ['23:00:59:00', '29.97', 'to_ms'], 82941859), ('partial repair probe: pulldown denominator', ['00:59:01:06', '30', 'to_ms'], 3541200), ('partial repair variant: pulldown denominator', [3603600, '30', 'to_tc'], '01:00:03:18'), ('boundary control', ['00:00:00:01', '23.976', 'to_ms'], 42), ('boundary control', ['00:00:00:01', '25', 'to_ms'], 40), ('normal control', [60, '29.97', 'to_tc'], '00:00:00:02'), ('normal control', [20, '29.97', 'to_tc'], '00:00:00:01'), ('normal control', [20, '25', 'to_tc'], '00:00:00:01')]]\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-pulldown-denominator","generated_at":"2026-09-29T14:49:36.643039+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 1000/1001 pull-down factor is never applied.","sha256":"7d5111f37aa9f4bc0e6f532fc83fdaeb81972d904d9effcd740d39a296044aa3","title":"Non-drop label to wall clock at pulled-down rates: pulldown denominator · 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":41.665,"exit_code":1,"observations":[{"actual":3603600,"check":"regression: pulldown denominator","expected":3603600,"passed":true},{"actual":86485649,"check":"regression variant: pulldown denominator","expected":86485649,"passed":true},{"actual":36037201,"check":"partial repair probe: pulldown denominator","expected":36001200,"passed":false},{"actual":7148642,"check":"partial repair variant: pulldown denominator","expected":7141500,"passed":false},{"actual":42,"check":"boundary control","expected":42,"passed":true},{"actual":40,"check":"boundary control","expected":40,"passed":true},{"actual":"00:00:00:00","check":"normal control","expected":"00:00:00:00","passed":true},{"actual":"00:00:01:00","check":"normal control","expected":"00:00:01:00","passed":true},{"actual":"00:00:00:00","check":"normal control","expected":"00:00:00:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pulldown denominator\", \"actual\": 3603600, \"expected\": 3603600, \"passed\": true}, {\"check\": \"regression variant: pulldown denominator\", \"actual\": 86485649, \"expected\": 86485649, \"passed\": true}, {\"check\": \"partial repair probe: pulldown denominator\", \"actual\": 36037201, \"expected\": 36001200, \"passed\": false}, {\"check\": \"partial repair variant: pulldown denominator\", \"actual\": 7148642, \"expected\": 7141500, \"passed\": false}, {\"check\": \"boundary control\", \"actual\": 42, \"expected\": 42, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 40, \"expected\": 40, \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:00\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:00\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.06,"exit_code":1,"observations":[{"actual":3600000,"check":"regression: pulldown denominator","expected":3603600,"passed":false},{"actual":86399250,"check":"regression variant: pulldown denominator","expected":86485649,"passed":false},{"actual":36001200,"check":"partial repair probe: pulldown denominator","expected":36001200,"passed":true},{"actual":7141500,"check":"partial repair variant: pulldown denominator","expected":7141500,"passed":true},{"actual":42,"check":"boundary control","expected":42,"passed":true},{"actual":40,"check":"boundary control","expected":40,"passed":true},{"actual":"00:00:00:00","check":"normal control","expected":"00:00:00:00","passed":true},{"actual":"00:00:01:00","check":"normal control","expected":"00:00:01:00","passed":true},{"actual":"00:00:00:00","check":"normal control","expected":"00:00:00:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: pulldown denominator\", \"actual\": 3600000, \"expected\": 3603600, \"passed\": false}, {\"check\": \"regression variant: pulldown denominator\", \"actual\": 86399250, \"expected\": 86485649, \"passed\": false}, {\"check\": \"partial repair probe: pulldown denominator\", \"actual\": 36001200, \"expected\": 36001200, \"passed\": true}, {\"check\": \"partial repair variant: pulldown denominator\", \"actual\": 7141500, \"expected\": 7141500, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 42, \"expected\": 42, \"passed\": true}, {\"check\": \"boundary control\", \"actual\": 40, \"expected\": 40, \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:00:00\", \"expected\": \"00:00:00:00\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:00:00\", \"expected\": \"00: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."}}