{"abstract":"Short cues crowded by a close neighbour get even shorter or inverted.","category":"Subtitle cue timing","checks":8,"contract":"Cues [start,end] may be unsorted; the neighbour of a cue is the next cue in (start, input index) order. A cue shorter than min_dur has its end extended to start+min_dur, limited to neighbour_start - min_gap; an end is never shortened. Output keeps input order.","contract_signature":"cues, min_dur, min_gap","evaluation_group":"w2-subtitle-cue-timing-min-duration","failed_approach":"Taking the minimum never extends anything and can shorten crowded cues.","family":"w2-subtitle-cue-timing-min-duration-never-shorten","id":"FA-78001","implementations":{"attempt":{"sha256":"02cb3365df00a736d7e7f5322b120096e395bce926f30986c55ba3075de2e83c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues, min_dur, min_gap):\n    out=[list(c) for c in cues]\n    order=sorted(range(len(out)),key=lambda k:(out[k][0],k))\n    for pos,i in enumerate(order):\n        c=out[i]\n        if c[1]-c[0]>=min_dur:\n            continue\n        target=c[0]+min_dur\n        if pos+1<len(order):\n            target=min(target,out[order[pos+1]][0]-min_gap)\n        c[1]=min(c[1],target)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: never shorten', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('regression variant: never shorten', [[[0, 2000], [200, 1160], [500, 1499], [1186, 1187], [2429, 3430]], 1000, 40], [[0, 2000], [200, 1160], [500, 1499], [1186, 2186], [2429, 3430]]), ('partial repair probe: never shorten', [[[500, 600], [0, 100]], 700, 40], [[500, 1200], [0, 460]]), ('partial repair variant: never shorten', [[[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], 1000, 40], [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 3000]], 1200, 0], [[1000, 3000]]), ('normal control', [[[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]], 1000, 0], [[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]]), ('normal control', [[[1500, 3500]], 700, 0], [[1500, 3500]])], [('regression: never shorten', [[[200, 500], [500, 800], [1500, 3500], [1500, 2699], [2000, 2001]], 1200, 40], [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]]), ('regression variant: never shorten', [[[2000, 4000], [1500, 1600], [1500, 2699]], 1200, 80], [[2000, 4000], [1500, 1600], [1500, 2699]]), ('partial repair probe: never shorten', [[[1000, 2120], [200, 1400]], 1200, 80], [[1000, 2200], [200, 1400]]), ('partial repair variant: never shorten', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 3000], [3000, 4200]], 1200, 80], [[1000, 3000], [3000, 4200]]), ('normal control', [[[800, 1800], [800, 1800]], 1000, 80], [[800, 1800], [800, 1800]]), ('normal control', [[[200, 2200], [500, 1500], [1000, 3000], [1500, 2500], [1500, 2501]], 1000, 0], [[200, 2200], [500, 1500], [1000, 3000], [1500, 2500], [1500, 2501]])], [('regression: never shorten', [[[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], 1000, 40], [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]]), ('regression variant: never shorten', [[[800, 1760], [800, 1800], [1000, 1100], [1000, 1999]], 1000, 40], [[800, 1760], [800, 1800], [1000, 1100], [1000, 2000]]), ('partial repair probe: never shorten', [[[0, 1], [200, 900], [2000, 4000]], 700, 0], [[0, 200], [200, 900], [2000, 4000]]), ('partial repair variant: never shorten', [[[0, 2000], [200, 500]], 700, 80], [[0, 2000], [200, 900]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 1701]], 700, 40], [[1000, 1701]]), ('normal control', [[[200, 1201], [0, 1001]], 1000, 0], [[200, 1201], [0, 1001]]), ('normal control', [[[4377, 5078]], 700, 40], [[4377, 5078]])], [('regression: never shorten', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('regression variant: never shorten', [[[500, 2500], [500, 1120], [1000, 1699], [2000, 2701], [2766, 3465]], 700, 80], [[500, 2500], [500, 1120], [1000, 1700], [2000, 2701], [2766, 3466]]), ('partial repair probe: never shorten', [[[2000, 2001], [800, 1100]], 1000, 80], [[2000, 3000], [800, 1800]]), ('partial repair variant: never shorten', [[[3000, 3700], [500, 501]], 700, 0], [[3000, 3700], [500, 1200]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[3000, 4200]], 1200, 0], [[3000, 4200]]), ('normal control', [[[800, 2800]], 1200, 0], [[800, 2800]]), ('normal control', [[[200, 1400]], 1200, 80], [[200, 1400]])], [('regression: never shorten', [[[200, 500], [496, 1497], [800, 1799], [3000, 3999]], 1000, 40], [[200, 500], [496, 1497], [800, 1800], [3000, 4000]]), ('regression variant: never shorten', [[[500, 501], [200, 1160], [0, 1], [500, 1460]], 1000, 40], [[500, 501], [200, 1160], [0, 160], [500, 1500]]), ('partial repair probe: never shorten', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('partial repair variant: never shorten', [[[2000, 2999], [500, 1501]], 1000, 80], [[2000, 3000], [500, 1501]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[200, 1400], [500, 1700]], 1200, 0], [[200, 1400], [500, 1700]]), ('normal control', [[[500, 1700]], 1200, 0], [[500, 1700]]), ('normal control', [[[1500, 2500]], 1000, 0], [[1500, 2500]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"d9682b3963281265488280b1174df6daa0181e3eb076e35ceb1fa458aa316980","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues, min_dur, min_gap):\n    out=[list(c) for c in cues]\n    order=sorted(range(len(out)),key=lambda k:(out[k][0],k))\n    for pos,i in enumerate(order):\n        c=out[i]\n        if c[1]-c[0]>=min_dur:\n            continue\n        target=c[0]+min_dur\n        if pos+1<len(order):\n            target=min(target,out[order[pos+1]][0]-min_gap)\n        c[1]=target\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: never shorten', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('regression variant: never shorten', [[[0, 2000], [200, 1160], [500, 1499], [1186, 1187], [2429, 3430]], 1000, 40], [[0, 2000], [200, 1160], [500, 1499], [1186, 2186], [2429, 3430]]), ('partial repair probe: never shorten', [[[500, 600], [0, 100]], 700, 40], [[500, 1200], [0, 460]]), ('partial repair variant: never shorten', [[[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], 1000, 40], [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 3000]], 1200, 0], [[1000, 3000]]), ('normal control', [[[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]], 1000, 0], [[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]]), ('normal control', [[[1500, 3500]], 700, 0], [[1500, 3500]])], [('regression: never shorten', [[[200, 500], [500, 800], [1500, 3500], [1500, 2699], [2000, 2001]], 1200, 40], [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]]), ('regression variant: never shorten', [[[2000, 4000], [1500, 1600], [1500, 2699]], 1200, 80], [[2000, 4000], [1500, 1600], [1500, 2699]]), ('partial repair probe: never shorten', [[[1000, 2120], [200, 1400]], 1200, 80], [[1000, 2200], [200, 1400]]), ('partial repair variant: never shorten', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 3000], [3000, 4200]], 1200, 80], [[1000, 3000], [3000, 4200]]), ('normal control', [[[800, 1800], [800, 1800]], 1000, 80], [[800, 1800], [800, 1800]]), ('normal control', [[[200, 2200], [500, 1500], [1000, 3000], [1500, 2500], [1500, 2501]], 1000, 0], [[200, 2200], [500, 1500], [1000, 3000], [1500, 2500], [1500, 2501]])], [('regression: never shorten', [[[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], 1000, 40], [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]]), ('regression variant: never shorten', [[[800, 1760], [800, 1800], [1000, 1100], [1000, 1999]], 1000, 40], [[800, 1760], [800, 1800], [1000, 1100], [1000, 2000]]), ('partial repair probe: never shorten', [[[0, 1], [200, 900], [2000, 4000]], 700, 0], [[0, 200], [200, 900], [2000, 4000]]), ('partial repair variant: never shorten', [[[0, 2000], [200, 500]], 700, 80], [[0, 2000], [200, 900]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 1701]], 700, 40], [[1000, 1701]]), ('normal control', [[[200, 1201], [0, 1001]], 1000, 0], [[200, 1201], [0, 1001]]), ('normal control', [[[4377, 5078]], 700, 40], [[4377, 5078]])], [('regression: never shorten', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('regression variant: never shorten', [[[500, 2500], [500, 1120], [1000, 1699], [2000, 2701], [2766, 3465]], 700, 80], [[500, 2500], [500, 1120], [1000, 1700], [2000, 2701], [2766, 3466]]), ('partial repair probe: never shorten', [[[2000, 2001], [800, 1100]], 1000, 80], [[2000, 3000], [800, 1800]]), ('partial repair variant: never shorten', [[[3000, 3700], [500, 501]], 700, 0], [[3000, 3700], [500, 1200]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[3000, 4200]], 1200, 0], [[3000, 4200]]), ('normal control', [[[800, 2800]], 1200, 0], [[800, 2800]]), ('normal control', [[[200, 1400]], 1200, 80], [[200, 1400]])], [('regression: never shorten', [[[200, 500], [496, 1497], [800, 1799], [3000, 3999]], 1000, 40], [[200, 500], [496, 1497], [800, 1800], [3000, 4000]]), ('regression variant: never shorten', [[[500, 501], [200, 1160], [0, 1], [500, 1460]], 1000, 40], [[500, 501], [200, 1160], [0, 160], [500, 1500]]), ('partial repair probe: never shorten', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('partial repair variant: never shorten', [[[2000, 2999], [500, 1501]], 1000, 80], [[2000, 3000], [500, 1501]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[200, 1400], [500, 1700]], 1200, 0], [[200, 1400], [500, 1700]]), ('normal control', [[[500, 1700]], 1200, 0], [[500, 1700]]), ('normal control', [[[1500, 2500]], 1000, 0], [[1500, 2500]])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-subtitle-cue-timing-min-duration-never-shorten","generated_at":"2026-09-29T14:49:31.297096+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Subtitle timing defects shift, hide or overlap captions that viewers depend on for comprehension and accessibility.","root_cause":"The neighbour-limited target is assigned even when it lies before the current end.","sha256":"786894d4552c6e9d9bb9656ebcdf968f291208f16c566d8aadee4ebddf568c10","title":"Minimum cue duration extension: never shorten · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":43.782,"exit_code":1,"observations":[{"actual":[[1000,1960],[2000,2300],[3000,2960],[3000,3001]],"check":"regression: never shorten","expected":[[1000,1960],[2000,2960],[3000,3999],[3000,4000]],"passed":false},{"actual":[[0,2000],[200,460],[500,1146],[1186,1187],[2429,3430]],"check":"regression variant: never shorten","expected":[[0,2000],[200,1160],[500,1499],[1186,2186],[2429,3430]],"passed":false},{"actual":[[500,600],[0,100]],"check":"partial repair probe: never shorten","expected":[[500,1200],[0,460]],"passed":false},{"actual":[[500,460],[500,2500],[800,960],[1000,960],[1000,3000]],"check":"partial repair variant: never shorten","expected":[[500,800],[500,2500],[800,1799],[1000,1001],[1000,3000]],"passed":false},{"actual":[[0,1000]],"check":"boundary control","expected":[[0,1000]],"passed":true},{"actual":[[1000,3000]],"check":"normal control","expected":[[1000,3000]],"passed":true},{"actual":[[200,1201],[2000,3001],[1000,2000],[800,1800]],"check":"normal control","expected":[[200,1201],[2000,3001],[1000,2000],[800,1800]],"passed":true},{"actual":[[1500,3500]],"check":"normal control","expected":[[1500,3500]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: never shorten\", \"actual\": [[1000, 1960], [2000, 2300], [3000, 2960], [3000, 3001]], \"expected\": [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]], \"passed\": false}, {\"check\": \"regression variant: never shorten\", \"actual\": [[0, 2000], [200, 460], [500, 1146], [1186, 1187], [2429, 3430]], \"expected\": [[0, 2000], [200, 1160], [500, 1499], [1186, 2186], [2429, 3430]], \"passed\": false}, {\"check\": \"partial repair probe: never shorten\", \"actual\": [[500, 600], [0, 100]], \"expected\": [[500, 1200], [0, 460]], \"passed\": false}, {\"check\": \"partial repair variant: never shorten\", \"actual\": [[500, 460], [500, 2500], [800, 960], [1000, 960], [1000, 3000]], \"expected\": [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[0, 1000]], \"expected\": [[0, 1000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1000, 3000]], \"expected\": [[1000, 3000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]], \"expected\": [[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1500, 3500]], \"expected\": [[1500, 3500]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.433,"exit_code":1,"observations":[{"actual":[[1000,1960],[2000,2960],[3000,2960],[3000,4000]],"check":"regression: never shorten","expected":[[1000,1960],[2000,2960],[3000,3999],[3000,4000]],"passed":false},{"actual":[[0,2000],[200,460],[500,1146],[1186,2186],[2429,3430]],"check":"regression variant: never shorten","expected":[[0,2000],[200,1160],[500,1499],[1186,2186],[2429,3430]],"passed":false},{"actual":[[500,1200],[0,460]],"check":"partial repair probe: never shorten","expected":[[500,1200],[0,460]],"passed":true},{"actual":[[500,460],[500,2500],[800,960],[1000,960],[1000,3000]],"check":"partial repair variant: never shorten","expected":[[500,800],[500,2500],[800,1799],[1000,1001],[1000,3000]],"passed":false},{"actual":[[0,1000]],"check":"boundary control","expected":[[0,1000]],"passed":true},{"actual":[[1000,3000]],"check":"normal control","expected":[[1000,3000]],"passed":true},{"actual":[[200,1201],[2000,3001],[1000,2000],[800,1800]],"check":"normal control","expected":[[200,1201],[2000,3001],[1000,2000],[800,1800]],"passed":true},{"actual":[[1500,3500]],"check":"normal control","expected":[[1500,3500]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: never shorten\", \"actual\": [[1000, 1960], [2000, 2960], [3000, 2960], [3000, 4000]], \"expected\": [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]], \"passed\": false}, {\"check\": \"regression variant: never shorten\", \"actual\": [[0, 2000], [200, 460], [500, 1146], [1186, 2186], [2429, 3430]], \"expected\": [[0, 2000], [200, 1160], [500, 1499], [1186, 2186], [2429, 3430]], \"passed\": false}, {\"check\": \"partial repair probe: never shorten\", \"actual\": [[500, 1200], [0, 460]], \"expected\": [[500, 1200], [0, 460]], \"passed\": true}, {\"check\": \"partial repair variant: never shorten\", \"actual\": [[500, 460], [500, 2500], [800, 960], [1000, 960], [1000, 3000]], \"expected\": [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[0, 1000]], \"expected\": [[0, 1000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1000, 3000]], \"expected\": [[1000, 3000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]], \"expected\": [[200, 1201], [2000, 3001], [1000, 2000], [800, 1800]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1500, 3500]], \"expected\": [[1500, 3500]], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}