{"abstract":"Short cues become much longer than the minimum duration.","category":"Subtitle cue timing","checks":9,"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":"Subtracting the gap from the target shortens every isolated extended cue below the minimum.","family":"w2-subtitle-cue-timing-min-duration-extension-base","id":"FA-77991","implementations":{"attempt":{"sha256":"0d5ba7b4e8b09cc1cb28801231619f4f2b92108a1b893a31bdc52ba8a686381e","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-min_gap\n        if pos+1<len(order):\n            target=min(target,out[order[pos+1]][0]-min_gap)\n        c[1]=max(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: extension base', [[[0, 300], [2000, 3000]], 1000, 80], [[0, 1000], [2000, 3000]]), ('regression variant: extension base', [[[200, 500], [500, 800], [1500, 3500], [1500, 2699], [2000, 2001]], 1200, 40], [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]]), ('partial repair probe: extension base', [[[1000, 2120], [200, 1400]], 1200, 80], [[1000, 2200], [200, 1400]]), ('partial repair variant: extension base', [[[0, 700], [1000, 1001], [2000, 2699]], 700, 80], [[0, 700], [1000, 1700], [2000, 2700]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[0, 1], [200, 900], [2000, 4000]], 700, 0], [[0, 200], [200, 900], [2000, 4000]]), ('normal control', [[[1000, 3000]], 1200, 0], [[1000, 3000]]), ('normal control', [[[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], 1000, 40], [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]])], [('regression: extension base', [[[500, 600], [0, 100]], 700, 40], [[500, 1200], [0, 460]]), ('regression variant: extension base', [[[0, 1001], [1500, 2500], [3000, 3999], [800, 2800], [0, 1]], 1000, 0], [[0, 1001], [1500, 2500], [3000, 4000], [800, 2800], [0, 800]]), ('partial repair probe: extension base', [[[2000, 2001], [800, 1100]], 1000, 80], [[2000, 3000], [800, 1800]]), ('partial repair variant: extension base', [[[200, 500], [496, 1497], [800, 1799], [3000, 3999]], 1000, 40], [[200, 500], [496, 1497], [800, 1800], [3000, 4000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('normal control', [[[2000, 4000], [1500, 1600], [1500, 2699]], 1200, 80], [[2000, 4000], [1500, 1600], [1500, 2699]]), ('normal control', [[[1500, 3500]], 700, 0], [[1500, 3500]]), ('normal control', [[[1500, 1600], [1500, 1600], [2000, 3200], [3000, 5000]], 1200, 0], [[1500, 1600], [1500, 2000], [2000, 3200], [3000, 5000]])], [('regression: extension base', [[[1000, 2120], [200, 1400]], 1200, 80], [[1000, 2200], [200, 1400]]), ('regression variant: extension base', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('partial repair probe: extension base', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('partial repair variant: extension base', [[[0, 1]], 1200, 40], [[0, 1200]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 1999], [1000, 3000]], 1000, 80], [[1000, 1999], [1000, 3000]]), ('normal control', [[[2000, 3000], [2000, 3000], [1000, 1100], [4355, 6355]], 1000, 0], [[2000, 3000], [2000, 3000], [1000, 2000], [4355, 6355]]), ('normal control', [[[500, 1500]], 1000, 0], [[500, 1500]])], [('regression: extension base', [[[2000, 2001], [800, 1100]], 1000, 80], [[2000, 3000], [800, 1800]]), ('regression variant: extension base', [[[0, 2000], [200, 500]], 700, 80], [[0, 2000], [200, 900]]), ('partial repair probe: extension base', [[[200, 500], [500, 800], [1500, 3500], [1500, 2699], [2000, 2001]], 1200, 40], [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]]), ('partial repair variant: extension base', [[[0, 2000], [200, 1160], [500, 1499], [1186, 1187], [2429, 3430]], 1000, 40], [[0, 2000], [200, 1160], [500, 1499], [1186, 2186], [2429, 3430]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('normal control', [[[200, 901], [1000, 1100], [1000, 1701], [1000, 1701]], 700, 40], [[200, 901], [1000, 1100], [1000, 1701], [1000, 1701]]), ('normal control', [[[0, 300], [1000, 3000]], 1200, 0], [[0, 1000], [1000, 3000]]), ('normal control', [[[200, 2200], [1000, 2199], [2000, 2300], [3000, 3300], [3000, 4200]], 1200, 40], [[200, 2200], [1000, 2199], [2000, 2960], [3000, 3300], [3000, 4200]])], [('regression: extension base', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('regression variant: extension base', [[[3000, 3700], [500, 501]], 700, 0], [[3000, 3700], [500, 1200]]), ('partial repair probe: extension base', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('partial repair variant: extension base', [[[800, 1999]], 1200, 40], [[800, 2000]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[200, 2200], [500, 1701], [500, 2500]], 1200, 80], [[200, 2200], [500, 1701], [500, 2500]]), ('normal control', [[[800, 2800], [1500, 2700], [3000, 4201]], 1200, 0], [[800, 2800], [1500, 2700], [3000, 4201]]), ('normal control', [[[500, 1700], [1422, 3422], [1500, 1800], [2000, 3160], [3000, 4200]], 1200, 40], [[500, 1700], [1422, 3422], [1500, 1960], [2000, 3160], [3000, 4200]])]]\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":"d315a07e3d4245b6e1e4a2665a91a60b1408ae54f50ad1bf701a3bab69503669","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[1]+min_dur\n        if pos+1<len(order):\n            target=min(target,out[order[pos+1]][0]-min_gap)\n        c[1]=max(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: extension base', [[[0, 300], [2000, 3000]], 1000, 80], [[0, 1000], [2000, 3000]]), ('regression variant: extension base', [[[200, 500], [500, 800], [1500, 3500], [1500, 2699], [2000, 2001]], 1200, 40], [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]]), ('partial repair probe: extension base', [[[1000, 2120], [200, 1400]], 1200, 80], [[1000, 2200], [200, 1400]]), ('partial repair variant: extension base', [[[0, 700], [1000, 1001], [2000, 2699]], 700, 80], [[0, 700], [1000, 1700], [2000, 2700]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[0, 1], [200, 900], [2000, 4000]], 700, 0], [[0, 200], [200, 900], [2000, 4000]]), ('normal control', [[[1000, 3000]], 1200, 0], [[1000, 3000]]), ('normal control', [[[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], 1000, 40], [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]])], [('regression: extension base', [[[500, 600], [0, 100]], 700, 40], [[500, 1200], [0, 460]]), ('regression variant: extension base', [[[0, 1001], [1500, 2500], [3000, 3999], [800, 2800], [0, 1]], 1000, 0], [[0, 1001], [1500, 2500], [3000, 4000], [800, 2800], [0, 800]]), ('partial repair probe: extension base', [[[2000, 2001], [800, 1100]], 1000, 80], [[2000, 3000], [800, 1800]]), ('partial repair variant: extension base', [[[200, 500], [496, 1497], [800, 1799], [3000, 3999]], 1000, 40], [[200, 500], [496, 1497], [800, 1800], [3000, 4000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('normal control', [[[2000, 4000], [1500, 1600], [1500, 2699]], 1200, 80], [[2000, 4000], [1500, 1600], [1500, 2699]]), ('normal control', [[[1500, 3500]], 700, 0], [[1500, 3500]]), ('normal control', [[[1500, 1600], [1500, 1600], [2000, 3200], [3000, 5000]], 1200, 0], [[1500, 1600], [1500, 2000], [2000, 3200], [3000, 5000]])], [('regression: extension base', [[[1000, 2120], [200, 1400]], 1200, 80], [[1000, 2200], [200, 1400]]), ('regression variant: extension base', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('partial repair probe: extension base', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('partial repair variant: extension base', [[[0, 1]], 1200, 40], [[0, 1200]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[1000, 1999], [1000, 3000]], 1000, 80], [[1000, 1999], [1000, 3000]]), ('normal control', [[[2000, 3000], [2000, 3000], [1000, 1100], [4355, 6355]], 1000, 0], [[2000, 3000], [2000, 3000], [1000, 2000], [4355, 6355]]), ('normal control', [[[500, 1500]], 1000, 0], [[500, 1500]])], [('regression: extension base', [[[2000, 2001], [800, 1100]], 1000, 80], [[2000, 3000], [800, 1800]]), ('regression variant: extension base', [[[0, 2000], [200, 500]], 700, 80], [[0, 2000], [200, 900]]), ('partial repair probe: extension base', [[[200, 500], [500, 800], [1500, 3500], [1500, 2699], [2000, 2001]], 1200, 40], [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]]), ('partial repair variant: extension base', [[[0, 2000], [200, 1160], [500, 1499], [1186, 1187], [2429, 3430]], 1000, 40], [[0, 2000], [200, 1160], [500, 1499], [1186, 2186], [2429, 3430]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('normal control', [[[200, 901], [1000, 1100], [1000, 1701], [1000, 1701]], 700, 40], [[200, 901], [1000, 1100], [1000, 1701], [1000, 1701]]), ('normal control', [[[0, 300], [1000, 3000]], 1200, 0], [[0, 1000], [1000, 3000]]), ('normal control', [[[200, 2200], [1000, 2199], [2000, 2300], [3000, 3300], [3000, 4200]], 1200, 40], [[200, 2200], [1000, 2199], [2000, 2960], [3000, 3300], [3000, 4200]])], [('regression: extension base', [[[1000, 1960], [2000, 2300], [3000, 3999], [3000, 3001]], 1000, 40], [[1000, 1960], [2000, 2960], [3000, 3999], [3000, 4000]]), ('regression variant: extension base', [[[3000, 3700], [500, 501]], 700, 0], [[3000, 3700], [500, 1200]]), ('partial repair probe: extension base', [[[479, 2479], [2000, 2300], [1000, 2120], [800, 2001]], 1200, 80], [[479, 2479], [2000, 3200], [1000, 2120], [800, 2001]]), ('partial repair variant: extension base', [[[800, 1999]], 1200, 40], [[800, 2000]]), ('boundary control', [[[0, 300], [500, 3000]], 1000, 80], [[0, 420], [500, 3000]]), ('boundary control', [[[0, 1000]], 1000, 0], [[0, 1000]]), ('normal control', [[[200, 2200], [500, 1701], [500, 2500]], 1200, 80], [[200, 2200], [500, 1701], [500, 2500]]), ('normal control', [[[800, 2800], [1500, 2700], [3000, 4201]], 1200, 0], [[800, 2800], [1500, 2700], [3000, 4201]]), ('normal control', [[[500, 1700], [1422, 3422], [1500, 1800], [2000, 3160], [3000, 4200]], 1200, 40], [[500, 1700], [1422, 3422], [1500, 1960], [2000, 3160], [3000, 4200]])]]\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-extension-base","generated_at":"2026-09-29T14:49:31.130612+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 extension target is measured from the current end rather than the start.","sha256":"7df94417a99d171a7bc9dc69ec941eb8100cd773ce33c7d91deaac20381692a2","title":"Minimum cue duration extension: extension base · 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":42.841,"exit_code":1,"observations":[{"actual":[[0,920],[2000,3000]],"check":"regression: extension base","expected":[[0,1000],[2000,3000]],"passed":false},{"actual":[[200,500],[500,1460],[1500,3500],[1500,2699],[2000,3160]],"check":"regression variant: extension base","expected":[[200,500],[500,1460],[1500,3500],[1500,2699],[2000,3200]],"passed":false},{"actual":[[1000,2120],[200,1400]],"check":"partial repair probe: extension base","expected":[[1000,2200],[200,1400]],"passed":false},{"actual":[[0,700],[1000,1620],[2000,2699]],"check":"partial repair variant: extension base","expected":[[0,700],[1000,1700],[2000,2700]],"passed":false},{"actual":[[0,420],[500,3000]],"check":"boundary control","expected":[[0,420],[500,3000]],"passed":true},{"actual":[[0,1000]],"check":"boundary control","expected":[[0,1000]],"passed":true},{"actual":[[0,200],[200,900],[2000,4000]],"check":"normal control","expected":[[0,200],[200,900],[2000,4000]],"passed":true},{"actual":[[1000,3000]],"check":"normal control","expected":[[1000,3000]],"passed":true},{"actual":[[500,800],[500,2500],[800,1799],[1000,1001],[1000,3000]],"check":"normal control","expected":[[500,800],[500,2500],[800,1799],[1000,1001],[1000,3000]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: extension base\", \"actual\": [[0, 920], [2000, 3000]], \"expected\": [[0, 1000], [2000, 3000]], \"passed\": false}, {\"check\": \"regression variant: extension base\", \"actual\": [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3160]], \"expected\": [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]], \"passed\": false}, {\"check\": \"partial repair probe: extension base\", \"actual\": [[1000, 2120], [200, 1400]], \"expected\": [[1000, 2200], [200, 1400]], \"passed\": false}, {\"check\": \"partial repair variant: extension base\", \"actual\": [[0, 700], [1000, 1620], [2000, 2699]], \"expected\": [[0, 700], [1000, 1700], [2000, 2700]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[0, 420], [500, 3000]], \"expected\": [[0, 420], [500, 3000]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[0, 1000]], \"expected\": [[0, 1000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 200], [200, 900], [2000, 4000]], \"expected\": [[0, 200], [200, 900], [2000, 4000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1000, 3000]], \"expected\": [[1000, 3000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], \"expected\": [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.91,"exit_code":1,"observations":[{"actual":[[0,1300],[2000,3000]],"check":"regression: extension base","expected":[[0,1000],[2000,3000]],"passed":false},{"actual":[[200,500],[500,1460],[1500,3500],[1500,2699],[2000,3201]],"check":"regression variant: extension base","expected":[[200,500],[500,1460],[1500,3500],[1500,2699],[2000,3200]],"passed":false},{"actual":[[1000,3320],[200,1400]],"check":"partial repair probe: extension base","expected":[[1000,2200],[200,1400]],"passed":false},{"actual":[[0,700],[1000,1701],[2000,3399]],"check":"partial repair variant: extension base","expected":[[0,700],[1000,1700],[2000,2700]],"passed":false},{"actual":[[0,420],[500,3000]],"check":"boundary control","expected":[[0,420],[500,3000]],"passed":true},{"actual":[[0,1000]],"check":"boundary control","expected":[[0,1000]],"passed":true},{"actual":[[0,200],[200,900],[2000,4000]],"check":"normal control","expected":[[0,200],[200,900],[2000,4000]],"passed":true},{"actual":[[1000,3000]],"check":"normal control","expected":[[1000,3000]],"passed":true},{"actual":[[500,800],[500,2500],[800,1799],[1000,1001],[1000,3000]],"check":"normal control","expected":[[500,800],[500,2500],[800,1799],[1000,1001],[1000,3000]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: extension base\", \"actual\": [[0, 1300], [2000, 3000]], \"expected\": [[0, 1000], [2000, 3000]], \"passed\": false}, {\"check\": \"regression variant: extension base\", \"actual\": [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3201]], \"expected\": [[200, 500], [500, 1460], [1500, 3500], [1500, 2699], [2000, 3200]], \"passed\": false}, {\"check\": \"partial repair probe: extension base\", \"actual\": [[1000, 3320], [200, 1400]], \"expected\": [[1000, 2200], [200, 1400]], \"passed\": false}, {\"check\": \"partial repair variant: extension base\", \"actual\": [[0, 700], [1000, 1701], [2000, 3399]], \"expected\": [[0, 700], [1000, 1700], [2000, 2700]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[0, 420], [500, 3000]], \"expected\": [[0, 420], [500, 3000]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[0, 1000]], \"expected\": [[0, 1000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 200], [200, 900], [2000, 4000]], \"expected\": [[0, 200], [200, 900], [2000, 4000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1000, 3000]], \"expected\": [[1000, 3000]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], \"expected\": [[500, 800], [500, 2500], [800, 1799], [1000, 1001], [1000, 3000]], \"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."}}