FAILURE MAP
← Case archive

FA-77976 / Subtitle cue timing / Open access

Minimum gap and chaining between cues: chain window · case 01

Gaps of exactly the chaining threshold are closed although the contract leaves them open.

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

ROOT CAUSE

The chaining window is inclusive of its upper threshold.

VERIFIED REPAIR

Chain only gaps strictly below the chain threshold.

Unsuccessful approach: Widening the window by min_gap chains even more gaps that should stay open.

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[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: chain window', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('regression variant: chain window', [[[0, 1000], [1750, 3750]], 83, 750], [[0, 1000], [1750, 3750]]), ('partial repair probe: chain window', [[[0, 1000], [1030, 2030], [2131, 4131], [4882, 5882]], 100, 750], [[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]), ('partial repair variant: chain window', [[[1000, 1400], [2151, 4151], [3951, 5951], [5751, 6751], [6870, 6970]], 120, 750], [[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('normal control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[0, 400], [1400, 2400]], 80, 750], [[0, 400], [1400, 2400]]), ('normal control', [[[1000, 1400], [1499, 1899], [2398, 2498], [2399, 2799], [2900, 3900]], 100, 500], [[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]])], [('regression: chain window', [[[0, 2000], [2830, 3830], [3911, 4911], [5741, 6141], [6891, 8891]], 80, 750], [[0, 2000], [2830, 3831], [3911, 4911], [5741, 6141], [6891, 8891]]), ('regression variant: chain window', [[[1000, 2000], [2300, 2700], [2819, 4819], [5120, 6120], [6120, 6220]], 120, 300], [[1000, 2000], [2300, 2699], [2819, 4819], [5120, 6000], [6120, 6220]]), ('partial repair probe: chain window', [[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]], 80, 300], [[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]), ('partial repair variant: chain window', [[[1000, 3000], [3005, 4005], [4105, 5105], [5606, 6006]], 100, 500], [[1000, 2905], [3005, 4005], [4105, 5105], [5606, 6006]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[0, 400], [479, 879]], 80, 750], [[0, 399], [479, 879]]), ('normal control', [[[0, 400], [1270, 1370], [2240, 2340]], 120, 750], [[0, 400], [1270, 1370], [2240, 2340]]), ('normal control', [[[0, 400], [983, 1083], [1165, 1265], [1166, 2166], [2250, 2350]], 83, 500], [[0, 400], [983, 1082], [1165, 1166], [1166, 2167], [2250, 2350]])], [('regression: chain window', [[[0, 1000], [1749, 1849], [2599, 4599], [4698, 5098], [5849, 6849]], 100, 750], [[0, 1649], [1749, 1849], [2599, 4598], [4698, 5098], [5849, 6849]]), ('regression variant: chain window', [[[1000, 3000], [3080, 5080], [5580, 7580], [7380, 7480], [7430, 8430]], 80, 500], [[1000, 3000], [3080, 5080], [5580, 7300], [7380, 7381], [7430, 8430]]), ('partial repair probe: chain window', [[[0, 1000], [1301, 1401]], 100, 300], [[0, 1000], [1301, 1401]]), ('partial repair variant: chain window', [[[1000, 1100], [1001, 1101], [1402, 3402], [3484, 3584], [3589, 5589]], 83, 300], [[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('normal control', [[[0, 2000], [1800, 2200]], 100, 300], [[0, 1700], [1800, 2200]]), ('normal control', [[[0, 1000], [2000, 2400], [2899, 2999]], 120, 500], [[0, 1000], [2000, 2779], [2899, 2999]]), ('normal control', [[[0, 2000], [2083, 4083], [4113, 4513], [4896, 4996], [5295, 6295]], 83, 300], [[0, 2000], [2083, 4030], [4113, 4513], [4896, 5212], [5295, 6295]])], [('regression: chain window', [[[0, 1000], [1300, 1700], [1801, 2201], [2231, 2631], [2730, 3130]], 100, 300], [[0, 1000], [1300, 1701], [1801, 2131], [2231, 2630], [2730, 3130]]), ('regression variant: chain window', [[[0, 1000], [1300, 1700], [1700, 2100], [2221, 2321], [2321, 2421]], 120, 300], [[0, 1000], [1300, 1580], [1700, 2101], [2221, 2222], [2321, 2421]]), ('partial repair probe: chain window', [[[1000, 1400], [2151, 4151]], 80, 750], [[1000, 1400], [2151, 4151]]), ('partial repair variant: chain window', [[[1000, 3000], [3000, 3100], [4100, 6100], [6050, 8050], [8801, 10801]], 80, 750], [[1000, 2920], [3000, 3100], [4100, 5970], [6050, 8050], [8801, 10801]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('normal control', [[[0, 100], [182, 582]], 83, 300], [[0, 99], [182, 582]]), ('normal control', [[[0, 100], [1100, 1500], [2080, 3080], [3579, 3679], [3629, 5629]], 80, 500], [[0, 100], [1100, 1500], [2080, 3499], [3579, 3580], [3629, 5629]]), ('normal control', [[[0, 1000], [1833, 2833]], 83, 750], [[0, 1000], [1833, 2833]])], [('regression: chain window', [[[0, 400], [521, 2521], [2822, 4822], [4622, 4722], [5022, 5122]], 120, 300], [[0, 401], [521, 2521], [2822, 4502], [4622, 4722], [5022, 5122]]), ('regression variant: chain window', [[[1000, 1400], [2151, 2251], [2281, 2681], [3431, 5431]], 80, 750], [[1000, 1400], [2151, 2201], [2281, 2681], [3431, 5431]]), ('partial repair probe: chain window', [[[1000, 3000], [3030, 5030], [5113, 6113], [6864, 6964], [6964, 8964]], 83, 750], [[1000, 2947], [3030, 5030], [5113, 6113], [6864, 6881], [6964, 8964]]), ('partial repair variant: chain window', [[[0, 1000], [1749, 1849], [2599, 4599], [4698, 5098], [5849, 6849]], 100, 750], [[0, 1649], [1749, 1849], [2599, 4598], [4698, 5098], [5849, 6849]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[1000, 1400], [1480, 1580], [1481, 1881]], 80, 500], [[1000, 1400], [1480, 1481], [1481, 1881]]), ('normal control', [[[0, 2000], [2000, 2100], [2130, 2530], [2560, 2660], [2610, 3010]], 120, 750], [[0, 1880], [2000, 2010], [2130, 2440], [2560, 2561], [2610, 3010]]), ('normal control', [[[1000, 1400], [1482, 1582]], 83, 300], [[1000, 1399], [1482, 1582]])]]
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: chain window[[0, 1400], [1500, 2000]][[0, 1000], [1500, 2000]]Failed
regression variant: chain window[[0, 1667], [1750, 3750]][[0, 1000], [1750, 3750]]Failed
partial repair probe: chain window[[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]][[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]Passed
partial repair variant: chain window[[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]][[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]]Passed
boundary control[[0, 950], [1050, 2000]][[0, 950], [1050, 2000]]Passed
boundary control[[0, 1300], [1400, 2000]][[0, 1300], [1400, 2000]]Passed
normal control[[0, 800], [900, 2000]][[0, 800], [900, 2000]]Passed
normal control[[0, 400], [1400, 2400]][[0, 400], [1400, 2400]]Passed
normal control[[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]][[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]]Passed

SHA-256 / 9d5c9b07b58d28df1ade5f6f22122a0b1ceb573cb81f1e69dab11bdd79d26b91

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=nxt_start-cur[1]
        if gap<min_gap:
            cur[1]=max(cur[0]+1,nxt_start-min_gap)
        elif gap<chain+min_gap:
            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: chain window', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('regression variant: chain window', [[[0, 1000], [1750, 3750]], 83, 750], [[0, 1000], [1750, 3750]]), ('partial repair probe: chain window', [[[0, 1000], [1030, 2030], [2131, 4131], [4882, 5882]], 100, 750], [[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]), ('partial repair variant: chain window', [[[1000, 1400], [2151, 4151], [3951, 5951], [5751, 6751], [6870, 6970]], 120, 750], [[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('normal control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[0, 400], [1400, 2400]], 80, 750], [[0, 400], [1400, 2400]]), ('normal control', [[[1000, 1400], [1499, 1899], [2398, 2498], [2399, 2799], [2900, 3900]], 100, 500], [[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]])], [('regression: chain window', [[[0, 2000], [2830, 3830], [3911, 4911], [5741, 6141], [6891, 8891]], 80, 750], [[0, 2000], [2830, 3831], [3911, 4911], [5741, 6141], [6891, 8891]]), ('regression variant: chain window', [[[1000, 2000], [2300, 2700], [2819, 4819], [5120, 6120], [6120, 6220]], 120, 300], [[1000, 2000], [2300, 2699], [2819, 4819], [5120, 6000], [6120, 6220]]), ('partial repair probe: chain window', [[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]], 80, 300], [[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]), ('partial repair variant: chain window', [[[1000, 3000], [3005, 4005], [4105, 5105], [5606, 6006]], 100, 500], [[1000, 2905], [3005, 4005], [4105, 5105], [5606, 6006]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[0, 400], [479, 879]], 80, 750], [[0, 399], [479, 879]]), ('normal control', [[[0, 400], [1270, 1370], [2240, 2340]], 120, 750], [[0, 400], [1270, 1370], [2240, 2340]]), ('normal control', [[[0, 400], [983, 1083], [1165, 1265], [1166, 2166], [2250, 2350]], 83, 500], [[0, 400], [983, 1082], [1165, 1166], [1166, 2167], [2250, 2350]])], [('regression: chain window', [[[0, 1000], [1749, 1849], [2599, 4599], [4698, 5098], [5849, 6849]], 100, 750], [[0, 1649], [1749, 1849], [2599, 4598], [4698, 5098], [5849, 6849]]), ('regression variant: chain window', [[[1000, 3000], [3080, 5080], [5580, 7580], [7380, 7480], [7430, 8430]], 80, 500], [[1000, 3000], [3080, 5080], [5580, 7300], [7380, 7381], [7430, 8430]]), ('partial repair probe: chain window', [[[0, 1000], [1301, 1401]], 100, 300], [[0, 1000], [1301, 1401]]), ('partial repair variant: chain window', [[[1000, 1100], [1001, 1101], [1402, 3402], [3484, 3584], [3589, 5589]], 83, 300], [[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('normal control', [[[0, 2000], [1800, 2200]], 100, 300], [[0, 1700], [1800, 2200]]), ('normal control', [[[0, 1000], [2000, 2400], [2899, 2999]], 120, 500], [[0, 1000], [2000, 2779], [2899, 2999]]), ('normal control', [[[0, 2000], [2083, 4083], [4113, 4513], [4896, 4996], [5295, 6295]], 83, 300], [[0, 2000], [2083, 4030], [4113, 4513], [4896, 5212], [5295, 6295]])], [('regression: chain window', [[[0, 1000], [1300, 1700], [1801, 2201], [2231, 2631], [2730, 3130]], 100, 300], [[0, 1000], [1300, 1701], [1801, 2131], [2231, 2630], [2730, 3130]]), ('regression variant: chain window', [[[0, 1000], [1300, 1700], [1700, 2100], [2221, 2321], [2321, 2421]], 120, 300], [[0, 1000], [1300, 1580], [1700, 2101], [2221, 2222], [2321, 2421]]), ('partial repair probe: chain window', [[[1000, 1400], [2151, 4151]], 80, 750], [[1000, 1400], [2151, 4151]]), ('partial repair variant: chain window', [[[1000, 3000], [3000, 3100], [4100, 6100], [6050, 8050], [8801, 10801]], 80, 750], [[1000, 2920], [3000, 3100], [4100, 5970], [6050, 8050], [8801, 10801]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('normal control', [[[0, 100], [182, 582]], 83, 300], [[0, 99], [182, 582]]), ('normal control', [[[0, 100], [1100, 1500], [2080, 3080], [3579, 3679], [3629, 5629]], 80, 500], [[0, 100], [1100, 1500], [2080, 3499], [3579, 3580], [3629, 5629]]), ('normal control', [[[0, 1000], [1833, 2833]], 83, 750], [[0, 1000], [1833, 2833]])], [('regression: chain window', [[[0, 400], [521, 2521], [2822, 4822], [4622, 4722], [5022, 5122]], 120, 300], [[0, 401], [521, 2521], [2822, 4502], [4622, 4722], [5022, 5122]]), ('regression variant: chain window', [[[1000, 1400], [2151, 2251], [2281, 2681], [3431, 5431]], 80, 750], [[1000, 1400], [2151, 2201], [2281, 2681], [3431, 5431]]), ('partial repair probe: chain window', [[[1000, 3000], [3030, 5030], [5113, 6113], [6864, 6964], [6964, 8964]], 83, 750], [[1000, 2947], [3030, 5030], [5113, 6113], [6864, 6881], [6964, 8964]]), ('partial repair variant: chain window', [[[0, 1000], [1749, 1849], [2599, 4599], [4698, 5098], [5849, 6849]], 100, 750], [[0, 1649], [1749, 1849], [2599, 4598], [4698, 5098], [5849, 6849]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[1000, 1400], [1480, 1580], [1481, 1881]], 80, 500], [[1000, 1400], [1480, 1481], [1481, 1881]]), ('normal control', [[[0, 2000], [2000, 2100], [2130, 2530], [2560, 2660], [2610, 3010]], 120, 750], [[0, 1880], [2000, 2010], [2130, 2440], [2560, 2561], [2610, 3010]]), ('normal control', [[[1000, 1400], [1482, 1582]], 83, 300], [[1000, 1399], [1482, 1582]])]]
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: chain window[[0, 1400], [1500, 2000]][[0, 1000], [1500, 2000]]Failed
regression variant: chain window[[0, 1667], [1750, 3750]][[0, 1000], [1750, 3750]]Failed
partial repair probe: chain window[[0, 930], [1030, 2031], [2131, 4782], [4882, 5882]][[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]Failed
partial repair variant: chain window[[1000, 2031], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]][[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]]Failed
boundary control[[0, 950], [1050, 2000]][[0, 950], [1050, 2000]]Passed
boundary control[[0, 1300], [1400, 2000]][[0, 1300], [1400, 2000]]Passed
normal control[[0, 800], [900, 2000]][[0, 800], [900, 2000]]Passed
normal control[[0, 400], [1400, 2400]][[0, 400], [1400, 2400]]Passed
normal control[[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]][[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]]Passed

SHA-256 / bf0ad951bf02ad7f5bf762352dc5b52178220d65f5de194ac7bf78c482f671e6

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: chain window', [[[0, 1000], [1500, 2000]], 100, 500], [[0, 1000], [1500, 2000]]), ('regression variant: chain window', [[[0, 1000], [1750, 3750]], 83, 750], [[0, 1000], [1750, 3750]]), ('partial repair probe: chain window', [[[0, 1000], [1030, 2030], [2131, 4131], [4882, 5882]], 100, 750], [[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]), ('partial repair variant: chain window', [[[1000, 1400], [2151, 4151], [3951, 5951], [5751, 6751], [6870, 6970]], 120, 750], [[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('normal control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[0, 400], [1400, 2400]], 80, 750], [[0, 400], [1400, 2400]]), ('normal control', [[[1000, 1400], [1499, 1899], [2398, 2498], [2399, 2799], [2900, 3900]], 100, 500], [[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]])], [('regression: chain window', [[[0, 2000], [2830, 3830], [3911, 4911], [5741, 6141], [6891, 8891]], 80, 750], [[0, 2000], [2830, 3831], [3911, 4911], [5741, 6141], [6891, 8891]]), ('regression variant: chain window', [[[1000, 2000], [2300, 2700], [2819, 4819], [5120, 6120], [6120, 6220]], 120, 300], [[1000, 2000], [2300, 2699], [2819, 4819], [5120, 6000], [6120, 6220]]), ('partial repair probe: chain window', [[[1000, 2000], [2005, 2405], [2486, 2886], [3266, 5266], [5567, 6567]], 80, 300], [[1000, 1925], [2005, 2406], [2486, 2886], [3266, 5266], [5567, 6567]]), ('partial repair variant: chain window', [[[1000, 3000], [3005, 4005], [4105, 5105], [5606, 6006]], 100, 500], [[1000, 2905], [3005, 4005], [4105, 5105], [5606, 6006]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[0, 400], [479, 879]], 80, 750], [[0, 399], [479, 879]]), ('normal control', [[[0, 400], [1270, 1370], [2240, 2340]], 120, 750], [[0, 400], [1270, 1370], [2240, 2340]]), ('normal control', [[[0, 400], [983, 1083], [1165, 1265], [1166, 2166], [2250, 2350]], 83, 500], [[0, 400], [983, 1082], [1165, 1166], [1166, 2167], [2250, 2350]])], [('regression: chain window', [[[0, 1000], [1749, 1849], [2599, 4599], [4698, 5098], [5849, 6849]], 100, 750], [[0, 1649], [1749, 1849], [2599, 4598], [4698, 5098], [5849, 6849]]), ('regression variant: chain window', [[[1000, 3000], [3080, 5080], [5580, 7580], [7380, 7480], [7430, 8430]], 80, 500], [[1000, 3000], [3080, 5080], [5580, 7300], [7380, 7381], [7430, 8430]]), ('partial repair probe: chain window', [[[0, 1000], [1301, 1401]], 100, 300], [[0, 1000], [1301, 1401]]), ('partial repair variant: chain window', [[[1000, 1100], [1001, 1101], [1402, 3402], [3484, 3584], [3589, 5589]], 83, 300], [[1000, 1001], [1001, 1101], [1402, 3401], [3484, 3506], [3589, 5589]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('normal control', [[[0, 2000], [1800, 2200]], 100, 300], [[0, 1700], [1800, 2200]]), ('normal control', [[[0, 1000], [2000, 2400], [2899, 2999]], 120, 500], [[0, 1000], [2000, 2779], [2899, 2999]]), ('normal control', [[[0, 2000], [2083, 4083], [4113, 4513], [4896, 4996], [5295, 6295]], 83, 300], [[0, 2000], [2083, 4030], [4113, 4513], [4896, 5212], [5295, 6295]])], [('regression: chain window', [[[0, 1000], [1300, 1700], [1801, 2201], [2231, 2631], [2730, 3130]], 100, 300], [[0, 1000], [1300, 1701], [1801, 2131], [2231, 2630], [2730, 3130]]), ('regression variant: chain window', [[[0, 1000], [1300, 1700], [1700, 2100], [2221, 2321], [2321, 2421]], 120, 300], [[0, 1000], [1300, 1580], [1700, 2101], [2221, 2222], [2321, 2421]]), ('partial repair probe: chain window', [[[1000, 1400], [2151, 4151]], 80, 750], [[1000, 1400], [2151, 4151]]), ('partial repair variant: chain window', [[[1000, 3000], [3000, 3100], [4100, 6100], [6050, 8050], [8801, 10801]], 80, 750], [[1000, 2920], [3000, 3100], [4100, 5970], [6050, 8050], [8801, 10801]]), ('boundary control', [[[0, 1000], [1050, 2000]], 100, 500], [[0, 950], [1050, 2000]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('normal control', [[[0, 100], [182, 582]], 83, 300], [[0, 99], [182, 582]]), ('normal control', [[[0, 100], [1100, 1500], [2080, 3080], [3579, 3679], [3629, 5629]], 80, 500], [[0, 100], [1100, 1500], [2080, 3499], [3579, 3580], [3629, 5629]]), ('normal control', [[[0, 1000], [1833, 2833]], 83, 750], [[0, 1000], [1833, 2833]])], [('regression: chain window', [[[0, 400], [521, 2521], [2822, 4822], [4622, 4722], [5022, 5122]], 120, 300], [[0, 401], [521, 2521], [2822, 4502], [4622, 4722], [5022, 5122]]), ('regression variant: chain window', [[[1000, 1400], [2151, 2251], [2281, 2681], [3431, 5431]], 80, 750], [[1000, 1400], [2151, 2201], [2281, 2681], [3431, 5431]]), ('partial repair probe: chain window', [[[1000, 3000], [3030, 5030], [5113, 6113], [6864, 6964], [6964, 8964]], 83, 750], [[1000, 2947], [3030, 5030], [5113, 6113], [6864, 6881], [6964, 8964]]), ('partial repair variant: chain window', [[[0, 1000], [1749, 1849], [2599, 4599], [4698, 5098], [5849, 6849]], 100, 750], [[0, 1649], [1749, 1849], [2599, 4598], [4698, 5098], [5849, 6849]]), ('boundary control', [[[0, 1000], [1400, 2000]], 100, 500], [[0, 1300], [1400, 2000]]), ('boundary control', [[[0, 1000], [900, 2000]], 100, 500], [[0, 800], [900, 2000]]), ('normal control', [[[1000, 1400], [1480, 1580], [1481, 1881]], 80, 500], [[1000, 1400], [1480, 1481], [1481, 1881]]), ('normal control', [[[0, 2000], [2000, 2100], [2130, 2530], [2560, 2660], [2610, 3010]], 120, 750], [[0, 1880], [2000, 2010], [2130, 2440], [2560, 2561], [2610, 3010]]), ('normal control', [[[1000, 1400], [1482, 1582]], 83, 300], [[1000, 1399], [1482, 1582]])]]
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: chain window[[0, 1000], [1500, 2000]][[0, 1000], [1500, 2000]]Passed
regression variant: chain window[[0, 1000], [1750, 3750]][[0, 1000], [1750, 3750]]Passed
partial repair probe: chain window[[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]][[0, 930], [1030, 2031], [2131, 4131], [4882, 5882]]Passed
partial repair variant: chain window[[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]][[1000, 1400], [2151, 3831], [3951, 5631], [5751, 6750], [6870, 6970]]Passed
boundary control[[0, 950], [1050, 2000]][[0, 950], [1050, 2000]]Passed
boundary control[[0, 1300], [1400, 2000]][[0, 1300], [1400, 2000]]Passed
normal control[[0, 800], [900, 2000]][[0, 800], [900, 2000]]Passed
normal control[[0, 400], [1400, 2400]][[0, 400], [1400, 2400]]Passed
normal control[[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]][[1000, 1399], [1499, 2298], [2398, 2399], [2399, 2800], [2900, 3900]]Passed

SHA-256 / dbaec91d5319424ea6dd7e00fc90ec4e6e4ff746bba6fb38394cb0ccb77e0acf

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

Case digest / 1ed0f59b7fd21afbd30a7472fbe78c19e23bc1798573744ebbf2449696056ef0