FA-78451 / Broadcast timecode arithmetic / Open access
Drop-frame label increment: skipped label count · case 01
The first label of a new minute is a label that should have been dropped.
ROOT CAUSE
The skip lands on the last dropped label instead of the first valid one.
VERIFIED REPAIR
Start the new minute at frame number drop.
Unsuccessful approach: Hard-coding a skip of 2 is wrong for 59.94, which drops four labels.
Case contract
Given a valid drop-frame label at rate "29.97" (nominal 30, drop 2) or "59.94" (nominal 60, drop 4), return the next label: frames carry into seconds at the nominal rate, seconds into minutes, minutes into hours (wrapping at 24); on entering a new minute not divisible by 10 the first drop labels are skipped.
Why this case matters
Timecode arithmetic errors misplace edits, commercial breaks and captions against the broadcast clock.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(tc, rate):
n=30 if rate=='29.97' else 60
drop=2 if n==30 else 4
h,m,s,f=map(int,re.split('[:;]',tc))
f+=1
if f==n:
f=0
s+=1
if s==60:
s=0
m+=1
if m==60:
m=0
h=(h+1)%24
if m%10!=0:
f=drop-1
return '%02d:%02d:%02d;%02d'%(h,m,s,f)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: skipped label count', ['00:00:59;29', '29.97'], '00:01:00;02'), ('regression variant: skipped label count', ['01:00:59;29', '29.97'], '01:01:00;02'), ('partial repair probe: skipped label count', ['00:01:59;59', '59.94'], '00:02:00;04'), ('partial repair variant: skipped label count', ['23:00:59;59', '59.94'], '23:01:00;04'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('normal control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['01:01:01;02', '29.97'], '01:01:01;03'), ('normal control', ['00:09:00;58', '59.94'], '00:09:00;59')], [('regression: skipped label count', ['00:00:59;59', '59.94'], '00:01:00;04'), ('regression variant: skipped label count', ['01:01:59;59', '59.94'], '01:02:00;04'), ('partial repair probe: skipped label count', ['23:01:59;59', '59.94'], '23:02:00;04'), ('partial repair variant: skipped label count', ['23:10:59;59', '59.94'], '23:11:00;04'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['23:09:59;59', '59.94'], '23:10:00;00'), ('normal control', ['01:10:58;29', '29.97'], '01:10:59;00'), ('normal control', ['00:29:59;00', '59.94'], '00:29:59;01')], [('regression: skipped label count', ['09:01:59;29', '29.97'], '09:02:00;02'), ('regression variant: skipped label count', ['01:01:59;29', '29.97'], '01:02:00;02'), ('partial repair probe: skipped label count', ['09:00:59;59', '59.94'], '09:01:00;04'), ('partial repair variant: skipped label count', ['00:10:59;59', '59.94'], '00:11:00;04'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('normal control', ['09:19:00;04', '59.94'], '09:19:00;05'), ('normal control', ['00:59:59;59', '59.94'], '01:00:00;00'), ('normal control', ['01:29:58;58', '59.94'], '01:29:58;59')], [('regression: skipped label count', ['09:10:59;29', '29.97'], '09:11:00;02'), ('regression variant: skipped label count', ['00:01:59;59', '59.94'], '00:02:00;04'), ('partial repair probe: skipped label count', ['01:00:59;59', '59.94'], '01:01:00;04'), ('partial repair variant: skipped label count', ['00:00:59;59', '59.94'], '00:01:00;04'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('normal control', ['23:00:00;00', '59.94'], '23:00:00;01'), ('normal control', ['23:59:59;03', '59.94'], '23:59:59;04'), ('normal control', ['23:01:58;03', '29.97'], '23:01:58;04')], [('regression: skipped label count', ['09:00:59;29', '29.97'], '09:01:00;02'), ('regression variant: skipped label count', ['23:01:59;59', '59.94'], '23:02:00;04'), ('partial repair probe: skipped label count', ['01:10:59;59', '59.94'], '01:11:00;04'), ('partial repair variant: skipped label count', ['01:01:59;59', '59.94'], '01:02:00;04'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['09:29:59;59', '59.94'], '09:30:00;00'), ('normal control', ['00:09:59;02', '59.94'], '00:09:59;03'), ('normal control', ['23:19:59;05', '59.94'], '23:19:59;06')]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: skipped label count | 00:01:00;01 | 00:01:00;02 | Failed |
| regression variant: skipped label count | 01:01:00;01 | 01:01:00;02 | Failed |
| partial repair probe: skipped label count | 00:02:00;03 | 00:02:00;04 | Failed |
| partial repair variant: skipped label count | 23:01:00;03 | 23:01:00;04 | Failed |
| boundary control | 00:10:00;00 | 00:10:00;00 | Passed |
| boundary control | 00:00:00;00 | 00:00:00;00 | Passed |
| normal control | 00:01:00;03 | 00:01:00;03 | Passed |
| normal control | 01:01:01;03 | 01:01:01;03 | Passed |
| normal control | 00:09:00;59 | 00:09:00;59 | Passed |
SHA-256 / 527cbc4c09b7c1671a141f2ac8b7ead1f460a6561179fc370a6bf31f8257704e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(tc, rate):
n=30 if rate=='29.97' else 60
drop=2 if n==30 else 4
h,m,s,f=map(int,re.split('[:;]',tc))
f+=1
if f==n:
f=0
s+=1
if s==60:
s=0
m+=1
if m==60:
m=0
h=(h+1)%24
if m%10!=0:
f=2
return '%02d:%02d:%02d;%02d'%(h,m,s,f)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: skipped label count', ['00:00:59;29', '29.97'], '00:01:00;02'), ('regression variant: skipped label count', ['01:00:59;29', '29.97'], '01:01:00;02'), ('partial repair probe: skipped label count', ['00:01:59;59', '59.94'], '00:02:00;04'), ('partial repair variant: skipped label count', ['23:00:59;59', '59.94'], '23:01:00;04'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('normal control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['01:01:01;02', '29.97'], '01:01:01;03'), ('normal control', ['00:09:00;58', '59.94'], '00:09:00;59')], [('regression: skipped label count', ['00:00:59;59', '59.94'], '00:01:00;04'), ('regression variant: skipped label count', ['01:01:59;59', '59.94'], '01:02:00;04'), ('partial repair probe: skipped label count', ['23:01:59;59', '59.94'], '23:02:00;04'), ('partial repair variant: skipped label count', ['23:10:59;59', '59.94'], '23:11:00;04'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['23:09:59;59', '59.94'], '23:10:00;00'), ('normal control', ['01:10:58;29', '29.97'], '01:10:59;00'), ('normal control', ['00:29:59;00', '59.94'], '00:29:59;01')], [('regression: skipped label count', ['09:01:59;29', '29.97'], '09:02:00;02'), ('regression variant: skipped label count', ['01:01:59;29', '29.97'], '01:02:00;02'), ('partial repair probe: skipped label count', ['09:00:59;59', '59.94'], '09:01:00;04'), ('partial repair variant: skipped label count', ['00:10:59;59', '59.94'], '00:11:00;04'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('normal control', ['09:19:00;04', '59.94'], '09:19:00;05'), ('normal control', ['00:59:59;59', '59.94'], '01:00:00;00'), ('normal control', ['01:29:58;58', '59.94'], '01:29:58;59')], [('regression: skipped label count', ['09:10:59;29', '29.97'], '09:11:00;02'), ('regression variant: skipped label count', ['00:01:59;59', '59.94'], '00:02:00;04'), ('partial repair probe: skipped label count', ['01:00:59;59', '59.94'], '01:01:00;04'), ('partial repair variant: skipped label count', ['00:00:59;59', '59.94'], '00:01:00;04'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('normal control', ['23:00:00;00', '59.94'], '23:00:00;01'), ('normal control', ['23:59:59;03', '59.94'], '23:59:59;04'), ('normal control', ['23:01:58;03', '29.97'], '23:01:58;04')], [('regression: skipped label count', ['09:00:59;29', '29.97'], '09:01:00;02'), ('regression variant: skipped label count', ['23:01:59;59', '59.94'], '23:02:00;04'), ('partial repair probe: skipped label count', ['01:10:59;59', '59.94'], '01:11:00;04'), ('partial repair variant: skipped label count', ['01:01:59;59', '59.94'], '01:02:00;04'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['09:29:59;59', '59.94'], '09:30:00;00'), ('normal control', ['00:09:59;02', '59.94'], '00:09:59;03'), ('normal control', ['23:19:59;05', '59.94'], '23:19:59;06')]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: skipped label count | 00:01:00;02 | 00:01:00;02 | Passed |
| regression variant: skipped label count | 01:01:00;02 | 01:01:00;02 | Passed |
| partial repair probe: skipped label count | 00:02:00;02 | 00:02:00;04 | Failed |
| partial repair variant: skipped label count | 23:01:00;02 | 23:01:00;04 | Failed |
| boundary control | 00:10:00;00 | 00:10:00;00 | Passed |
| boundary control | 00:00:00;00 | 00:00:00;00 | Passed |
| normal control | 00:01:00;03 | 00:01:00;03 | Passed |
| normal control | 01:01:01;03 | 01:01:01;03 | Passed |
| normal control | 00:09:00;59 | 00:09:00;59 | Passed |
SHA-256 / 7e094d70bd609c7f61463970d5a9b63a90e0ceefd17d5da54f32eba396a83e25
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(tc, rate):
n=30 if rate=='29.97' else 60
drop=2 if n==30 else 4
h,m,s,f=map(int,re.split('[:;]',tc))
f+=1
if f==n:
f=0
s+=1
if s==60:
s=0
m+=1
if m==60:
m=0
h=(h+1)%24
if m%10!=0:
f=drop
return '%02d:%02d:%02d;%02d'%(h,m,s,f)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: skipped label count', ['00:00:59;29', '29.97'], '00:01:00;02'), ('regression variant: skipped label count', ['01:00:59;29', '29.97'], '01:01:00;02'), ('partial repair probe: skipped label count', ['00:01:59;59', '59.94'], '00:02:00;04'), ('partial repair variant: skipped label count', ['23:00:59;59', '59.94'], '23:01:00;04'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('normal control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['01:01:01;02', '29.97'], '01:01:01;03'), ('normal control', ['00:09:00;58', '59.94'], '00:09:00;59')], [('regression: skipped label count', ['00:00:59;59', '59.94'], '00:01:00;04'), ('regression variant: skipped label count', ['01:01:59;59', '59.94'], '01:02:00;04'), ('partial repair probe: skipped label count', ['23:01:59;59', '59.94'], '23:02:00;04'), ('partial repair variant: skipped label count', ['23:10:59;59', '59.94'], '23:11:00;04'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['23:09:59;59', '59.94'], '23:10:00;00'), ('normal control', ['01:10:58;29', '29.97'], '01:10:59;00'), ('normal control', ['00:29:59;00', '59.94'], '00:29:59;01')], [('regression: skipped label count', ['09:01:59;29', '29.97'], '09:02:00;02'), ('regression variant: skipped label count', ['01:01:59;29', '29.97'], '01:02:00;02'), ('partial repair probe: skipped label count', ['09:00:59;59', '59.94'], '09:01:00;04'), ('partial repair variant: skipped label count', ['00:10:59;59', '59.94'], '00:11:00;04'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('normal control', ['09:19:00;04', '59.94'], '09:19:00;05'), ('normal control', ['00:59:59;59', '59.94'], '01:00:00;00'), ('normal control', ['01:29:58;58', '59.94'], '01:29:58;59')], [('regression: skipped label count', ['09:10:59;29', '29.97'], '09:11:00;02'), ('regression variant: skipped label count', ['00:01:59;59', '59.94'], '00:02:00;04'), ('partial repair probe: skipped label count', ['01:00:59;59', '59.94'], '01:01:00;04'), ('partial repair variant: skipped label count', ['00:00:59;59', '59.94'], '00:01:00;04'), ('boundary control', ['00:09:59;29', '29.97'], '00:10:00;00'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('normal control', ['23:00:00;00', '59.94'], '23:00:00;01'), ('normal control', ['23:59:59;03', '59.94'], '23:59:59;04'), ('normal control', ['23:01:58;03', '29.97'], '23:01:58;04')], [('regression: skipped label count', ['09:00:59;29', '29.97'], '09:01:00;02'), ('regression variant: skipped label count', ['23:01:59;59', '59.94'], '23:02:00;04'), ('partial repair probe: skipped label count', ['01:10:59;59', '59.94'], '01:11:00;04'), ('partial repair variant: skipped label count', ['01:01:59;59', '59.94'], '01:02:00;04'), ('boundary control', ['23:59:59;29', '29.97'], '00:00:00;00'), ('boundary control', ['00:01:00;02', '29.97'], '00:01:00;03'), ('normal control', ['09:29:59;59', '59.94'], '09:30:00;00'), ('normal control', ['00:09:59;02', '59.94'], '00:09:59;03'), ('normal control', ['23:19:59;05', '59.94'], '23:19:59;06')]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: skipped label count | 00:01:00;02 | 00:01:00;02 | Passed |
| regression variant: skipped label count | 01:01:00;02 | 01:01:00;02 | Passed |
| partial repair probe: skipped label count | 00:02:00;04 | 00:02:00;04 | Passed |
| partial repair variant: skipped label count | 23:01:00;04 | 23:01:00;04 | Passed |
| boundary control | 00:10:00;00 | 00:10:00;00 | Passed |
| boundary control | 00:00:00;00 | 00:00:00;00 | Passed |
| normal control | 00:01:00;03 | 00:01:00;03 | Passed |
| normal control | 01:01:01;03 | 01:01:01;03 | Passed |
| normal control | 00:09:00;59 | 00:09:00;59 | Passed |
SHA-256 / beacb86447db851384d7a6d19a1d5f5df113c7dd813468ebb8799136083c2d2d
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:49:35.329075+00:00.
Case digest / 27abfe331be8f8c0e8d9290ca91b6adfed932c700dda758ddf898514b77bc217