FAILURE MAP
← Case archive

FA-77926 / Subtitle cue timing / Open access

Subtitle frame-rate retiming: ntsc alias rate · case 01

Files labelled 23.976 accumulate a small drift against the real 24000/1001 video.

Verified by executionVariant 1 · 9 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The decimal alias is parsed literally as 23.976 instead of the exact 24000/1001 rate.

VERIFIED REPAIR

Map the decimal alias to the next integer times 1000/1001.

Unsuccessful approach: Rounding the alias up to 24 discards the 1000/1001 pull-down factor completely.

Case contract

Cue times authored against a src frame rate are rescaled for playback at dst by t*src/dst, rounded half up to integer ms. Rates are "N", "N/D", or the aliases "23.976"/"29.97" meaning (N+1)*1000/1001. The end is rounded independently; an end that does not exceed the start becomes start+1.

Why this case matters

Subtitle timing defects shift, hide or overlap captions that viewers depend on for comprehension and accessibility.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(cues, src, dst):
    def rate(r):
        if '/' in r:
            a,b=r.split('/')
            return Fraction(int(a),int(b))
        if '.' in r:
            return Fraction(r)
        return Fraction(int(r))
    k=rate(src)/rate(dst)
    out=[]
    for start,end in cues:
        rs=math.floor(start*k+Fraction(1,2))
        re_=math.floor(end*k+Fraction(1,2))
        if re_<=rs:
            re_=rs+1
        out.append([rs,re_])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: ntsc alias rate', [[[540231, 541231], [0, 3]], '50', '29.97'], [[901285, 902954], [0, 5]]), ('regression variant: ntsc alias rate', [[[0, 1], [489701, 489704], [1001, 1002], [1, 1001]], '29.97', '30'], [[0, 1], [489212, 489215], [1000, 1001], [1, 1000]]), ('partial repair probe: ntsc alias rate', [[[269050, 271051]], '30000/1001', '23.976'], [[336313, 338814]]), ('partial repair variant: ntsc alias rate', [[[999, 1002]], '50', '29.97'], [[1667, 1672]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('normal control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('normal control', [[[268354, 268356], [12345, 14346], [0, 42]], '60', '25'], [[644050, 644054], [29628, 34430], [0, 101]]), ('normal control', [[[1, 4], [7, 9], [12345, 14346], [1001, 1002]], '24000/1001', '12'], [[2, 8], [14, 18], [24665, 28663], [2000, 2002]])], [('regression: ntsc alias rate', [[[559526, 560526], [1, 1001], [3, 2004]], '29.97', '60'], [[279484, 279983], [0, 500], [1, 1001]]), ('regression variant: ntsc alias rate', [[[368223, 369223], [999, 1001], [1001, 3733]], '12', '29.97'], [[147436, 147837], [400, 401], [401, 1495]]), ('partial repair probe: ntsc alias rate', [[[269050, 271051]], '30000/1001', '23.976'], [[336313, 338814]]), ('partial repair variant: ntsc alias rate', [[[3, 6]], '29.97', '24'], [[4, 7]]), ('boundary control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('normal control', [[[1, 4]], '15', '15'], [[1, 4]]), ('normal control', [[[1001, 1003]], '60', '15'], [[4004, 4012]]), ('normal control', [[[7, 9], [3, 6], [0, 3], [1, 4]], '24', '23.976'], [[7, 9], [3, 6], [0, 3], [1, 4]])], [('regression: ntsc alias rate', [[[704417, 706418], [7, 9]], '29.97', '24'], [[879642, 882140], [9, 11]]), ('regression variant: ntsc alias rate', [[[639258, 643831], [3, 4773], [741030, 741031]], '29.97', '50'], [[383172, 385913], [2, 2861], [444174, 444175]]), ('partial repair probe: ntsc alias rate', [[[999, 3000], [3, 1003], [999, 2960]], '23.976', '60'], [[399, 1199], [1, 401], [399, 1183]]), ('partial repair variant: ntsc alias rate', [[[999, 1999]], '23.976', '50'], [[479, 959]]), ('boundary control', [[[5, 6]], '24', '25'], [[5, 6]]), ('boundary control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('normal control', [[[1, 4]], '23.976', '15'], [[2, 6]]), ('normal control', [[[3, 1003], [999, 1000], [3, 5]], '50', '30'], [[5, 1672], [1665, 1667], [5, 8]]), ('normal control', [[[7, 2008], [1001, 3002]], '50', '12'], [[29, 8367], [4171, 12508]])], [('regression: ntsc alias rate', [[[256578, 256580], [1, 1001], [3, 6], [1, 1315]], '23.976', '15'], [[410115, 410118], [2, 1600], [5, 10], [2, 2102]]), ('regression variant: ntsc alias rate', [[[7, 8], [215573, 215574], [999, 3000]], '29.97', '30'], [[7, 8], [215358, 215359], [998, 2997]]), ('partial repair probe: ntsc alias rate', [[[999, 2714], [12345, 13345], [1, 2002]], '29.97', '30000/1001'], [[999, 2714], [12345, 13345], [1, 2002]]), ('partial repair variant: ntsc alias rate', [[[3, 509], [1, 4], [1, 2847]], '24000/1001', '29.97'], [[2, 407], [1, 3], [1, 2278]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('boundary control', [[[5, 6]], '24', '25'], [[5, 6]]), ('normal control', [[[999, 1001], [1001, 1003], [54677, 54680], [7, 2008]], '48', '25'], [[1918, 1922], [1922, 1926], [104980, 104986], [13, 3855]]), ('normal control', [[[1001, 1004], [7, 9], [999, 1001]], '30', '25'], [[1201, 1205], [8, 11], [1199, 1201]]), ('normal control', [[[821125, 821127], [0, 1]], '30', '30'], [[821125, 821127], [0, 1]])], [('regression: ntsc alias rate', [[[1, 2], [999, 1999], [166350, 167350], [1, 4224]], '50', '29.97'], [[2, 3], [1667, 3335], [277527, 279196], [2, 7047]]), ('regression variant: ntsc alias rate', [[[557345, 559346], [999, 1000]], '23.976', '30'], [[445431, 447030], [798, 799]]), ('partial repair probe: ntsc alias rate', [[[209282, 209284], [999, 1000], [1, 1001]], '12', '29.97'], [[83797, 83798], [400, 401], [0, 401]]), ('partial repair variant: ntsc alias rate', [[[3, 4], [1, 4181], [999, 1001]], '30', '23.976'], [[4, 5], [1, 5231], [1250, 1253]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('normal control', [[[3, 2004], [3, 1003], [0, 3]], '30000/1001', '24000/1001'], [[4, 2505], [4, 1254], [0, 4]]), ('normal control', [[[1, 2], [7, 2008], [1001, 1002]], '50', '25'], [[2, 4], [14, 4016], [2002, 2004]]), ('normal control', [[[1, 4]], '24000/1001', '50'], [[0, 2]])]]
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 fixtureActualExpectedOutcome
regression: ntsc alias rate[[901286, 902955], [0, 5]][[901285, 902954], [0, 5]]Failed
regression variant: ntsc alias rate[[0, 1], [489211, 489214], [1000, 1001], [1, 1000]][[0, 1], [489212, 489215], [1000, 1001], [1, 1000]]Failed
partial repair probe: ntsc alias rate[[336313, 338814]][[336313, 338814]]Passed
partial repair variant: ntsc alias rate[[1667, 1672]][[1667, 1672]]Passed
boundary control[[500, 1000]][[500, 1000]]Passed
boundary control[[1, 2], [3, 4]][[1, 2], [3, 4]]Passed
normal control[[1000, 3000]][[1000, 3000]]Passed
normal control[[644050, 644054], [29628, 34430], [0, 101]][[644050, 644054], [29628, 34430], [0, 101]]Passed
normal control[[2, 8], [14, 18], [24665, 28663], [2000, 2002]][[2, 8], [14, 18], [24665, 28663], [2000, 2002]]Passed

SHA-256 / 8e2062c3d10e5ef411d0a92f96f0fec1b37c270e752292c4dfd902f3f3a5ffb5

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(cues, src, dst):
    def rate(r):
        if '/' in r:
            a,b=r.split('/')
            return Fraction(int(a),int(b))
        if '.' in r:
            return Fraction(int(float(r)+0.5))
        return Fraction(int(r))
    k=rate(src)/rate(dst)
    out=[]
    for start,end in cues:
        rs=math.floor(start*k+Fraction(1,2))
        re_=math.floor(end*k+Fraction(1,2))
        if re_<=rs:
            re_=rs+1
        out.append([rs,re_])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: ntsc alias rate', [[[540231, 541231], [0, 3]], '50', '29.97'], [[901285, 902954], [0, 5]]), ('regression variant: ntsc alias rate', [[[0, 1], [489701, 489704], [1001, 1002], [1, 1001]], '29.97', '30'], [[0, 1], [489212, 489215], [1000, 1001], [1, 1000]]), ('partial repair probe: ntsc alias rate', [[[269050, 271051]], '30000/1001', '23.976'], [[336313, 338814]]), ('partial repair variant: ntsc alias rate', [[[999, 1002]], '50', '29.97'], [[1667, 1672]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('normal control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('normal control', [[[268354, 268356], [12345, 14346], [0, 42]], '60', '25'], [[644050, 644054], [29628, 34430], [0, 101]]), ('normal control', [[[1, 4], [7, 9], [12345, 14346], [1001, 1002]], '24000/1001', '12'], [[2, 8], [14, 18], [24665, 28663], [2000, 2002]])], [('regression: ntsc alias rate', [[[559526, 560526], [1, 1001], [3, 2004]], '29.97', '60'], [[279484, 279983], [0, 500], [1, 1001]]), ('regression variant: ntsc alias rate', [[[368223, 369223], [999, 1001], [1001, 3733]], '12', '29.97'], [[147436, 147837], [400, 401], [401, 1495]]), ('partial repair probe: ntsc alias rate', [[[269050, 271051]], '30000/1001', '23.976'], [[336313, 338814]]), ('partial repair variant: ntsc alias rate', [[[3, 6]], '29.97', '24'], [[4, 7]]), ('boundary control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('normal control', [[[1, 4]], '15', '15'], [[1, 4]]), ('normal control', [[[1001, 1003]], '60', '15'], [[4004, 4012]]), ('normal control', [[[7, 9], [3, 6], [0, 3], [1, 4]], '24', '23.976'], [[7, 9], [3, 6], [0, 3], [1, 4]])], [('regression: ntsc alias rate', [[[704417, 706418], [7, 9]], '29.97', '24'], [[879642, 882140], [9, 11]]), ('regression variant: ntsc alias rate', [[[639258, 643831], [3, 4773], [741030, 741031]], '29.97', '50'], [[383172, 385913], [2, 2861], [444174, 444175]]), ('partial repair probe: ntsc alias rate', [[[999, 3000], [3, 1003], [999, 2960]], '23.976', '60'], [[399, 1199], [1, 401], [399, 1183]]), ('partial repair variant: ntsc alias rate', [[[999, 1999]], '23.976', '50'], [[479, 959]]), ('boundary control', [[[5, 6]], '24', '25'], [[5, 6]]), ('boundary control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('normal control', [[[1, 4]], '23.976', '15'], [[2, 6]]), ('normal control', [[[3, 1003], [999, 1000], [3, 5]], '50', '30'], [[5, 1672], [1665, 1667], [5, 8]]), ('normal control', [[[7, 2008], [1001, 3002]], '50', '12'], [[29, 8367], [4171, 12508]])], [('regression: ntsc alias rate', [[[256578, 256580], [1, 1001], [3, 6], [1, 1315]], '23.976', '15'], [[410115, 410118], [2, 1600], [5, 10], [2, 2102]]), ('regression variant: ntsc alias rate', [[[7, 8], [215573, 215574], [999, 3000]], '29.97', '30'], [[7, 8], [215358, 215359], [998, 2997]]), ('partial repair probe: ntsc alias rate', [[[999, 2714], [12345, 13345], [1, 2002]], '29.97', '30000/1001'], [[999, 2714], [12345, 13345], [1, 2002]]), ('partial repair variant: ntsc alias rate', [[[3, 509], [1, 4], [1, 2847]], '24000/1001', '29.97'], [[2, 407], [1, 3], [1, 2278]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('boundary control', [[[5, 6]], '24', '25'], [[5, 6]]), ('normal control', [[[999, 1001], [1001, 1003], [54677, 54680], [7, 2008]], '48', '25'], [[1918, 1922], [1922, 1926], [104980, 104986], [13, 3855]]), ('normal control', [[[1001, 1004], [7, 9], [999, 1001]], '30', '25'], [[1201, 1205], [8, 11], [1199, 1201]]), ('normal control', [[[821125, 821127], [0, 1]], '30', '30'], [[821125, 821127], [0, 1]])], [('regression: ntsc alias rate', [[[1, 2], [999, 1999], [166350, 167350], [1, 4224]], '50', '29.97'], [[2, 3], [1667, 3335], [277527, 279196], [2, 7047]]), ('regression variant: ntsc alias rate', [[[557345, 559346], [999, 1000]], '23.976', '30'], [[445431, 447030], [798, 799]]), ('partial repair probe: ntsc alias rate', [[[209282, 209284], [999, 1000], [1, 1001]], '12', '29.97'], [[83797, 83798], [400, 401], [0, 401]]), ('partial repair variant: ntsc alias rate', [[[3, 4], [1, 4181], [999, 1001]], '30', '23.976'], [[4, 5], [1, 5231], [1250, 1253]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('normal control', [[[3, 2004], [3, 1003], [0, 3]], '30000/1001', '24000/1001'], [[4, 2505], [4, 1254], [0, 4]]), ('normal control', [[[1, 2], [7, 2008], [1001, 1002]], '50', '25'], [[2, 4], [14, 4016], [2002, 2004]]), ('normal control', [[[1, 4]], '24000/1001', '50'], [[0, 2]])]]
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 fixtureActualExpectedOutcome
regression: ntsc alias rate[[900385, 902052], [0, 5]][[901285, 902954], [0, 5]]Failed
regression variant: ntsc alias rate[[0, 1], [489701, 489704], [1001, 1002], [1, 1001]][[0, 1], [489212, 489215], [1000, 1001], [1, 1000]]Failed
partial repair probe: ntsc alias rate[[335977, 338475]][[336313, 338814]]Failed
partial repair variant: ntsc alias rate[[1665, 1670]][[1667, 1672]]Failed
boundary control[[500, 1000]][[500, 1000]]Passed
boundary control[[1, 2], [3, 4]][[1, 2], [3, 4]]Passed
normal control[[1000, 3000]][[1000, 3000]]Passed
normal control[[644050, 644054], [29628, 34430], [0, 101]][[644050, 644054], [29628, 34430], [0, 101]]Passed
normal control[[2, 8], [14, 18], [24665, 28663], [2000, 2002]][[2, 8], [14, 18], [24665, 28663], [2000, 2002]]Passed

SHA-256 / 2791fbb2fb08f1c396486afa8f3e6628f45b5154f79c493854f8d70c9f35097b

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(cues, src, dst):
    def rate(r):
        if '/' in r:
            a,b=r.split('/')
            return Fraction(int(a),int(b))
        if '.' in r:
            return Fraction(int(float(r)+0.5)*1000,1001)
        return Fraction(int(r))
    k=rate(src)/rate(dst)
    out=[]
    for start,end in cues:
        rs=math.floor(start*k+Fraction(1,2))
        re_=math.floor(end*k+Fraction(1,2))
        if re_<=rs:
            re_=rs+1
        out.append([rs,re_])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: ntsc alias rate', [[[540231, 541231], [0, 3]], '50', '29.97'], [[901285, 902954], [0, 5]]), ('regression variant: ntsc alias rate', [[[0, 1], [489701, 489704], [1001, 1002], [1, 1001]], '29.97', '30'], [[0, 1], [489212, 489215], [1000, 1001], [1, 1000]]), ('partial repair probe: ntsc alias rate', [[[269050, 271051]], '30000/1001', '23.976'], [[336313, 338814]]), ('partial repair variant: ntsc alias rate', [[[999, 1002]], '50', '29.97'], [[1667, 1672]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('normal control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('normal control', [[[268354, 268356], [12345, 14346], [0, 42]], '60', '25'], [[644050, 644054], [29628, 34430], [0, 101]]), ('normal control', [[[1, 4], [7, 9], [12345, 14346], [1001, 1002]], '24000/1001', '12'], [[2, 8], [14, 18], [24665, 28663], [2000, 2002]])], [('regression: ntsc alias rate', [[[559526, 560526], [1, 1001], [3, 2004]], '29.97', '60'], [[279484, 279983], [0, 500], [1, 1001]]), ('regression variant: ntsc alias rate', [[[368223, 369223], [999, 1001], [1001, 3733]], '12', '29.97'], [[147436, 147837], [400, 401], [401, 1495]]), ('partial repair probe: ntsc alias rate', [[[269050, 271051]], '30000/1001', '23.976'], [[336313, 338814]]), ('partial repair variant: ntsc alias rate', [[[3, 6]], '29.97', '24'], [[4, 7]]), ('boundary control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('normal control', [[[1, 4]], '15', '15'], [[1, 4]]), ('normal control', [[[1001, 1003]], '60', '15'], [[4004, 4012]]), ('normal control', [[[7, 9], [3, 6], [0, 3], [1, 4]], '24', '23.976'], [[7, 9], [3, 6], [0, 3], [1, 4]])], [('regression: ntsc alias rate', [[[704417, 706418], [7, 9]], '29.97', '24'], [[879642, 882140], [9, 11]]), ('regression variant: ntsc alias rate', [[[639258, 643831], [3, 4773], [741030, 741031]], '29.97', '50'], [[383172, 385913], [2, 2861], [444174, 444175]]), ('partial repair probe: ntsc alias rate', [[[999, 3000], [3, 1003], [999, 2960]], '23.976', '60'], [[399, 1199], [1, 401], [399, 1183]]), ('partial repair variant: ntsc alias rate', [[[999, 1999]], '23.976', '50'], [[479, 959]]), ('boundary control', [[[5, 6]], '24', '25'], [[5, 6]]), ('boundary control', [[[1001, 3003]], '24000/1001', '24'], [[1000, 3000]]), ('normal control', [[[1, 4]], '23.976', '15'], [[2, 6]]), ('normal control', [[[3, 1003], [999, 1000], [3, 5]], '50', '30'], [[5, 1672], [1665, 1667], [5, 8]]), ('normal control', [[[7, 2008], [1001, 3002]], '50', '12'], [[29, 8367], [4171, 12508]])], [('regression: ntsc alias rate', [[[256578, 256580], [1, 1001], [3, 6], [1, 1315]], '23.976', '15'], [[410115, 410118], [2, 1600], [5, 10], [2, 2102]]), ('regression variant: ntsc alias rate', [[[7, 8], [215573, 215574], [999, 3000]], '29.97', '30'], [[7, 8], [215358, 215359], [998, 2997]]), ('partial repair probe: ntsc alias rate', [[[999, 2714], [12345, 13345], [1, 2002]], '29.97', '30000/1001'], [[999, 2714], [12345, 13345], [1, 2002]]), ('partial repair variant: ntsc alias rate', [[[3, 509], [1, 4], [1, 2847]], '24000/1001', '29.97'], [[2, 407], [1, 3], [1, 2278]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('boundary control', [[[5, 6]], '24', '25'], [[5, 6]]), ('normal control', [[[999, 1001], [1001, 1003], [54677, 54680], [7, 2008]], '48', '25'], [[1918, 1922], [1922, 1926], [104980, 104986], [13, 3855]]), ('normal control', [[[1001, 1004], [7, 9], [999, 1001]], '30', '25'], [[1201, 1205], [8, 11], [1199, 1201]]), ('normal control', [[[821125, 821127], [0, 1]], '30', '30'], [[821125, 821127], [0, 1]])], [('regression: ntsc alias rate', [[[1, 2], [999, 1999], [166350, 167350], [1, 4224]], '50', '29.97'], [[2, 3], [1667, 3335], [277527, 279196], [2, 7047]]), ('regression variant: ntsc alias rate', [[[557345, 559346], [999, 1000]], '23.976', '30'], [[445431, 447030], [798, 799]]), ('partial repair probe: ntsc alias rate', [[[209282, 209284], [999, 1000], [1, 1001]], '12', '29.97'], [[83797, 83798], [400, 401], [0, 401]]), ('partial repair variant: ntsc alias rate', [[[3, 4], [1, 4181], [999, 1001]], '30', '23.976'], [[4, 5], [1, 5231], [1250, 1253]]), ('boundary control', [[[1000, 2000]], '25', '50'], [[500, 1000]]), ('boundary control', [[[1, 2], [3, 4]], '23.976', '25'], [[1, 2], [3, 4]]), ('normal control', [[[3, 2004], [3, 1003], [0, 3]], '30000/1001', '24000/1001'], [[4, 2505], [4, 1254], [0, 4]]), ('normal control', [[[1, 2], [7, 2008], [1001, 1002]], '50', '25'], [[2, 4], [14, 4016], [2002, 2004]]), ('normal control', [[[1, 4]], '24000/1001', '50'], [[0, 2]])]]
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 fixtureActualExpectedOutcome
regression: ntsc alias rate[[901285, 902954], [0, 5]][[901285, 902954], [0, 5]]Passed
regression variant: ntsc alias rate[[0, 1], [489212, 489215], [1000, 1001], [1, 1000]][[0, 1], [489212, 489215], [1000, 1001], [1, 1000]]Passed
partial repair probe: ntsc alias rate[[336313, 338814]][[336313, 338814]]Passed
partial repair variant: ntsc alias rate[[1667, 1672]][[1667, 1672]]Passed
boundary control[[500, 1000]][[500, 1000]]Passed
boundary control[[1, 2], [3, 4]][[1, 2], [3, 4]]Passed
normal control[[1000, 3000]][[1000, 3000]]Passed
normal control[[644050, 644054], [29628, 34430], [0, 101]][[644050, 644054], [29628, 34430], [0, 101]]Passed
normal control[[2, 8], [14, 18], [24665, 28663], [2000, 2002]][[2, 8], [14, 18], [24665, 28663], [2000, 2002]]Passed

SHA-256 / 21af3fa05d1ef5fd265be4a42d571d54bd2035864fe29608aa6b2ef905fb22e6

Verification & scope

A deterministic bounded teaching model with a stipulated toy contract; it does not claim conformance to any subtitle 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:30.594133+00:00.

Case digest / 6d310d72fc8a595c363bd2933215b8b9d31c26fd78fcd9e3bf8987dafba30619