FAILURE MAP
← Case archive

FA-77986 / Subtitle cue timing / Open access

Minimum gap and chaining between cues: gap measurement · case 01

Almost no cue is ever trimmed or chained because gaps look enormous.

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

ROOT CAUSE

The gap is measured from the current start rather than the current end.

VERIFIED REPAIR

Measure the gap from the current end to the next start.

Unsuccessful approach: Taking the absolute value turns overlaps into positive gaps that are chained or ignored.

Case contract

For sorted cues [start,end], compare each cue with the next start. If gap = next_start - end is below min_gap, the end is trimmed to next_start - min_gap but never below start+1. If min_gap <= gap < chain, the end is extended to next_start - min_gap. Larger gaps are untouched.

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

N = 1
observations = []
def solve(cues, min_gap, chain):
    out=[list(c) for c in cues]
    for i in range(len(out)-1):
        cur=out[i]
        nxt_start=out[i+1][0]
        gap=nxt_start-cur[0]
        if gap<min_gap:
            cur[1]=max(cur[0]+1,nxt_start-min_gap)
        elif gap<chain:
            cur[1]=nxt_start-min_gap
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: gap measurement', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('regression variant: gap measurement', [[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]], 80, 300], [[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 1101], [1402, 3402], [3484, 3584], [3589, 5589]], 83, 300], [[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]), ('partial repair variant: gap measurement', [[[1000, 1100], [1001, 1401]], 83, 300], [[1000, 1001], [1001, 1401]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 400], [1400, 2400]], 80, 750], [[0, 400], [1400, 2400]]), ('normal control', [[[0, 1000], [1301, 1401]], 100, 300], [[0, 1000], [1301, 1401]]), ('normal control', [[[0, 400], [479, 879]], 80, 750], [[0, 399], [479, 879]])], [('regression: gap measurement', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('regression variant: gap measurement', [[[1000, 1400], [1499, 1899], [2398, 2498], [2399, 2799], [2900, 3900]], 100, 500], [[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 1401], [1351, 1451], [1456, 3456], [4456, 5456]], 80, 300], [[1000, 1001], [1001, 1271], [1351, 1376], [1456, 3456], [4456, 5456]]), ('partial repair variant: gap measurement', [[[0, 100], [1100, 1200], [1101, 3101], [3131, 4131]], 83, 750], [[0, 100], [1100, 1101], [1101, 3048], [3131, 4131]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 100], [182, 582]], 83, 300], [[0, 99], [182, 582]]), ('normal control', [[[0, 1000], [1833, 2833]], 83, 750], [[0, 1000], [1833, 2833]]), ('normal control', [[[0, 400], [405, 505]], 100, 750], [[0, 305], [405, 505]])], [('regression: gap measurement', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('regression variant: gap measurement', [[[1000, 2000], [2030, 2430]], 83, 300], [[1000, 1947], [2030, 2430]]), ('partial repair probe: gap measurement', [[[1000, 1400], [1480, 1580], [1481, 1881]], 80, 500], [[1000, 1400], [1480, 1481], [1481, 1881]]), ('partial repair variant: gap measurement', [[[0, 100], [1, 2001], [2081, 2481], [2561, 4561]], 80, 750], [[0, 1], [1, 2001], [2081, 2481], [2561, 4561]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 1000], [1750, 3750]], 83, 750], [[0, 1000], [1750, 3750]]), ('normal control', [[[1000, 1100], [1183, 2183], [2266, 4266], [4349, 4749]], 83, 500], [[1000, 1100], [1183, 2183], [2266, 4266], [4349, 4749]]), ('normal control', [[[1000, 1400], [2151, 2251], [2281, 2681], [3431, 5431]], 80, 750], [[1000, 1400], [2151, 2201], [2281, 2681], [3431, 5431]])], [('regression: gap measurement', [[[0, 1000], [1030, 2030], [2131, 4131], [4882, 5882]], 100, 750], [[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]), ('regression variant: gap measurement', [[[0, 100], [199, 1199], [999, 1999], [2004, 3004]], 100, 750], [[0, 99], [199, 899], [999, 1904], [2004, 3004]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 2001]], 80, 750], [[1000, 1001], [1001, 2001]]), ('partial repair variant: gap measurement', [[[0, 1000], [1005, 1105], [1006, 1106], [1111, 3111], [3410, 3810]], 80, 300], [[0, 925], [1005, 1006], [1006, 1031], [1111, 3330], [3410, 3810]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 400], [500, 600], [501, 2501], [3351, 3751]], 100, 750], [[0, 400], [500, 501], [501, 2501], [3351, 3751]]), ('normal control', [[[1000, 1100], [1050, 3050]], 120, 300], [[1000, 1001], [1050, 3050]]), ('normal control', [[[1000, 1100], [1050, 1150], [1155, 1255], [1376, 1476]], 120, 750], [[1000, 1001], [1050, 1051], [1155, 1256], [1376, 1476]])], [('regression: gap measurement', [[[0, 1000], [1005, 1105]], 100, 750], [[0, 905], [1005, 1105]]), ('regression variant: gap measurement', [[[1000, 3000], [3030, 5030], [5113, 6113], [6864, 6964], [6964, 8964]], 83, 750], [[1000, 2947], [3030, 5030], [5113, 6113], [6864, 6881], [6964, 8964]]), ('partial repair probe: gap measurement', [[[0, 100], [1, 1001], [1001, 1101]], 83, 500], [[0, 1], [1, 918], [1001, 1101]]), ('partial repair variant: gap measurement', [[[1000, 2000], [2301, 4301], [4384, 4484], [4385, 6385], [6768, 6868]], 83, 300], [[1000, 2000], [2301, 4301], [4384, 4385], [4385, 6385], [6768, 6868]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[1000, 2000], [3000, 3400], [3350, 5350], [5851, 5951], [5956, 6956]], 80, 500], [[1000, 2000], [3000, 3270], [3350, 5350], [5851, 5876], [5956, 6956]]), ('normal control', [[[0, 400], [901, 1901]], 120, 500], [[0, 400], [901, 1901]]), ('normal control', [[[0, 400], [1270, 3270], [4270, 4370], [5370, 7370], [7490, 7590]], 120, 750], [[0, 400], [1270, 3270], [4270, 4370], [5370, 7370], [7490, 7590]])]]
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: gap measurement[[0, 1000], [1050, 2000]][[0, 950], [1050, 2000]]Failed
regression variant: gap measurement[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]][[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]Failed
partial repair probe: gap measurement[[1000, 1001], [1001, 1101], [1402, 3402], [3484, 3506], [3589, 5589]][[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]Failed
partial repair variant: gap measurement[[1000, 1001], [1001, 1401]][[1000, 1001], [1001, 1401]]Passed
boundary control[[0, 1000], [1500, 2000]][[0, 1000], [1500, 2000]]Passed
normal control[[0, 400], [1400, 2400]][[0, 400], [1400, 2400]]Passed
normal control[[0, 1000], [1301, 1401]][[0, 1000], [1301, 1401]]Passed
normal control[[0, 399], [479, 879]][[0, 399], [479, 879]]Passed

SHA-256 / 07b5c32387fcbb03d29ce07f500994693eb0c3d698290d337fbb695c2f6cd3c3

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(cues, min_gap, chain):
    out=[list(c) for c in cues]
    for i in range(len(out)-1):
        cur=out[i]
        nxt_start=out[i+1][0]
        gap=abs(nxt_start-cur[1])
        if gap<min_gap:
            cur[1]=max(cur[0]+1,nxt_start-min_gap)
        elif gap<chain:
            cur[1]=nxt_start-min_gap
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: gap measurement', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('regression variant: gap measurement', [[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]], 80, 300], [[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 1101], [1402, 3402], [3484, 3584], [3589, 5589]], 83, 300], [[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]), ('partial repair variant: gap measurement', [[[1000, 1100], [1001, 1401]], 83, 300], [[1000, 1001], [1001, 1401]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 400], [1400, 2400]], 80, 750], [[0, 400], [1400, 2400]]), ('normal control', [[[0, 1000], [1301, 1401]], 100, 300], [[0, 1000], [1301, 1401]]), ('normal control', [[[0, 400], [479, 879]], 80, 750], [[0, 399], [479, 879]])], [('regression: gap measurement', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('regression variant: gap measurement', [[[1000, 1400], [1499, 1899], [2398, 2498], [2399, 2799], [2900, 3900]], 100, 500], [[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 1401], [1351, 1451], [1456, 3456], [4456, 5456]], 80, 300], [[1000, 1001], [1001, 1271], [1351, 1376], [1456, 3456], [4456, 5456]]), ('partial repair variant: gap measurement', [[[0, 100], [1100, 1200], [1101, 3101], [3131, 4131]], 83, 750], [[0, 100], [1100, 1101], [1101, 3048], [3131, 4131]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 100], [182, 582]], 83, 300], [[0, 99], [182, 582]]), ('normal control', [[[0, 1000], [1833, 2833]], 83, 750], [[0, 1000], [1833, 2833]]), ('normal control', [[[0, 400], [405, 505]], 100, 750], [[0, 305], [405, 505]])], [('regression: gap measurement', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('regression variant: gap measurement', [[[1000, 2000], [2030, 2430]], 83, 300], [[1000, 1947], [2030, 2430]]), ('partial repair probe: gap measurement', [[[1000, 1400], [1480, 1580], [1481, 1881]], 80, 500], [[1000, 1400], [1480, 1481], [1481, 1881]]), ('partial repair variant: gap measurement', [[[0, 100], [1, 2001], [2081, 2481], [2561, 4561]], 80, 750], [[0, 1], [1, 2001], [2081, 2481], [2561, 4561]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 1000], [1750, 3750]], 83, 750], [[0, 1000], [1750, 3750]]), ('normal control', [[[1000, 1100], [1183, 2183], [2266, 4266], [4349, 4749]], 83, 500], [[1000, 1100], [1183, 2183], [2266, 4266], [4349, 4749]]), ('normal control', [[[1000, 1400], [2151, 2251], [2281, 2681], [3431, 5431]], 80, 750], [[1000, 1400], [2151, 2201], [2281, 2681], [3431, 5431]])], [('regression: gap measurement', [[[0, 1000], [1030, 2030], [2131, 4131], [4882, 5882]], 100, 750], [[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]), ('regression variant: gap measurement', [[[0, 100], [199, 1199], [999, 1999], [2004, 3004]], 100, 750], [[0, 99], [199, 899], [999, 1904], [2004, 3004]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 2001]], 80, 750], [[1000, 1001], [1001, 2001]]), ('partial repair variant: gap measurement', [[[0, 1000], [1005, 1105], [1006, 1106], [1111, 3111], [3410, 3810]], 80, 300], [[0, 925], [1005, 1006], [1006, 1031], [1111, 3330], [3410, 3810]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 400], [500, 600], [501, 2501], [3351, 3751]], 100, 750], [[0, 400], [500, 501], [501, 2501], [3351, 3751]]), ('normal control', [[[1000, 1100], [1050, 3050]], 120, 300], [[1000, 1001], [1050, 3050]]), ('normal control', [[[1000, 1100], [1050, 1150], [1155, 1255], [1376, 1476]], 120, 750], [[1000, 1001], [1050, 1051], [1155, 1256], [1376, 1476]])], [('regression: gap measurement', [[[0, 1000], [1005, 1105]], 100, 750], [[0, 905], [1005, 1105]]), ('regression variant: gap measurement', [[[1000, 3000], [3030, 5030], [5113, 6113], [6864, 6964], [6964, 8964]], 83, 750], [[1000, 2947], [3030, 5030], [5113, 6113], [6864, 6881], [6964, 8964]]), ('partial repair probe: gap measurement', [[[0, 100], [1, 1001], [1001, 1101]], 83, 500], [[0, 1], [1, 918], [1001, 1101]]), ('partial repair variant: gap measurement', [[[1000, 2000], [2301, 4301], [4384, 4484], [4385, 6385], [6768, 6868]], 83, 300], [[1000, 2000], [2301, 4301], [4384, 4385], [4385, 6385], [6768, 6868]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[1000, 2000], [3000, 3400], [3350, 5350], [5851, 5951], [5956, 6956]], 80, 500], [[1000, 2000], [3000, 3270], [3350, 5350], [5851, 5876], [5956, 6956]]), ('normal control', [[[0, 400], [901, 1901]], 120, 500], [[0, 400], [901, 1901]]), ('normal control', [[[0, 400], [1270, 3270], [4270, 4370], [5370, 7370], [7490, 7590]], 120, 750], [[0, 400], [1270, 3270], [4270, 4370], [5370, 7370], [7490, 7590]])]]
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: gap measurement[[0, 950], [1050, 2000]][[0, 950], [1050, 2000]]Passed
regression variant: gap measurement[[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]][[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]Passed
partial repair probe: gap measurement[[1000, 918], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]][[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]Failed
partial repair variant: gap measurement[[1000, 918], [1001, 1401]][[1000, 1001], [1001, 1401]]Failed
boundary control[[0, 1000], [1500, 2000]][[0, 1000], [1500, 2000]]Passed
normal control[[0, 400], [1400, 2400]][[0, 400], [1400, 2400]]Passed
normal control[[0, 1000], [1301, 1401]][[0, 1000], [1301, 1401]]Passed
normal control[[0, 399], [479, 879]][[0, 399], [479, 879]]Passed

SHA-256 / 2ffe47433e59a3dc0eef0d4db7ea07a40c8dd03349d42a46fc0d1029cf07a2d2

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(cues, min_gap, chain):
    out=[list(c) for c in cues]
    for i in range(len(out)-1):
        cur=out[i]
        nxt_start=out[i+1][0]
        gap=nxt_start-cur[1]
        if gap<min_gap:
            cur[1]=max(cur[0]+1,nxt_start-min_gap)
        elif gap<chain:
            cur[1]=nxt_start-min_gap
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: gap measurement', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('regression variant: gap measurement', [[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]], 80, 300], [[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 1101], [1402, 3402], [3484, 3584], [3589, 5589]], 83, 300], [[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]), ('partial repair variant: gap measurement', [[[1000, 1100], [1001, 1401]], 83, 300], [[1000, 1001], [1001, 1401]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 400], [1400, 2400]], 80, 750], [[0, 400], [1400, 2400]]), ('normal control', [[[0, 1000], [1301, 1401]], 100, 300], [[0, 1000], [1301, 1401]]), ('normal control', [[[0, 400], [479, 879]], 80, 750], [[0, 399], [479, 879]])], [('regression: gap measurement', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('regression variant: gap measurement', [[[1000, 1400], [1499, 1899], [2398, 2498], [2399, 2799], [2900, 3900]], 100, 500], [[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 1401], [1351, 1451], [1456, 3456], [4456, 5456]], 80, 300], [[1000, 1001], [1001, 1271], [1351, 1376], [1456, 3456], [4456, 5456]]), ('partial repair variant: gap measurement', [[[0, 100], [1100, 1200], [1101, 3101], [3131, 4131]], 83, 750], [[0, 100], [1100, 1101], [1101, 3048], [3131, 4131]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 100], [182, 582]], 83, 300], [[0, 99], [182, 582]]), ('normal control', [[[0, 1000], [1833, 2833]], 83, 750], [[0, 1000], [1833, 2833]]), ('normal control', [[[0, 400], [405, 505]], 100, 750], [[0, 305], [405, 505]])], [('regression: gap measurement', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('regression variant: gap measurement', [[[1000, 2000], [2030, 2430]], 83, 300], [[1000, 1947], [2030, 2430]]), ('partial repair probe: gap measurement', [[[1000, 1400], [1480, 1580], [1481, 1881]], 80, 500], [[1000, 1400], [1480, 1481], [1481, 1881]]), ('partial repair variant: gap measurement', [[[0, 100], [1, 2001], [2081, 2481], [2561, 4561]], 80, 750], [[0, 1], [1, 2001], [2081, 2481], [2561, 4561]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 1000], [1750, 3750]], 83, 750], [[0, 1000], [1750, 3750]]), ('normal control', [[[1000, 1100], [1183, 2183], [2266, 4266], [4349, 4749]], 83, 500], [[1000, 1100], [1183, 2183], [2266, 4266], [4349, 4749]]), ('normal control', [[[1000, 1400], [2151, 2251], [2281, 2681], [3431, 5431]], 80, 750], [[1000, 1400], [2151, 2201], [2281, 2681], [3431, 5431]])], [('regression: gap measurement', [[[0, 1000], [1030, 2030], [2131, 4131], [4882, 5882]], 100, 750], [[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]), ('regression variant: gap measurement', [[[0, 100], [199, 1199], [999, 1999], [2004, 3004]], 100, 750], [[0, 99], [199, 899], [999, 1904], [2004, 3004]]), ('partial repair probe: gap measurement', [[[1000, 1100], [1001, 2001]], 80, 750], [[1000, 1001], [1001, 2001]]), ('partial repair variant: gap measurement', [[[0, 1000], [1005, 1105], [1006, 1106], [1111, 3111], [3410, 3810]], 80, 300], [[0, 925], [1005, 1006], [1006, 1031], [1111, 3330], [3410, 3810]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[0, 400], [500, 600], [501, 2501], [3351, 3751]], 100, 750], [[0, 400], [500, 501], [501, 2501], [3351, 3751]]), ('normal control', [[[1000, 1100], [1050, 3050]], 120, 300], [[1000, 1001], [1050, 3050]]), ('normal control', [[[1000, 1100], [1050, 1150], [1155, 1255], [1376, 1476]], 120, 750], [[1000, 1001], [1050, 1051], [1155, 1256], [1376, 1476]])], [('regression: gap measurement', [[[0, 1000], [1005, 1105]], 100, 750], [[0, 905], [1005, 1105]]), ('regression variant: gap measurement', [[[1000, 3000], [3030, 5030], [5113, 6113], [6864, 6964], [6964, 8964]], 83, 750], [[1000, 2947], [3030, 5030], [5113, 6113], [6864, 6881], [6964, 8964]]), ('partial repair probe: gap measurement', [[[0, 100], [1, 1001], [1001, 1101]], 83, 500], [[0, 1], [1, 918], [1001, 1101]]), ('partial repair variant: gap measurement', [[[1000, 2000], [2301, 4301], [4384, 4484], [4385, 6385], [6768, 6868]], 83, 300], [[1000, 2000], [2301, 4301], [4384, 4385], [4385, 6385], [6768, 6868]]), ('boundary control', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('normal control', [[[1000, 2000], [3000, 3400], [3350, 5350], [5851, 5951], [5956, 6956]], 80, 500], [[1000, 2000], [3000, 3270], [3350, 5350], [5851, 5876], [5956, 6956]]), ('normal control', [[[0, 400], [901, 1901]], 120, 500], [[0, 400], [901, 1901]]), ('normal control', [[[0, 400], [1270, 3270], [4270, 4370], [5370, 7370], [7490, 7590]], 120, 750], [[0, 400], [1270, 3270], [4270, 4370], [5370, 7370], [7490, 7590]])]]
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: gap measurement[[0, 950], [1050, 2000]][[0, 950], [1050, 2000]]Passed
regression variant: gap measurement[[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]][[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]Passed
partial repair probe: gap measurement[[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]][[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]Passed
partial repair variant: gap measurement[[1000, 1001], [1001, 1401]][[1000, 1001], [1001, 1401]]Passed
boundary control[[0, 1000], [1500, 2000]][[0, 1000], [1500, 2000]]Passed
normal control[[0, 400], [1400, 2400]][[0, 400], [1400, 2400]]Passed
normal control[[0, 1000], [1301, 1401]][[0, 1000], [1301, 1401]]Passed
normal control[[0, 399], [479, 879]][[0, 399], [479, 879]]Passed

SHA-256 / 1a12f1ba5f349f2a4e76ac8b92a137c72eaaec0c3a38baac5a5cb98075a4edc2

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:31.081583+00:00.

Case digest / 761a10e01f655f7d550121d50d930f9d057702efcf8e3373120af51c38362cc9