FAILURE MAP
← Case archive

FA-78156 / Subtitle cue timing / Open access

Shot-change snapping of cue boundaries: end placement · case 01

Snapped cues remain on screen across the shot change.

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

ROOT CAUSE

The end is snapped onto the cut itself, ignoring the required gap.

VERIFIED REPAIR

Place the end gap ms before the cut.

Unsuccessful approach: Adding the gap puts the end after the cut.

Case contract

For each cue, the start snaps to the nearest shot change within window ms (|shot - start| <= window; ties go to the earlier shot). The end snaps so that it sits gap ms before the nearest shot change within window of end+gap. If snapping leaves end <= start, the original cue is kept unchanged.

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, shots, window, gap):
    def near(t):
        best=None
        for sc in shots:
            d=abs(sc-t)
            if d<=window and (best is None or d<abs(best-t)):
                best=sc
        return best
    out=[]
    for s0,e0 in cues:
        s,e=s0,e0
        a=near(s)
        if a is not None:
            s=a
        b=near(e+gap)
        if b is not None:
            e=b
        if e<=s:
            s,e=s0,e0
        out.append([s,e])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: end placement', [[[1251, 1261], [0, 851]], [0, 1000, 3040], 250, 80], [[1251, 1261], [0, 920]]), ('regression variant: end placement', [[[50, 950]], [0, 1200], 250, 42], [[0, 1158]]), ('partial repair probe: end placement', [[[50, 1150]], [0, 1200, 2000, 2150], 250, 80], [[0, 1120]]), ('partial repair variant: end placement', [[[2990, 3020], [3040, 4140], [3040, 4040]], [0, 2000, 3040], 100, 42], [[2990, 3020], [3040, 4140], [3040, 4040]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('normal control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[50, 80], [4050, 5050]], [0, 1100, 2150, 3000, 4000], 250, 0], [[50, 80], [4000, 5050]]), ('normal control', [[[2200, 2700]], [2150], 200, 80], [[2150, 2700]])], [('regression: end placement', [[[50, 1150]], [0, 1200, 2000, 2150], 250, 80], [[0, 1120]]), ('regression variant: end placement', [[[1301, 1331], [50, 1050]], [0, 1100], 200, 42], [[1301, 1331], [0, 1058]]), ('partial repair probe: end placement', [[[1801, 2841], [1000, 1010]], [1000, 1200, 2000, 2150], 200, 42], [[2000, 2841], [1000, 1010]]), ('partial repair variant: end placement', [[[1150, 2050], [849, 859], [1350, 2390]], [1100, 3000], 250, 80], [[1100, 2050], [849, 1020], [1100, 2390]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[750, 1650]], [1000, 1200, 2150, 3000], 250, 0], [[1000, 1650]]), ('normal control', [[[1100, 2100], [2990, 3000], [900, 1800]], [1100, 3040], 200, 0], [[1100, 2100], [2990, 3000], [1100, 1800]]), ('normal control', [[[1050, 2150]], [1000, 4000], 200, 80], [[1000, 2150]])], [('regression: end placement', [[[1751, 2651], [851, 1851]], [1100, 2000, 2150, 3040], 250, 80], [[2000, 2651], [1100, 1920]]), ('regression variant: end placement', [[[1150, 2050], [849, 859], [1350, 2390]], [1100, 3000], 250, 80], [[1100, 2050], [849, 1020], [1100, 2390]]), ('partial repair probe: end placement', [[[1000, 2000], [3901, 4401]], [1100, 2000, 2150, 4000], 100, 42], [[1100, 1958], [4000, 4401]]), ('partial repair variant: end placement', [[[3000, 3010], [2800, 3700], [2799, 3799]], [1200, 3000], 200, 42], [[3000, 3010], [3000, 3700], [2799, 3799]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('normal control', [[[2950, 2980]], [1200, 2150, 3000], 250, 0], [[2950, 2980]]), ('normal control', [[[1401, 2401]], [1000, 1200], 200, 42], [[1401, 2401]]), ('normal control', [[[1101, 1111], [950, 960], [950, 1850]], [1000, 4000], 100, 0], [[1101, 1111], [950, 960], [1000, 1850]])], [('regression: end placement', [[[1000, 2000], [3901, 4401]], [1100, 2000, 2150, 4000], 100, 42], [[1100, 1958], [4000, 4401]]), ('regression variant: end placement', [[[3141, 4041], [1200, 1230], [1900, 3000]], [1100, 2000, 3040, 4000], 100, 42], [[3141, 3958], [1100, 1230], [2000, 2998]]), ('partial repair probe: end placement', [[[3040, 3070], [2790, 3890], [849, 859]], [1100, 3040], 250, 80], [[3040, 3070], [3040, 3890], [849, 1020]]), ('partial repair variant: end placement', [[[3000, 3010], [2800, 3700], [2799, 3799]], [1200, 3000], 200, 42], [[3000, 3010], [3000, 3700], [2799, 3799]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('normal control', [[[101, 131], [1950, 2450], [2101, 3201]], [0, 2000, 4000], 100, 0], [[101, 131], [2000, 2450], [2101, 3201]]), ('normal control', [[[4201, 5101], [1150, 1650], [2200, 3240]], [1100, 2000, 4000], 200, 0], [[4201, 5101], [1100, 1650], [2000, 3240]]), ('normal control', [[[1950, 2990]], [2000], 250, 80], [[2000, 2990]])], [('regression: end placement', [[[3040, 3070], [2790, 3890], [849, 859]], [1100, 3040], 250, 80], [[3040, 3070], [3040, 3890], [849, 1020]]), ('regression variant: end placement', [[[1351, 2451], [1000, 1030], [1050, 1550]], [0, 1000, 1100], 250, 80], [[1351, 2451], [1000, 1020], [1000, 1550]]), ('partial repair probe: end placement', [[[3000, 3900], [900, 930], [3000, 3030]], [0, 1100, 1200, 3000], 200, 80], [[3000, 3900], [900, 930], [3000, 3030]]), ('partial repair variant: end placement', [[[3141, 4041], [1200, 1230], [1900, 3000]], [1100, 2000, 3040, 4000], 100, 42], [[3141, 3958], [1100, 1230], [2000, 2998]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[2050, 3050]], [0, 2000, 2150], 100, 42], [[2000, 3050]]), ('normal control', [[[2790, 3830], [2990, 3990], [2251, 2281]], [2000, 3040], 250, 42], [[3040, 3830], [3040, 3990], [2251, 2281]]), ('normal control', [[[1150, 2250], [1200, 1230], [3900, 5000]], [0, 1100, 4000], 100, 42], [[1100, 2250], [1100, 1230], [4000, 5000]])]]
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: end placement[[1251, 1261], [0, 1000]][[1251, 1261], [0, 920]]Failed
regression variant: end placement[[0, 1200]][[0, 1158]]Failed
partial repair probe: end placement[[0, 1200]][[0, 1120]]Failed
partial repair variant: end placement[[2990, 3020], [3040, 4140], [3040, 4040]][[2990, 3020], [3040, 4140], [3040, 4040]]Passed
boundary control[[1000, 1500]][[1000, 1500]]Passed
boundary control[[1200, 1800]][[1200, 1800]]Passed
normal control[[1000, 1010]][[1000, 1010]]Passed
normal control[[50, 80], [4000, 5050]][[50, 80], [4000, 5050]]Passed
normal control[[2150, 2700]][[2150, 2700]]Passed

SHA-256 / d63189e89e23e5245a0afbe6cb91a7d7198cfecf694f6945adbfd40bdaf61997

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(cues, shots, window, gap):
    def near(t):
        best=None
        for sc in shots:
            d=abs(sc-t)
            if d<=window and (best is None or d<abs(best-t)):
                best=sc
        return best
    out=[]
    for s0,e0 in cues:
        s,e=s0,e0
        a=near(s)
        if a is not None:
            s=a
        b=near(e+gap)
        if b is not None:
            e=b+gap
        if e<=s:
            s,e=s0,e0
        out.append([s,e])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: end placement', [[[1251, 1261], [0, 851]], [0, 1000, 3040], 250, 80], [[1251, 1261], [0, 920]]), ('regression variant: end placement', [[[50, 950]], [0, 1200], 250, 42], [[0, 1158]]), ('partial repair probe: end placement', [[[50, 1150]], [0, 1200, 2000, 2150], 250, 80], [[0, 1120]]), ('partial repair variant: end placement', [[[2990, 3020], [3040, 4140], [3040, 4040]], [0, 2000, 3040], 100, 42], [[2990, 3020], [3040, 4140], [3040, 4040]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('normal control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[50, 80], [4050, 5050]], [0, 1100, 2150, 3000, 4000], 250, 0], [[50, 80], [4000, 5050]]), ('normal control', [[[2200, 2700]], [2150], 200, 80], [[2150, 2700]])], [('regression: end placement', [[[50, 1150]], [0, 1200, 2000, 2150], 250, 80], [[0, 1120]]), ('regression variant: end placement', [[[1301, 1331], [50, 1050]], [0, 1100], 200, 42], [[1301, 1331], [0, 1058]]), ('partial repair probe: end placement', [[[1801, 2841], [1000, 1010]], [1000, 1200, 2000, 2150], 200, 42], [[2000, 2841], [1000, 1010]]), ('partial repair variant: end placement', [[[1150, 2050], [849, 859], [1350, 2390]], [1100, 3000], 250, 80], [[1100, 2050], [849, 1020], [1100, 2390]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[750, 1650]], [1000, 1200, 2150, 3000], 250, 0], [[1000, 1650]]), ('normal control', [[[1100, 2100], [2990, 3000], [900, 1800]], [1100, 3040], 200, 0], [[1100, 2100], [2990, 3000], [1100, 1800]]), ('normal control', [[[1050, 2150]], [1000, 4000], 200, 80], [[1000, 2150]])], [('regression: end placement', [[[1751, 2651], [851, 1851]], [1100, 2000, 2150, 3040], 250, 80], [[2000, 2651], [1100, 1920]]), ('regression variant: end placement', [[[1150, 2050], [849, 859], [1350, 2390]], [1100, 3000], 250, 80], [[1100, 2050], [849, 1020], [1100, 2390]]), ('partial repair probe: end placement', [[[1000, 2000], [3901, 4401]], [1100, 2000, 2150, 4000], 100, 42], [[1100, 1958], [4000, 4401]]), ('partial repair variant: end placement', [[[3000, 3010], [2800, 3700], [2799, 3799]], [1200, 3000], 200, 42], [[3000, 3010], [3000, 3700], [2799, 3799]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('normal control', [[[2950, 2980]], [1200, 2150, 3000], 250, 0], [[2950, 2980]]), ('normal control', [[[1401, 2401]], [1000, 1200], 200, 42], [[1401, 2401]]), ('normal control', [[[1101, 1111], [950, 960], [950, 1850]], [1000, 4000], 100, 0], [[1101, 1111], [950, 960], [1000, 1850]])], [('regression: end placement', [[[1000, 2000], [3901, 4401]], [1100, 2000, 2150, 4000], 100, 42], [[1100, 1958], [4000, 4401]]), ('regression variant: end placement', [[[3141, 4041], [1200, 1230], [1900, 3000]], [1100, 2000, 3040, 4000], 100, 42], [[3141, 3958], [1100, 1230], [2000, 2998]]), ('partial repair probe: end placement', [[[3040, 3070], [2790, 3890], [849, 859]], [1100, 3040], 250, 80], [[3040, 3070], [3040, 3890], [849, 1020]]), ('partial repair variant: end placement', [[[3000, 3010], [2800, 3700], [2799, 3799]], [1200, 3000], 200, 42], [[3000, 3010], [3000, 3700], [2799, 3799]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('normal control', [[[101, 131], [1950, 2450], [2101, 3201]], [0, 2000, 4000], 100, 0], [[101, 131], [2000, 2450], [2101, 3201]]), ('normal control', [[[4201, 5101], [1150, 1650], [2200, 3240]], [1100, 2000, 4000], 200, 0], [[4201, 5101], [1100, 1650], [2000, 3240]]), ('normal control', [[[1950, 2990]], [2000], 250, 80], [[2000, 2990]])], [('regression: end placement', [[[3040, 3070], [2790, 3890], [849, 859]], [1100, 3040], 250, 80], [[3040, 3070], [3040, 3890], [849, 1020]]), ('regression variant: end placement', [[[1351, 2451], [1000, 1030], [1050, 1550]], [0, 1000, 1100], 250, 80], [[1351, 2451], [1000, 1020], [1000, 1550]]), ('partial repair probe: end placement', [[[3000, 3900], [900, 930], [3000, 3030]], [0, 1100, 1200, 3000], 200, 80], [[3000, 3900], [900, 930], [3000, 3030]]), ('partial repair variant: end placement', [[[3141, 4041], [1200, 1230], [1900, 3000]], [1100, 2000, 3040, 4000], 100, 42], [[3141, 3958], [1100, 1230], [2000, 2998]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[2050, 3050]], [0, 2000, 2150], 100, 42], [[2000, 3050]]), ('normal control', [[[2790, 3830], [2990, 3990], [2251, 2281]], [2000, 3040], 250, 42], [[3040, 3830], [3040, 3990], [2251, 2281]]), ('normal control', [[[1150, 2250], [1200, 1230], [3900, 5000]], [0, 1100, 4000], 100, 42], [[1100, 2250], [1100, 1230], [4000, 5000]])]]
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: end placement[[1251, 1261], [0, 1080]][[1251, 1261], [0, 920]]Failed
regression variant: end placement[[0, 1242]][[0, 1158]]Failed
partial repair probe: end placement[[0, 1280]][[0, 1120]]Failed
partial repair variant: end placement[[3040, 3082], [3040, 4140], [3040, 4040]][[2990, 3020], [3040, 4140], [3040, 4040]]Failed
boundary control[[1000, 1500]][[1000, 1500]]Passed
boundary control[[1200, 1800]][[1200, 1800]]Passed
normal control[[1000, 1010]][[1000, 1010]]Passed
normal control[[50, 80], [4000, 5050]][[50, 80], [4000, 5050]]Passed
normal control[[2150, 2700]][[2150, 2700]]Passed

SHA-256 / eae198e95cac6cb2e5947617822e14fb95785195fb6d9b31ab21773c2a1e1aaa

3 / The verified repair

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

N = 1
observations = []
def solve(cues, shots, window, gap):
    def near(t):
        best=None
        for sc in shots:
            d=abs(sc-t)
            if d<=window and (best is None or d<abs(best-t)):
                best=sc
        return best
    out=[]
    for s0,e0 in cues:
        s,e=s0,e0
        a=near(s)
        if a is not None:
            s=a
        b=near(e+gap)
        if b is not None:
            e=b-gap
        if e<=s:
            s,e=s0,e0
        out.append([s,e])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: end placement', [[[1251, 1261], [0, 851]], [0, 1000, 3040], 250, 80], [[1251, 1261], [0, 920]]), ('regression variant: end placement', [[[50, 950]], [0, 1200], 250, 42], [[0, 1158]]), ('partial repair probe: end placement', [[[50, 1150]], [0, 1200, 2000, 2150], 250, 80], [[0, 1120]]), ('partial repair variant: end placement', [[[2990, 3020], [3040, 4140], [3040, 4040]], [0, 2000, 3040], 100, 42], [[2990, 3020], [3040, 4140], [3040, 4040]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('normal control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[50, 80], [4050, 5050]], [0, 1100, 2150, 3000, 4000], 250, 0], [[50, 80], [4000, 5050]]), ('normal control', [[[2200, 2700]], [2150], 200, 80], [[2150, 2700]])], [('regression: end placement', [[[50, 1150]], [0, 1200, 2000, 2150], 250, 80], [[0, 1120]]), ('regression variant: end placement', [[[1301, 1331], [50, 1050]], [0, 1100], 200, 42], [[1301, 1331], [0, 1058]]), ('partial repair probe: end placement', [[[1801, 2841], [1000, 1010]], [1000, 1200, 2000, 2150], 200, 42], [[2000, 2841], [1000, 1010]]), ('partial repair variant: end placement', [[[1150, 2050], [849, 859], [1350, 2390]], [1100, 3000], 250, 80], [[1100, 2050], [849, 1020], [1100, 2390]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[750, 1650]], [1000, 1200, 2150, 3000], 250, 0], [[1000, 1650]]), ('normal control', [[[1100, 2100], [2990, 3000], [900, 1800]], [1100, 3040], 200, 0], [[1100, 2100], [2990, 3000], [1100, 1800]]), ('normal control', [[[1050, 2150]], [1000, 4000], 200, 80], [[1000, 2150]])], [('regression: end placement', [[[1751, 2651], [851, 1851]], [1100, 2000, 2150, 3040], 250, 80], [[2000, 2651], [1100, 1920]]), ('regression variant: end placement', [[[1150, 2050], [849, 859], [1350, 2390]], [1100, 3000], 250, 80], [[1100, 2050], [849, 1020], [1100, 2390]]), ('partial repair probe: end placement', [[[1000, 2000], [3901, 4401]], [1100, 2000, 2150, 4000], 100, 42], [[1100, 1958], [4000, 4401]]), ('partial repair variant: end placement', [[[3000, 3010], [2800, 3700], [2799, 3799]], [1200, 3000], 200, 42], [[3000, 3010], [3000, 3700], [2799, 3799]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('normal control', [[[2950, 2980]], [1200, 2150, 3000], 250, 0], [[2950, 2980]]), ('normal control', [[[1401, 2401]], [1000, 1200], 200, 42], [[1401, 2401]]), ('normal control', [[[1101, 1111], [950, 960], [950, 1850]], [1000, 4000], 100, 0], [[1101, 1111], [950, 960], [1000, 1850]])], [('regression: end placement', [[[1000, 2000], [3901, 4401]], [1100, 2000, 2150, 4000], 100, 42], [[1100, 1958], [4000, 4401]]), ('regression variant: end placement', [[[3141, 4041], [1200, 1230], [1900, 3000]], [1100, 2000, 3040, 4000], 100, 42], [[3141, 3958], [1100, 1230], [2000, 2998]]), ('partial repair probe: end placement', [[[3040, 3070], [2790, 3890], [849, 859]], [1100, 3040], 250, 80], [[3040, 3070], [3040, 3890], [849, 1020]]), ('partial repair variant: end placement', [[[3000, 3010], [2800, 3700], [2799, 3799]], [1200, 3000], 200, 42], [[3000, 3010], [3000, 3700], [2799, 3799]]), ('boundary control', [[[900, 1500]], [1000], 100, 0], [[1000, 1500]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('normal control', [[[101, 131], [1950, 2450], [2101, 3201]], [0, 2000, 4000], 100, 0], [[101, 131], [2000, 2450], [2101, 3201]]), ('normal control', [[[4201, 5101], [1150, 1650], [2200, 3240]], [1100, 2000, 4000], 200, 0], [[4201, 5101], [1100, 1650], [2000, 3240]]), ('normal control', [[[1950, 2990]], [2000], 250, 80], [[2000, 2990]])], [('regression: end placement', [[[3040, 3070], [2790, 3890], [849, 859]], [1100, 3040], 250, 80], [[3040, 3070], [3040, 3890], [849, 1020]]), ('regression variant: end placement', [[[1351, 2451], [1000, 1030], [1050, 1550]], [0, 1000, 1100], 250, 80], [[1351, 2451], [1000, 1020], [1000, 1550]]), ('partial repair probe: end placement', [[[3000, 3900], [900, 930], [3000, 3030]], [0, 1100, 1200, 3000], 200, 80], [[3000, 3900], [900, 930], [3000, 3030]]), ('partial repair variant: end placement', [[[3141, 4041], [1200, 1230], [1900, 3000]], [1100, 2000, 3040, 4000], 100, 42], [[3141, 3958], [1100, 1230], [2000, 2998]]), ('boundary control', [[[1150, 1800]], [1000, 1200, 2000], 100, 80], [[1200, 1800]]), ('boundary control', [[[1000, 1010]], [1000, 1100], 100, 0], [[1000, 1010]]), ('normal control', [[[2050, 3050]], [0, 2000, 2150], 100, 42], [[2000, 3050]]), ('normal control', [[[2790, 3830], [2990, 3990], [2251, 2281]], [2000, 3040], 250, 42], [[3040, 3830], [3040, 3990], [2251, 2281]]), ('normal control', [[[1150, 2250], [1200, 1230], [3900, 5000]], [0, 1100, 4000], 100, 42], [[1100, 2250], [1100, 1230], [4000, 5000]])]]
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: end placement[[1251, 1261], [0, 920]][[1251, 1261], [0, 920]]Passed
regression variant: end placement[[0, 1158]][[0, 1158]]Passed
partial repair probe: end placement[[0, 1120]][[0, 1120]]Passed
partial repair variant: end placement[[2990, 3020], [3040, 4140], [3040, 4040]][[2990, 3020], [3040, 4140], [3040, 4040]]Passed
boundary control[[1000, 1500]][[1000, 1500]]Passed
boundary control[[1200, 1800]][[1200, 1800]]Passed
normal control[[1000, 1010]][[1000, 1010]]Passed
normal control[[50, 80], [4000, 5050]][[50, 80], [4000, 5050]]Passed
normal control[[2150, 2700]][[2150, 2700]]Passed

SHA-256 / 0331960ae85ca2a4abe2b3825502fc39644f499f486fb250e6b0eda0a575cabc

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

Case digest / d85dc7ebb02498e8052f66303ec2fb9bbb33c6f8e351cfed9930841ea53a13e0