{"abstract":"Cues after two or more cuts are shifted by only the most recent cut.","category":"Subtitle cue timing","checks":8,"contract":"Cuts [a,b) are removed from the programme (they may overlap or be unsorted and are merged first). A time after a cut shifts left by the removed length; a time inside a cut maps to the cut point. Cues [start,end,text] are mapped and dropped when the mapped end is not after the mapped start.","evaluation_group":"w2-subtitle-cue-timing-cut-list-conform","failed_approach":"Treating the cut end as inclusive under-shifts by one millisecond per cut.","family":"w2-subtitle-cue-timing-cut-list-conform-shift-accumulation","id":"FA-78321","implementations":{"attempt":{"sha256":"c80df9c61660e559cc7b2fafa1d9f7c107a705ce4f930efe695306bd11dcaed9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues, cuts):\n    merged=[]\n    for a,b in sorted(cuts):\n        if merged and a<=merged[-1][1]:\n            merged[-1][1]=max(merged[-1][1],b)\n        else:\n            merged.append([a,b])\n    def mapt(t):\n        shift=0\n        for a,b in merged:\n            if t>=b:\n                shift+=b-a-1\n            elif t>a:\n                return a-shift\n        return t-shift\n    out=[]\n    for s,e,txt in cues:\n        ns,ne=mapt(s),mapt(e)\n        if ne>ns:\n            out.append([ns,ne,txt])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: shift accumulation', [[[3000, 3500, 'a']], [[0, 500], [1000, 2000]]], [[1500, 2000, 'a']]), ('regression variant: shift accumulation', [[[4000, 4300, 'c0'], [1200, 3200, 'c1']], [[1500, 2000], [0, 100]]], [[3400, 3700, 'c0'], [1100, 2600, 'c1']]), ('partial repair probe: shift accumulation', [[[2000, 3000, 'x']], [[1000, 1500], [1200, 1800]]], [[1200, 2200, 'x']]), ('partial repair variant: shift accumulation', [[[3200, 5200, 'c0'], [200, 2200, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']], [[3000, 3100], [2000, 2100]]], [[3000, 5000, 'c0'], [200, 2100, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 1000, 'c0'], [200, 2200, 'c1'], [0, 100, 'c2'], [200, 300, 'c3']], [[2000, 2500]]], [[200, 1000, 'c0'], [200, 2000, 'c1'], [0, 100, 'c2'], [200, 300, 'c3']]), ('normal control', [[[200, 300, 'c0'], [1600, 3600, 'c1'], [1200, 1500, 'c2'], [600, 900, 'c3']], [[3000, 4500]]], [[200, 300, 'c0'], [1600, 3000, 'c1'], [1200, 1500, 'c2'], [600, 900, 'c3']]), ('normal control', [[[0, 2000, 'c0'], [0, 300, 'c1']], []], [[0, 2000, 'c0'], [0, 300, 'c1']])], [('regression: shift accumulation', [[[2500, 2800, 'c0']], [[500, 600], [1000, 2500], [2000, 2500]]], [[900, 1200, 'c0']]), ('regression variant: shift accumulation', [[[1600, 2400, 'c0'], [0, 2000, 'c1']], [[0, 100], [500, 1000]]], [[1000, 1800, 'c0'], [0, 1400, 'c1']]), ('partial repair probe: shift accumulation', [[[600, 2600, 'c0'], [2500, 3300, 'c1'], [0, 2000, 'c2']], [[1000, 1100]]], [[600, 2500, 'c0'], [2400, 3200, 'c1'], [0, 1900, 'c2']]), ('partial repair variant: shift accumulation', [[[900, 1700, 'c0'], [2500, 3300, 'c1'], [1200, 2000, 'c2']], [[1000, 2500]]], [[900, 1000, 'c0'], [1000, 1800, 'c1']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[2500, 2800, 'c0'], [600, 1400, 'c1']], []], [[2500, 2800, 'c0'], [600, 1400, 'c1']]), ('normal control', [[[3200, 3300, 'c0'], [200, 500, 'c1'], [900, 2900, 'c2']], []], [[3200, 3300, 'c0'], [200, 500, 'c1'], [900, 2900, 'c2']]), ('normal control', [[[1200, 2000, 'c0'], [3200, 3300, 'c1'], [900, 1000, 'c2'], [1200, 1300, 'c3']], []], [[1200, 2000, 'c0'], [3200, 3300, 'c1'], [900, 1000, 'c2'], [1200, 1300, 'c3']])], [('regression: shift accumulation', [[[3200, 5200, 'c0'], [200, 2200, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']], [[3000, 3100], [2000, 2100]]], [[3000, 5000, 'c0'], [200, 2100, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']]), ('regression variant: shift accumulation', [[[2500, 4500, 'c0'], [1200, 1300, 'c1']], [[2000, 2500], [3000, 4000]]], [[2000, 3000, 'c0'], [1200, 1300, 'c1']]), ('partial repair probe: shift accumulation', [[[2500, 2800, 'c0']], [[500, 600], [1000, 2500], [2000, 2500]]], [[900, 1200, 'c0']]), ('partial repair variant: shift accumulation', [[[900, 1200, 'c0'], [2500, 3300, 'c1']], [[2000, 2500]]], [[900, 1200, 'c0'], [2000, 2800, 'c1']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[900, 2900, 'c0'], [3200, 3500, 'c1'], [2500, 2800, 'c2']], [[1500, 3000], [3000, 4000]]], [[900, 1500, 'c0']]), ('normal control', [[[200, 1000, 'c0']], [[500, 1000], [0, 1000], [1000, 1500]]], []), ('normal control', [[[900, 1200, 'c0'], [900, 1700, 'c1']], []], [[900, 1200, 'c0'], [900, 1700, 'c1']])], [('regression: shift accumulation', [[[2500, 3300, 'c0'], [200, 500, 'c1']], [[1500, 1600], [0, 1000], [1500, 3000]]], [[500, 800, 'c0']]), ('regression variant: shift accumulation', [[[0, 300, 'c0'], [200, 1000, 'c1'], [2500, 3300, 'c2']], [[2000, 2100], [1500, 1600], [500, 1500]]], [[0, 300, 'c0'], [200, 500, 'c1'], [1300, 2100, 'c2']]), ('partial repair probe: shift accumulation', [[[3200, 5200, 'c0'], [1200, 1300, 'c1']], [[500, 2000], [2000, 2100], [1500, 1600]]], [[1600, 3600, 'c0']]), ('partial repair variant: shift accumulation', [[[1600, 1900, 'c0'], [2500, 3300, 'c1'], [1600, 1900, 'c2'], [4000, 6000, 'c3']], [[500, 2000], [0, 1000]]], [[500, 1300, 'c1'], [2000, 4000, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 2200, 'c0'], [2500, 2800, 'c1'], [1200, 1500, 'c2'], [2500, 3300, 'c3']], []], [[200, 2200, 'c0'], [2500, 2800, 'c1'], [1200, 1500, 'c2'], [2500, 3300, 'c3']]), ('normal control', [[[1600, 1700, 'c0'], [1600, 2400, 'c1'], [1600, 1700, 'c2']], [[1500, 2500]]], []), ('normal control', [[[900, 2900, 'c0'], [200, 500, 'c1'], [1200, 1300, 'c2'], [200, 500, 'c3']], []], [[900, 2900, 'c0'], [200, 500, 'c1'], [1200, 1300, 'c2'], [200, 500, 'c3']])], [('regression: shift accumulation', [[[900, 1000, 'c0'], [600, 2600, 'c1'], [4000, 4100, 'c2'], [900, 2900, 'c3']], [[1000, 1500], [2000, 2100], [2000, 2500]]], [[900, 1000, 'c0'], [600, 1600, 'c1'], [3000, 3100, 'c2'], [900, 1900, 'c3']]), ('regression variant: shift accumulation', [[[4000, 4300, 'c0'], [4000, 4100, 'c1'], [4000, 4300, 'c2']], [[2000, 3000], [1000, 1100]]], [[2900, 3200, 'c0'], [2900, 3000, 'c1'], [2900, 3200, 'c2']]), ('partial repair probe: shift accumulation', [[[2500, 4500, 'c0'], [4000, 6000, 'c1'], [900, 2900, 'c2'], [200, 2200, 'c3']], [[500, 600], [500, 1000]]], [[2000, 4000, 'c0'], [3500, 5500, 'c1'], [500, 2400, 'c2'], [200, 1700, 'c3']]), ('partial repair variant: shift accumulation', [[[600, 700, 'c0'], [3200, 3500, 'c1'], [600, 1400, 'c2'], [200, 2200, 'c3']], [[1500, 2500]]], [[600, 700, 'c0'], [2200, 2500, 'c1'], [600, 1400, 'c2'], [200, 1500, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 300, 'c0'], [3200, 3500, 'c1'], [2500, 2600, 'c2']], []], [[200, 300, 'c0'], [3200, 3500, 'c1'], [2500, 2600, 'c2']]), ('normal control', [[[4000, 4300, 'c0']], [[3000, 3500], [3000, 4500], [500, 2000]]], []), ('normal control', [[[1200, 1500, 'c0']], [[1000, 1500], [1500, 2000]]], [])]]\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":"8bab5c76360194d245bb275d934150a55a02ff10fbd862f462ddc3f4145e7626","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues, cuts):\n    merged=[]\n    for a,b in sorted(cuts):\n        if merged and a<=merged[-1][1]:\n            merged[-1][1]=max(merged[-1][1],b)\n        else:\n            merged.append([a,b])\n    def mapt(t):\n        shift=0\n        for a,b in merged:\n            if t>=b:\n                shift=b-a\n            elif t>a:\n                return a-shift\n        return t-shift\n    out=[]\n    for s,e,txt in cues:\n        ns,ne=mapt(s),mapt(e)\n        if ne>ns:\n            out.append([ns,ne,txt])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: shift accumulation', [[[3000, 3500, 'a']], [[0, 500], [1000, 2000]]], [[1500, 2000, 'a']]), ('regression variant: shift accumulation', [[[4000, 4300, 'c0'], [1200, 3200, 'c1']], [[1500, 2000], [0, 100]]], [[3400, 3700, 'c0'], [1100, 2600, 'c1']]), ('partial repair probe: shift accumulation', [[[2000, 3000, 'x']], [[1000, 1500], [1200, 1800]]], [[1200, 2200, 'x']]), ('partial repair variant: shift accumulation', [[[3200, 5200, 'c0'], [200, 2200, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']], [[3000, 3100], [2000, 2100]]], [[3000, 5000, 'c0'], [200, 2100, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 1000, 'c0'], [200, 2200, 'c1'], [0, 100, 'c2'], [200, 300, 'c3']], [[2000, 2500]]], [[200, 1000, 'c0'], [200, 2000, 'c1'], [0, 100, 'c2'], [200, 300, 'c3']]), ('normal control', [[[200, 300, 'c0'], [1600, 3600, 'c1'], [1200, 1500, 'c2'], [600, 900, 'c3']], [[3000, 4500]]], [[200, 300, 'c0'], [1600, 3000, 'c1'], [1200, 1500, 'c2'], [600, 900, 'c3']]), ('normal control', [[[0, 2000, 'c0'], [0, 300, 'c1']], []], [[0, 2000, 'c0'], [0, 300, 'c1']])], [('regression: shift accumulation', [[[2500, 2800, 'c0']], [[500, 600], [1000, 2500], [2000, 2500]]], [[900, 1200, 'c0']]), ('regression variant: shift accumulation', [[[1600, 2400, 'c0'], [0, 2000, 'c1']], [[0, 100], [500, 1000]]], [[1000, 1800, 'c0'], [0, 1400, 'c1']]), ('partial repair probe: shift accumulation', [[[600, 2600, 'c0'], [2500, 3300, 'c1'], [0, 2000, 'c2']], [[1000, 1100]]], [[600, 2500, 'c0'], [2400, 3200, 'c1'], [0, 1900, 'c2']]), ('partial repair variant: shift accumulation', [[[900, 1700, 'c0'], [2500, 3300, 'c1'], [1200, 2000, 'c2']], [[1000, 2500]]], [[900, 1000, 'c0'], [1000, 1800, 'c1']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[2500, 2800, 'c0'], [600, 1400, 'c1']], []], [[2500, 2800, 'c0'], [600, 1400, 'c1']]), ('normal control', [[[3200, 3300, 'c0'], [200, 500, 'c1'], [900, 2900, 'c2']], []], [[3200, 3300, 'c0'], [200, 500, 'c1'], [900, 2900, 'c2']]), ('normal control', [[[1200, 2000, 'c0'], [3200, 3300, 'c1'], [900, 1000, 'c2'], [1200, 1300, 'c3']], []], [[1200, 2000, 'c0'], [3200, 3300, 'c1'], [900, 1000, 'c2'], [1200, 1300, 'c3']])], [('regression: shift accumulation', [[[3200, 5200, 'c0'], [200, 2200, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']], [[3000, 3100], [2000, 2100]]], [[3000, 5000, 'c0'], [200, 2100, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']]), ('regression variant: shift accumulation', [[[2500, 4500, 'c0'], [1200, 1300, 'c1']], [[2000, 2500], [3000, 4000]]], [[2000, 3000, 'c0'], [1200, 1300, 'c1']]), ('partial repair probe: shift accumulation', [[[2500, 2800, 'c0']], [[500, 600], [1000, 2500], [2000, 2500]]], [[900, 1200, 'c0']]), ('partial repair variant: shift accumulation', [[[900, 1200, 'c0'], [2500, 3300, 'c1']], [[2000, 2500]]], [[900, 1200, 'c0'], [2000, 2800, 'c1']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[900, 2900, 'c0'], [3200, 3500, 'c1'], [2500, 2800, 'c2']], [[1500, 3000], [3000, 4000]]], [[900, 1500, 'c0']]), ('normal control', [[[200, 1000, 'c0']], [[500, 1000], [0, 1000], [1000, 1500]]], []), ('normal control', [[[900, 1200, 'c0'], [900, 1700, 'c1']], []], [[900, 1200, 'c0'], [900, 1700, 'c1']])], [('regression: shift accumulation', [[[2500, 3300, 'c0'], [200, 500, 'c1']], [[1500, 1600], [0, 1000], [1500, 3000]]], [[500, 800, 'c0']]), ('regression variant: shift accumulation', [[[0, 300, 'c0'], [200, 1000, 'c1'], [2500, 3300, 'c2']], [[2000, 2100], [1500, 1600], [500, 1500]]], [[0, 300, 'c0'], [200, 500, 'c1'], [1300, 2100, 'c2']]), ('partial repair probe: shift accumulation', [[[3200, 5200, 'c0'], [1200, 1300, 'c1']], [[500, 2000], [2000, 2100], [1500, 1600]]], [[1600, 3600, 'c0']]), ('partial repair variant: shift accumulation', [[[1600, 1900, 'c0'], [2500, 3300, 'c1'], [1600, 1900, 'c2'], [4000, 6000, 'c3']], [[500, 2000], [0, 1000]]], [[500, 1300, 'c1'], [2000, 4000, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 2200, 'c0'], [2500, 2800, 'c1'], [1200, 1500, 'c2'], [2500, 3300, 'c3']], []], [[200, 2200, 'c0'], [2500, 2800, 'c1'], [1200, 1500, 'c2'], [2500, 3300, 'c3']]), ('normal control', [[[1600, 1700, 'c0'], [1600, 2400, 'c1'], [1600, 1700, 'c2']], [[1500, 2500]]], []), ('normal control', [[[900, 2900, 'c0'], [200, 500, 'c1'], [1200, 1300, 'c2'], [200, 500, 'c3']], []], [[900, 2900, 'c0'], [200, 500, 'c1'], [1200, 1300, 'c2'], [200, 500, 'c3']])], [('regression: shift accumulation', [[[900, 1000, 'c0'], [600, 2600, 'c1'], [4000, 4100, 'c2'], [900, 2900, 'c3']], [[1000, 1500], [2000, 2100], [2000, 2500]]], [[900, 1000, 'c0'], [600, 1600, 'c1'], [3000, 3100, 'c2'], [900, 1900, 'c3']]), ('regression variant: shift accumulation', [[[4000, 4300, 'c0'], [4000, 4100, 'c1'], [4000, 4300, 'c2']], [[2000, 3000], [1000, 1100]]], [[2900, 3200, 'c0'], [2900, 3000, 'c1'], [2900, 3200, 'c2']]), ('partial repair probe: shift accumulation', [[[2500, 4500, 'c0'], [4000, 6000, 'c1'], [900, 2900, 'c2'], [200, 2200, 'c3']], [[500, 600], [500, 1000]]], [[2000, 4000, 'c0'], [3500, 5500, 'c1'], [500, 2400, 'c2'], [200, 1700, 'c3']]), ('partial repair variant: shift accumulation', [[[600, 700, 'c0'], [3200, 3500, 'c1'], [600, 1400, 'c2'], [200, 2200, 'c3']], [[1500, 2500]]], [[600, 700, 'c0'], [2200, 2500, 'c1'], [600, 1400, 'c2'], [200, 1500, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 300, 'c0'], [3200, 3500, 'c1'], [2500, 2600, 'c2']], []], [[200, 300, 'c0'], [3200, 3500, 'c1'], [2500, 2600, 'c2']]), ('normal control', [[[4000, 4300, 'c0']], [[3000, 3500], [3000, 4500], [500, 2000]]], []), ('normal control', [[[1200, 1500, 'c0']], [[1000, 1500], [1500, 2000]]], [])]]\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"},"fixed":{"sha256":"c1613182a670fab42e4f8ffb9d53f0fa76f6b289fed071705648dc99df77d330","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues, cuts):\n    merged=[]\n    for a,b in sorted(cuts):\n        if merged and a<=merged[-1][1]:\n            merged[-1][1]=max(merged[-1][1],b)\n        else:\n            merged.append([a,b])\n    def mapt(t):\n        shift=0\n        for a,b in merged:\n            if t>=b:\n                shift+=b-a\n            elif t>a:\n                return a-shift\n        return t-shift\n    out=[]\n    for s,e,txt in cues:\n        ns,ne=mapt(s),mapt(e)\n        if ne>ns:\n            out.append([ns,ne,txt])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: shift accumulation', [[[3000, 3500, 'a']], [[0, 500], [1000, 2000]]], [[1500, 2000, 'a']]), ('regression variant: shift accumulation', [[[4000, 4300, 'c0'], [1200, 3200, 'c1']], [[1500, 2000], [0, 100]]], [[3400, 3700, 'c0'], [1100, 2600, 'c1']]), ('partial repair probe: shift accumulation', [[[2000, 3000, 'x']], [[1000, 1500], [1200, 1800]]], [[1200, 2200, 'x']]), ('partial repair variant: shift accumulation', [[[3200, 5200, 'c0'], [200, 2200, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']], [[3000, 3100], [2000, 2100]]], [[3000, 5000, 'c0'], [200, 2100, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 1000, 'c0'], [200, 2200, 'c1'], [0, 100, 'c2'], [200, 300, 'c3']], [[2000, 2500]]], [[200, 1000, 'c0'], [200, 2000, 'c1'], [0, 100, 'c2'], [200, 300, 'c3']]), ('normal control', [[[200, 300, 'c0'], [1600, 3600, 'c1'], [1200, 1500, 'c2'], [600, 900, 'c3']], [[3000, 4500]]], [[200, 300, 'c0'], [1600, 3000, 'c1'], [1200, 1500, 'c2'], [600, 900, 'c3']]), ('normal control', [[[0, 2000, 'c0'], [0, 300, 'c1']], []], [[0, 2000, 'c0'], [0, 300, 'c1']])], [('regression: shift accumulation', [[[2500, 2800, 'c0']], [[500, 600], [1000, 2500], [2000, 2500]]], [[900, 1200, 'c0']]), ('regression variant: shift accumulation', [[[1600, 2400, 'c0'], [0, 2000, 'c1']], [[0, 100], [500, 1000]]], [[1000, 1800, 'c0'], [0, 1400, 'c1']]), ('partial repair probe: shift accumulation', [[[600, 2600, 'c0'], [2500, 3300, 'c1'], [0, 2000, 'c2']], [[1000, 1100]]], [[600, 2500, 'c0'], [2400, 3200, 'c1'], [0, 1900, 'c2']]), ('partial repair variant: shift accumulation', [[[900, 1700, 'c0'], [2500, 3300, 'c1'], [1200, 2000, 'c2']], [[1000, 2500]]], [[900, 1000, 'c0'], [1000, 1800, 'c1']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[2500, 2800, 'c0'], [600, 1400, 'c1']], []], [[2500, 2800, 'c0'], [600, 1400, 'c1']]), ('normal control', [[[3200, 3300, 'c0'], [200, 500, 'c1'], [900, 2900, 'c2']], []], [[3200, 3300, 'c0'], [200, 500, 'c1'], [900, 2900, 'c2']]), ('normal control', [[[1200, 2000, 'c0'], [3200, 3300, 'c1'], [900, 1000, 'c2'], [1200, 1300, 'c3']], []], [[1200, 2000, 'c0'], [3200, 3300, 'c1'], [900, 1000, 'c2'], [1200, 1300, 'c3']])], [('regression: shift accumulation', [[[3200, 5200, 'c0'], [200, 2200, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']], [[3000, 3100], [2000, 2100]]], [[3000, 5000, 'c0'], [200, 2100, 'c1'], [200, 500, 'c2'], [1200, 1300, 'c3']]), ('regression variant: shift accumulation', [[[2500, 4500, 'c0'], [1200, 1300, 'c1']], [[2000, 2500], [3000, 4000]]], [[2000, 3000, 'c0'], [1200, 1300, 'c1']]), ('partial repair probe: shift accumulation', [[[2500, 2800, 'c0']], [[500, 600], [1000, 2500], [2000, 2500]]], [[900, 1200, 'c0']]), ('partial repair variant: shift accumulation', [[[900, 1200, 'c0'], [2500, 3300, 'c1']], [[2000, 2500]]], [[900, 1200, 'c0'], [2000, 2800, 'c1']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[900, 2900, 'c0'], [3200, 3500, 'c1'], [2500, 2800, 'c2']], [[1500, 3000], [3000, 4000]]], [[900, 1500, 'c0']]), ('normal control', [[[200, 1000, 'c0']], [[500, 1000], [0, 1000], [1000, 1500]]], []), ('normal control', [[[900, 1200, 'c0'], [900, 1700, 'c1']], []], [[900, 1200, 'c0'], [900, 1700, 'c1']])], [('regression: shift accumulation', [[[2500, 3300, 'c0'], [200, 500, 'c1']], [[1500, 1600], [0, 1000], [1500, 3000]]], [[500, 800, 'c0']]), ('regression variant: shift accumulation', [[[0, 300, 'c0'], [200, 1000, 'c1'], [2500, 3300, 'c2']], [[2000, 2100], [1500, 1600], [500, 1500]]], [[0, 300, 'c0'], [200, 500, 'c1'], [1300, 2100, 'c2']]), ('partial repair probe: shift accumulation', [[[3200, 5200, 'c0'], [1200, 1300, 'c1']], [[500, 2000], [2000, 2100], [1500, 1600]]], [[1600, 3600, 'c0']]), ('partial repair variant: shift accumulation', [[[1600, 1900, 'c0'], [2500, 3300, 'c1'], [1600, 1900, 'c2'], [4000, 6000, 'c3']], [[500, 2000], [0, 1000]]], [[500, 1300, 'c1'], [2000, 4000, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 2200, 'c0'], [2500, 2800, 'c1'], [1200, 1500, 'c2'], [2500, 3300, 'c3']], []], [[200, 2200, 'c0'], [2500, 2800, 'c1'], [1200, 1500, 'c2'], [2500, 3300, 'c3']]), ('normal control', [[[1600, 1700, 'c0'], [1600, 2400, 'c1'], [1600, 1700, 'c2']], [[1500, 2500]]], []), ('normal control', [[[900, 2900, 'c0'], [200, 500, 'c1'], [1200, 1300, 'c2'], [200, 500, 'c3']], []], [[900, 2900, 'c0'], [200, 500, 'c1'], [1200, 1300, 'c2'], [200, 500, 'c3']])], [('regression: shift accumulation', [[[900, 1000, 'c0'], [600, 2600, 'c1'], [4000, 4100, 'c2'], [900, 2900, 'c3']], [[1000, 1500], [2000, 2100], [2000, 2500]]], [[900, 1000, 'c0'], [600, 1600, 'c1'], [3000, 3100, 'c2'], [900, 1900, 'c3']]), ('regression variant: shift accumulation', [[[4000, 4300, 'c0'], [4000, 4100, 'c1'], [4000, 4300, 'c2']], [[2000, 3000], [1000, 1100]]], [[2900, 3200, 'c0'], [2900, 3000, 'c1'], [2900, 3200, 'c2']]), ('partial repair probe: shift accumulation', [[[2500, 4500, 'c0'], [4000, 6000, 'c1'], [900, 2900, 'c2'], [200, 2200, 'c3']], [[500, 600], [500, 1000]]], [[2000, 4000, 'c0'], [3500, 5500, 'c1'], [500, 2400, 'c2'], [200, 1700, 'c3']]), ('partial repair variant: shift accumulation', [[[600, 700, 'c0'], [3200, 3500, 'c1'], [600, 1400, 'c2'], [200, 2200, 'c3']], [[1500, 2500]]], [[600, 700, 'c0'], [2200, 2500, 'c1'], [600, 1400, 'c2'], [200, 1500, 'c3']]), ('boundary control', [[[1100, 1400, 'a']], [[1000, 1500]]], []), ('normal control', [[[200, 300, 'c0'], [3200, 3500, 'c1'], [2500, 2600, 'c2']], []], [[200, 300, 'c0'], [3200, 3500, 'c1'], [2500, 2600, 'c2']]), ('normal control', [[[4000, 4300, 'c0']], [[3000, 3500], [3000, 4500], [500, 2000]]], []), ('normal control', [[[1200, 1500, 'c0']], [[1000, 1500], [1500, 2000]]], [])]]\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-cut-list-conform-shift-accumulation","generated_at":"2026-09-29T14:49:34.076459+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.","repair":"Accumulate every removed length before the time.","root_cause":"The removed length replaces instead of accumulating.","sha256":"0550fa983f2741352f163070fd2d8850fe506e2b81d335c8582ae21c828d90eb","title":"Subtitle conform to an edit cut list: shift accumulation · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.386,"exit_code":1,"observations":[{"actual":[[1502,2002,"a"]],"check":"regression: shift accumulation","expected":[[1500,2000,"a"]],"passed":false},{"actual":[[3402,3702,"c0"],[1101,2602,"c1"]],"check":"regression variant: shift accumulation","expected":[[3400,3700,"c0"],[1100,2600,"c1"]],"passed":false},{"actual":[[1201,2201,"x"]],"check":"partial repair probe: shift accumulation","expected":[[1200,2200,"x"]],"passed":false},{"actual":[[3002,5002,"c0"],[200,2101,"c1"],[200,500,"c2"],[1200,1300,"c3"]],"check":"partial repair variant: shift accumulation","expected":[[3000,5000,"c0"],[200,2100,"c1"],[200,500,"c2"],[1200,1300,"c3"]],"passed":false},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[[200,1000,"c0"],[200,2000,"c1"],[0,100,"c2"],[200,300,"c3"]],"check":"normal control","expected":[[200,1000,"c0"],[200,2000,"c1"],[0,100,"c2"],[200,300,"c3"]],"passed":true},{"actual":[[200,300,"c0"],[1600,3000,"c1"],[1200,1500,"c2"],[600,900,"c3"]],"check":"normal control","expected":[[200,300,"c0"],[1600,3000,"c1"],[1200,1500,"c2"],[600,900,"c3"]],"passed":true},{"actual":[[0,2000,"c0"],[0,300,"c1"]],"check":"normal control","expected":[[0,2000,"c0"],[0,300,"c1"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: shift accumulation\", \"actual\": [[1502, 2002, \"a\"]], \"expected\": [[1500, 2000, \"a\"]], \"passed\": false}, {\"check\": \"regression variant: shift accumulation\", \"actual\": [[3402, 3702, \"c0\"], [1101, 2602, \"c1\"]], \"expected\": [[3400, 3700, \"c0\"], [1100, 2600, \"c1\"]], \"passed\": false}, {\"check\": \"partial repair probe: shift accumulation\", \"actual\": [[1201, 2201, \"x\"]], \"expected\": [[1200, 2200, \"x\"]], \"passed\": false}, {\"check\": \"partial repair variant: shift accumulation\", \"actual\": [[3002, 5002, \"c0\"], [200, 2101, \"c1\"], [200, 500, \"c2\"], [1200, 1300, \"c3\"]], \"expected\": [[3000, 5000, \"c0\"], [200, 2100, \"c1\"], [200, 500, \"c2\"], [1200, 1300, \"c3\"]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 1000, \"c0\"], [200, 2000, \"c1\"], [0, 100, \"c2\"], [200, 300, \"c3\"]], \"expected\": [[200, 1000, \"c0\"], [200, 2000, \"c1\"], [0, 100, \"c2\"], [200, 300, \"c3\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 300, \"c0\"], [1600, 3000, \"c1\"], [1200, 1500, \"c2\"], [600, 900, \"c3\"]], \"expected\": [[200, 300, \"c0\"], [1600, 3000, \"c1\"], [1200, 1500, \"c2\"], [600, 900, \"c3\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 2000, \"c0\"], [0, 300, \"c1\"]], \"expected\": [[0, 2000, \"c0\"], [0, 300, \"c1\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.737,"exit_code":1,"observations":[{"actual":[[2000,2500,"a"]],"check":"regression: shift accumulation","expected":[[1500,2000,"a"]],"passed":false},{"actual":[[3500,3800,"c0"],[1100,2700,"c1"]],"check":"regression variant: shift accumulation","expected":[[3400,3700,"c0"],[1100,2600,"c1"]],"passed":false},{"actual":[[1200,2200,"x"]],"check":"partial repair probe: shift accumulation","expected":[[1200,2200,"x"]],"passed":true},{"actual":[[3100,5100,"c0"],[200,2100,"c1"],[200,500,"c2"],[1200,1300,"c3"]],"check":"partial repair variant: shift accumulation","expected":[[3000,5000,"c0"],[200,2100,"c1"],[200,500,"c2"],[1200,1300,"c3"]],"passed":false},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[[200,1000,"c0"],[200,2000,"c1"],[0,100,"c2"],[200,300,"c3"]],"check":"normal control","expected":[[200,1000,"c0"],[200,2000,"c1"],[0,100,"c2"],[200,300,"c3"]],"passed":true},{"actual":[[200,300,"c0"],[1600,3000,"c1"],[1200,1500,"c2"],[600,900,"c3"]],"check":"normal control","expected":[[200,300,"c0"],[1600,3000,"c1"],[1200,1500,"c2"],[600,900,"c3"]],"passed":true},{"actual":[[0,2000,"c0"],[0,300,"c1"]],"check":"normal control","expected":[[0,2000,"c0"],[0,300,"c1"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: shift accumulation\", \"actual\": [[2000, 2500, \"a\"]], \"expected\": [[1500, 2000, \"a\"]], \"passed\": false}, {\"check\": \"regression variant: shift accumulation\", \"actual\": [[3500, 3800, \"c0\"], [1100, 2700, \"c1\"]], \"expected\": [[3400, 3700, \"c0\"], [1100, 2600, \"c1\"]], \"passed\": false}, {\"check\": \"partial repair probe: shift accumulation\", \"actual\": [[1200, 2200, \"x\"]], \"expected\": [[1200, 2200, \"x\"]], \"passed\": true}, {\"check\": \"partial repair variant: shift accumulation\", \"actual\": [[3100, 5100, \"c0\"], [200, 2100, \"c1\"], [200, 500, \"c2\"], [1200, 1300, \"c3\"]], \"expected\": [[3000, 5000, \"c0\"], [200, 2100, \"c1\"], [200, 500, \"c2\"], [1200, 1300, \"c3\"]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 1000, \"c0\"], [200, 2000, \"c1\"], [0, 100, \"c2\"], [200, 300, \"c3\"]], \"expected\": [[200, 1000, \"c0\"], [200, 2000, \"c1\"], [0, 100, \"c2\"], [200, 300, \"c3\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 300, \"c0\"], [1600, 3000, \"c1\"], [1200, 1500, \"c2\"], [600, 900, \"c3\"]], \"expected\": [[200, 300, \"c0\"], [1600, 3000, \"c1\"], [1200, 1500, \"c2\"], [600, 900, \"c3\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 2000, \"c0\"], [0, 300, \"c1\"]], \"expected\": [[0, 2000, \"c0\"], [0, 300, \"c1\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.582,"exit_code":0,"observations":[{"actual":[[1500,2000,"a"]],"check":"regression: shift accumulation","expected":[[1500,2000,"a"]],"passed":true},{"actual":[[3400,3700,"c0"],[1100,2600,"c1"]],"check":"regression variant: shift accumulation","expected":[[3400,3700,"c0"],[1100,2600,"c1"]],"passed":true},{"actual":[[1200,2200,"x"]],"check":"partial repair probe: shift accumulation","expected":[[1200,2200,"x"]],"passed":true},{"actual":[[3000,5000,"c0"],[200,2100,"c1"],[200,500,"c2"],[1200,1300,"c3"]],"check":"partial repair variant: shift accumulation","expected":[[3000,5000,"c0"],[200,2100,"c1"],[200,500,"c2"],[1200,1300,"c3"]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[[200,1000,"c0"],[200,2000,"c1"],[0,100,"c2"],[200,300,"c3"]],"check":"normal control","expected":[[200,1000,"c0"],[200,2000,"c1"],[0,100,"c2"],[200,300,"c3"]],"passed":true},{"actual":[[200,300,"c0"],[1600,3000,"c1"],[1200,1500,"c2"],[600,900,"c3"]],"check":"normal control","expected":[[200,300,"c0"],[1600,3000,"c1"],[1200,1500,"c2"],[600,900,"c3"]],"passed":true},{"actual":[[0,2000,"c0"],[0,300,"c1"]],"check":"normal control","expected":[[0,2000,"c0"],[0,300,"c1"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: shift accumulation\", \"actual\": [[1500, 2000, \"a\"]], \"expected\": [[1500, 2000, \"a\"]], \"passed\": true}, {\"check\": \"regression variant: shift accumulation\", \"actual\": [[3400, 3700, \"c0\"], [1100, 2600, \"c1\"]], \"expected\": [[3400, 3700, \"c0\"], [1100, 2600, \"c1\"]], \"passed\": true}, {\"check\": \"partial repair probe: shift accumulation\", \"actual\": [[1200, 2200, \"x\"]], \"expected\": [[1200, 2200, \"x\"]], \"passed\": true}, {\"check\": \"partial repair variant: shift accumulation\", \"actual\": [[3000, 5000, \"c0\"], [200, 2100, \"c1\"], [200, 500, \"c2\"], [1200, 1300, \"c3\"]], \"expected\": [[3000, 5000, \"c0\"], [200, 2100, \"c1\"], [200, 500, \"c2\"], [1200, 1300, \"c3\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 1000, \"c0\"], [200, 2000, \"c1\"], [0, 100, \"c2\"], [200, 300, \"c3\"]], \"expected\": [[200, 1000, \"c0\"], [200, 2000, \"c1\"], [0, 100, \"c2\"], [200, 300, \"c3\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[200, 300, \"c0\"], [1600, 3000, \"c1\"], [1200, 1500, \"c2\"], [600, 900, \"c3\"]], \"expected\": [[200, 300, \"c0\"], [1600, 3000, \"c1\"], [1200, 1500, \"c2\"], [600, 900, \"c3\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 2000, \"c0\"], [0, 300, \"c1\"]], \"expected\": [[0, 2000, \"c0\"], [0, 300, \"c1\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}