{"abstract":"Entries typed with periods on the numeric keypad are rejected.","category":"Broadcast timecode arithmetic","checks":9,"contract":"Normalize typed timecode. Separators \":\", \";\" and \".\" are equivalent. With separators, up to four numeric fields fill from the right (frames last). Without separators, up to eight digits are right-aligned into HH MM SS FF pairs. Field overflow carries through the total frame count, which wraps at 24 hours. Invalid entry returns None.","evaluation_group":"w2-broadcast-timecode-arithmetic-entry-normalization","failed_approach":"Normalizing only periods rejects semicolon entry.","family":"w2-broadcast-timecode-arithmetic-entry-normalization-separator-equivalence","id":"FA-78766","implementations":{"attempt":{"sha256":"e291c6b05ddfa68613893acc08bdd3452ed7c9bd443fe75c536adb45d71f476b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, fps):\n    s=s.replace('.',':')\n    if ':' in s:\n        parts=s.split(':')\n        if len(parts)>4 or not all(p.isdigit() for p in parts):\n            return None\n        vals=[0]*(4-len(parts))+[int(p) for p in parts]\n    else:\n        if not s.isdigit() or len(s)>8:\n            return None\n        d=s.zfill(8)\n        vals=[int(d[i:i+2]) for i in range(0,8,2)]\n    h,m,sec,f=vals\n    n=((h*60+m)*60+sec)*fps+f\n    n%=86400*fps\n    return '%02d:%02d:%02d:%02d'%(n//(3600*fps),n//(60*fps)%60,n//fps%60,n%fps)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: separator equivalence', ['1.2.3.4', 25], '01:02:03:04'), ('regression variant: separator equivalence', ['59.2', 24], '00:00:59:02'), ('partial repair probe: separator equivalence', ['30;24;61;30', 24], '06:25:02:06'), ('partial repair variant: separator equivalence', ['24;2;59', 30], '00:24:03:29'), ('boundary control', ['100', 25], '00:00:01:00'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('normal control', ['1:2', 25], '00:00:01:02'), ('normal control', ['99', 24], '00:00:04:03'), ('normal control', ['100', 30], '00:00:01:00')], [('regression: separator equivalence', ['59.10', 24], '00:00:59:10'), ('regression variant: separator equivalence', ['23.1', 30], '00:00:23:01'), ('partial repair probe: separator equivalence', ['30;24;61;1', 24], '06:25:01:01'), ('partial repair variant: separator equivalence', ['1;1;59', 25], '00:01:03:09'), ('boundary control', ['1:2', 25], '00:00:01:02'), ('boundary control', ['100', 25], '00:00:01:00'), ('normal control', ['5959', 24], '00:01:01:11'), ('normal control', ['59:23', 24], '00:00:59:23'), ('normal control', ['', 25], None)], [('regression: separator equivalence', ['59.99', 24], '00:01:03:03'), ('regression variant: separator equivalence', ['59.99.23.24', 24], '12:39:24:00'), ('partial repair probe: separator equivalence', ['59;24;24', 30], '00:59:24:24'), ('partial repair variant: separator equivalence', ['61;1;10', 30], '01:01:01:10'), ('boundary control', ['99', 25], '00:00:03:24'), ('boundary control', ['1:2', 25], '00:00:01:02'), ('normal control', ['10000', 25], '00:01:00:00'), ('normal control', ['61:59:59:24:0', 25], None), ('normal control', ['1000', 24], '00:00:10:00')], [('regression: separator equivalence', ['99.24.0', 24], '01:39:24:00'), ('regression variant: separator equivalence', ['10.59', 25], '00:00:12:09'), ('partial repair probe: separator equivalence', ['10;2;24;2', 25], '10:02:24:02'), ('partial repair variant: separator equivalence', ['59;23', 30], '00:00:59:23'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('boundary control', ['99', 25], '00:00:03:24'), ('normal control', ['2:23:61:99', 25], '02:24:04:24'), ('normal control', ['1:30:10', 30], '00:01:30:10'), ('normal control', ['1;1;1;99;2', 30], None)], [('regression: separator equivalence', ['59.23.99', 30], '00:59:26:09'), ('regression variant: separator equivalence', ['0.1.10', 24], '00:00:01:10'), ('partial repair probe: separator equivalence', ['2;30;61;24', 30], '02:31:01:24'), ('partial repair variant: separator equivalence', ['61;1;99', 30], '01:01:04:09'), ('boundary control', ['100', 25], '00:00:01:00'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('normal control', ['123456789', 25], None), ('normal control', ['10:30', 30], '00:00:11:00'), ('normal control', ['123456', 30], '00:12:35:26')]]\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":"27918398e6589c3600f465a69dddd9daa23ec124a9f14037a9682764feb98503","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, fps):\n    s=s.replace(';',':')\n    if ':' in s:\n        parts=s.split(':')\n        if len(parts)>4 or not all(p.isdigit() for p in parts):\n            return None\n        vals=[0]*(4-len(parts))+[int(p) for p in parts]\n    else:\n        if not s.isdigit() or len(s)>8:\n            return None\n        d=s.zfill(8)\n        vals=[int(d[i:i+2]) for i in range(0,8,2)]\n    h,m,sec,f=vals\n    n=((h*60+m)*60+sec)*fps+f\n    n%=86400*fps\n    return '%02d:%02d:%02d:%02d'%(n//(3600*fps),n//(60*fps)%60,n//fps%60,n%fps)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: separator equivalence', ['1.2.3.4', 25], '01:02:03:04'), ('regression variant: separator equivalence', ['59.2', 24], '00:00:59:02'), ('partial repair probe: separator equivalence', ['30;24;61;30', 24], '06:25:02:06'), ('partial repair variant: separator equivalence', ['24;2;59', 30], '00:24:03:29'), ('boundary control', ['100', 25], '00:00:01:00'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('normal control', ['1:2', 25], '00:00:01:02'), ('normal control', ['99', 24], '00:00:04:03'), ('normal control', ['100', 30], '00:00:01:00')], [('regression: separator equivalence', ['59.10', 24], '00:00:59:10'), ('regression variant: separator equivalence', ['23.1', 30], '00:00:23:01'), ('partial repair probe: separator equivalence', ['30;24;61;1', 24], '06:25:01:01'), ('partial repair variant: separator equivalence', ['1;1;59', 25], '00:01:03:09'), ('boundary control', ['1:2', 25], '00:00:01:02'), ('boundary control', ['100', 25], '00:00:01:00'), ('normal control', ['5959', 24], '00:01:01:11'), ('normal control', ['59:23', 24], '00:00:59:23'), ('normal control', ['', 25], None)], [('regression: separator equivalence', ['59.99', 24], '00:01:03:03'), ('regression variant: separator equivalence', ['59.99.23.24', 24], '12:39:24:00'), ('partial repair probe: separator equivalence', ['59;24;24', 30], '00:59:24:24'), ('partial repair variant: separator equivalence', ['61;1;10', 30], '01:01:01:10'), ('boundary control', ['99', 25], '00:00:03:24'), ('boundary control', ['1:2', 25], '00:00:01:02'), ('normal control', ['10000', 25], '00:01:00:00'), ('normal control', ['61:59:59:24:0', 25], None), ('normal control', ['1000', 24], '00:00:10:00')], [('regression: separator equivalence', ['99.24.0', 24], '01:39:24:00'), ('regression variant: separator equivalence', ['10.59', 25], '00:00:12:09'), ('partial repair probe: separator equivalence', ['10;2;24;2', 25], '10:02:24:02'), ('partial repair variant: separator equivalence', ['59;23', 30], '00:00:59:23'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('boundary control', ['99', 25], '00:00:03:24'), ('normal control', ['2:23:61:99', 25], '02:24:04:24'), ('normal control', ['1:30:10', 30], '00:01:30:10'), ('normal control', ['1;1;1;99;2', 30], None)], [('regression: separator equivalence', ['59.23.99', 30], '00:59:26:09'), ('regression variant: separator equivalence', ['0.1.10', 24], '00:00:01:10'), ('partial repair probe: separator equivalence', ['2;30;61;24', 30], '02:31:01:24'), ('partial repair variant: separator equivalence', ['61;1;99', 30], '01:01:04:09'), ('boundary control', ['100', 25], '00:00:01:00'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('normal control', ['123456789', 25], None), ('normal control', ['10:30', 30], '00:00:11:00'), ('normal control', ['123456', 30], '00:12:35:26')]]\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":"548f06c577d137347bda47d09b2c61642fcda57d452542a81d0c49f35d6a7333","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(s, fps):\n    s=s.replace(';',':').replace('.',':')\n    if ':' in s:\n        parts=s.split(':')\n        if len(parts)>4 or not all(p.isdigit() for p in parts):\n            return None\n        vals=[0]*(4-len(parts))+[int(p) for p in parts]\n    else:\n        if not s.isdigit() or len(s)>8:\n            return None\n        d=s.zfill(8)\n        vals=[int(d[i:i+2]) for i in range(0,8,2)]\n    h,m,sec,f=vals\n    n=((h*60+m)*60+sec)*fps+f\n    n%=86400*fps\n    return '%02d:%02d:%02d:%02d'%(n//(3600*fps),n//(60*fps)%60,n//fps%60,n%fps)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: separator equivalence', ['1.2.3.4', 25], '01:02:03:04'), ('regression variant: separator equivalence', ['59.2', 24], '00:00:59:02'), ('partial repair probe: separator equivalence', ['30;24;61;30', 24], '06:25:02:06'), ('partial repair variant: separator equivalence', ['24;2;59', 30], '00:24:03:29'), ('boundary control', ['100', 25], '00:00:01:00'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('normal control', ['1:2', 25], '00:00:01:02'), ('normal control', ['99', 24], '00:00:04:03'), ('normal control', ['100', 30], '00:00:01:00')], [('regression: separator equivalence', ['59.10', 24], '00:00:59:10'), ('regression variant: separator equivalence', ['23.1', 30], '00:00:23:01'), ('partial repair probe: separator equivalence', ['30;24;61;1', 24], '06:25:01:01'), ('partial repair variant: separator equivalence', ['1;1;59', 25], '00:01:03:09'), ('boundary control', ['1:2', 25], '00:00:01:02'), ('boundary control', ['100', 25], '00:00:01:00'), ('normal control', ['5959', 24], '00:01:01:11'), ('normal control', ['59:23', 24], '00:00:59:23'), ('normal control', ['', 25], None)], [('regression: separator equivalence', ['59.99', 24], '00:01:03:03'), ('regression variant: separator equivalence', ['59.99.23.24', 24], '12:39:24:00'), ('partial repair probe: separator equivalence', ['59;24;24', 30], '00:59:24:24'), ('partial repair variant: separator equivalence', ['61;1;10', 30], '01:01:01:10'), ('boundary control', ['99', 25], '00:00:03:24'), ('boundary control', ['1:2', 25], '00:00:01:02'), ('normal control', ['10000', 25], '00:01:00:00'), ('normal control', ['61:59:59:24:0', 25], None), ('normal control', ['1000', 24], '00:00:10:00')], [('regression: separator equivalence', ['99.24.0', 24], '01:39:24:00'), ('regression variant: separator equivalence', ['10.59', 25], '00:00:12:09'), ('partial repair probe: separator equivalence', ['10;2;24;2', 25], '10:02:24:02'), ('partial repair variant: separator equivalence', ['59;23', 30], '00:00:59:23'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('boundary control', ['99', 25], '00:00:03:24'), ('normal control', ['2:23:61:99', 25], '02:24:04:24'), ('normal control', ['1:30:10', 30], '00:01:30:10'), ('normal control', ['1;1;1;99;2', 30], None)], [('regression: separator equivalence', ['59.23.99', 30], '00:59:26:09'), ('regression variant: separator equivalence', ['0.1.10', 24], '00:00:01:10'), ('partial repair probe: separator equivalence', ['2;30;61;24', 30], '02:31:01:24'), ('partial repair variant: separator equivalence', ['61;1;99', 30], '01:01:04:09'), ('boundary control', ['100', 25], '00:00:01:00'), ('boundary control', ['23595924', 25], '23:59:59:24'), ('normal control', ['123456789', 25], None), ('normal control', ['10:30', 30], '00:00:11:00'), ('normal control', ['123456', 30], '00:12:35:26')]]\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-entry-normalization-separator-equivalence","generated_at":"2026-09-29T14:49:38.563925+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":"Treat \";\", \".\" and \":\" alike.","root_cause":"Only the semicolon is normalized to a colon.","sha256":"7e667e651739adf3b4e3dac3260fa746e54926f3019d3cf7de932050c0020ca4","title":"Operator timecode entry normalization: separator equivalence · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.086,"exit_code":1,"observations":[{"actual":"01:02:03:04","check":"regression: separator equivalence","expected":"01:02:03:04","passed":true},{"actual":"00:00:59:02","check":"regression variant: separator equivalence","expected":"00:00:59:02","passed":true},{"actual":null,"check":"partial repair probe: separator equivalence","expected":"06:25:02:06","passed":false},{"actual":null,"check":"partial repair variant: separator equivalence","expected":"00:24:03:29","passed":false},{"actual":"00:00:01:00","check":"boundary control","expected":"00:00:01:00","passed":true},{"actual":"23:59:59:24","check":"boundary control","expected":"23:59:59:24","passed":true},{"actual":"00:00:01:02","check":"normal control","expected":"00:00:01:02","passed":true},{"actual":"00:00:04:03","check":"normal control","expected":"00:00:04:03","passed":true},{"actual":"00:00:01:00","check":"normal control","expected":"00:00:01:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: separator equivalence\", \"actual\": \"01:02:03:04\", \"expected\": \"01:02:03:04\", \"passed\": true}, {\"check\": \"regression variant: separator equivalence\", \"actual\": \"00:00:59:02\", \"expected\": \"00:00:59:02\", \"passed\": true}, {\"check\": \"partial repair probe: separator equivalence\", \"actual\": null, \"expected\": \"06:25:02:06\", \"passed\": false}, {\"check\": \"partial repair variant: separator equivalence\", \"actual\": null, \"expected\": \"00:24:03:29\", \"passed\": false}, {\"check\": \"boundary control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"23:59:59:24\", \"expected\": \"23:59:59:24\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:02\", \"expected\": \"00:00:01:02\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:04:03\", \"expected\": \"00:00:04:03\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.585,"exit_code":1,"observations":[{"actual":null,"check":"regression: separator equivalence","expected":"01:02:03:04","passed":false},{"actual":null,"check":"regression variant: separator equivalence","expected":"00:00:59:02","passed":false},{"actual":"06:25:02:06","check":"partial repair probe: separator equivalence","expected":"06:25:02:06","passed":true},{"actual":"00:24:03:29","check":"partial repair variant: separator equivalence","expected":"00:24:03:29","passed":true},{"actual":"00:00:01:00","check":"boundary control","expected":"00:00:01:00","passed":true},{"actual":"23:59:59:24","check":"boundary control","expected":"23:59:59:24","passed":true},{"actual":"00:00:01:02","check":"normal control","expected":"00:00:01:02","passed":true},{"actual":"00:00:04:03","check":"normal control","expected":"00:00:04:03","passed":true},{"actual":"00:00:01:00","check":"normal control","expected":"00:00:01:00","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: separator equivalence\", \"actual\": null, \"expected\": \"01:02:03:04\", \"passed\": false}, {\"check\": \"regression variant: separator equivalence\", \"actual\": null, \"expected\": \"00:00:59:02\", \"passed\": false}, {\"check\": \"partial repair probe: separator equivalence\", \"actual\": \"06:25:02:06\", \"expected\": \"06:25:02:06\", \"passed\": true}, {\"check\": \"partial repair variant: separator equivalence\", \"actual\": \"00:24:03:29\", \"expected\": \"00:24:03:29\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"23:59:59:24\", \"expected\": \"23:59:59:24\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:02\", \"expected\": \"00:00:01:02\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:04:03\", \"expected\": \"00:00:04:03\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.468,"exit_code":0,"observations":[{"actual":"01:02:03:04","check":"regression: separator equivalence","expected":"01:02:03:04","passed":true},{"actual":"00:00:59:02","check":"regression variant: separator equivalence","expected":"00:00:59:02","passed":true},{"actual":"06:25:02:06","check":"partial repair probe: separator equivalence","expected":"06:25:02:06","passed":true},{"actual":"00:24:03:29","check":"partial repair variant: separator equivalence","expected":"00:24:03:29","passed":true},{"actual":"00:00:01:00","check":"boundary control","expected":"00:00:01:00","passed":true},{"actual":"23:59:59:24","check":"boundary control","expected":"23:59:59:24","passed":true},{"actual":"00:00:01:02","check":"normal control","expected":"00:00:01:02","passed":true},{"actual":"00:00:04:03","check":"normal control","expected":"00:00:04:03","passed":true},{"actual":"00:00:01:00","check":"normal control","expected":"00:00:01:00","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: separator equivalence\", \"actual\": \"01:02:03:04\", \"expected\": \"01:02:03:04\", \"passed\": true}, {\"check\": \"regression variant: separator equivalence\", \"actual\": \"00:00:59:02\", \"expected\": \"00:00:59:02\", \"passed\": true}, {\"check\": \"partial repair probe: separator equivalence\", \"actual\": \"06:25:02:06\", \"expected\": \"06:25:02:06\", \"passed\": true}, {\"check\": \"partial repair variant: separator equivalence\", \"actual\": \"00:24:03:29\", \"expected\": \"00:24:03:29\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}, {\"check\": \"boundary control\", \"actual\": \"23:59:59:24\", \"expected\": \"23:59:59:24\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:02\", \"expected\": \"00:00:01:02\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:04:03\", \"expected\": \"00:00:04:03\", \"passed\": true}, {\"check\": \"normal control\", \"actual\": \"00:00:01:00\", \"expected\": \"00:00:01:00\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}