{"abstract":"Captions stay on screen after an erase-displayed-memory command.","category":"Subtitle cue timing","checks":9,"contract":"Commands [frame,cmd] at integer fps (time = frame*1000//fps). TEXT:x appends x to the non-displayed memory; ENM erases non-displayed memory; EOC swaps displayed and non-displayed memories; EDM erases displayed memory. Whenever non-empty displayed text is replaced (EOC) or erased (EDM), emit [shown_since_ms, now_ms, text].","evaluation_group":"w2-subtitle-cue-timing-pop-on-caption-buffers","failed_approach":"Resetting the timestamp without clearing the display emits the same caption again later.","family":"w2-subtitle-cue-timing-pop-on-caption-buffers-display-erase-target","id":"FA-78246","implementations":{"attempt":{"sha256":"c8ece343b4d586875e9902ad440f7abaf3c21f3157315aa544e9f19547126631","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, fps):\n    shown=''\n    hidden=''\n    since=None\n    out=[]\n    for frame,cmd in events:\n        t=frame*1000//fps\n        if cmd.startswith('TEXT:'):\n            hidden+=cmd[5:]\n        elif cmd=='ENM':\n            hidden=''\n        elif cmd=='EOC':\n            if shown:\n                out.append([since,t,shown])\n            shown,hidden=hidden,shown\n            since=t\n        elif cmd=='EDM':\n            if shown: out.append([since,t,shown])\n            since=t\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: display erase target', [[[30, 'TEXT:Bye'], [37, 'EOC'], [52, 'EDM'], [52, 'ENM'], [67, 'EDM']], 30], [[1233, 1733, 'Bye']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [75, 'TEXT:Hi'], [120, 'EOC'], [135, 'TEXT:Hi'], [164, 'EDM'], [193, 'TEXT:Hi'], [238, 'EOC'], [267, 'EOC']], 25], [[4800, 6560, 'HiHi'], [9520, 10680, 'HiHi']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [75, 'EOC'], [90, 'EDM'], [90, 'EDM'], [135, 'TEXT:Hi'], [136, 'EDM'], [136, 'TEXT:Hi']], 29], [[2586, 3103, 'Hi']]), ('partial repair variant: display erase target', [[[3, 'TEXT:Bye'], [18, 'EOC'], [33, 'TEXT:Hi'], [33, 'EDM'], [33, 'TEXT:Hi'], [62, 'ENM'], [63, 'EOC'], [92, 'TEXT: there']], 29], [[620, 1137, 'Bye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('normal control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [30, 'TEXT:Hi'], [37, 'ENM']], 24], []), ('normal control', [[[0, 'EOC'], [30, 'TEXT:Bye'], [31, 'EOC'], [46, 'EOC'], [91, 'TEXT:Hi'], [92, 'TEXT: there'], [99, 'EDM'], [129, 'ENM']], 30], [[1033, 1533, 'Bye']])], [('regression: display erase target', [[[0, 'TEXT:Bye'], [7, 'EOC'], [14, 'EDM'], [43, 'ENM'], [88, 'EDM'], [95, 'EOC'], [95, 'EOC'], [125, 'TEXT:Bye']], 24], [[291, 583, 'Bye']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [75, 'EOC'], [90, 'EDM'], [90, 'EDM'], [135, 'TEXT:Hi'], [136, 'EDM'], [136, 'TEXT:Hi']], 29], [[2586, 3103, 'Hi']]), ('partial repair probe: display erase target', [[[0, 'TEXT: there'], [1, 'EOC'], [31, 'EDM'], [38, 'EOC'], [45, 'TEXT: there'], [46, 'ENM'], [76, 'TEXT: there']], 29], [[34, 1068, ' there']]), ('partial repair variant: display erase target', [[[3, 'EOC'], [10, 'ENM'], [40, 'TEXT: there'], [55, 'EOC'], [85, 'TEXT:Hi'], [115, 'EOC'], [160, 'EDM'], [167, 'EOC']], 29], [[1896, 3965, ' there'], [3965, 5517, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'TEXT: there'], [30, 'EOC'], [59, 'ENM']], 30], []), ('normal control', [[[0, 'EDM'], [7, 'TEXT: there'], [37, 'TEXT: there']], 29], []), ('normal control', [[[0, 'ENM'], [0, 'EOC'], [30, 'TEXT:Hi']], 24], [])], [('regression: display erase target', [[[30, 'TEXT:Hi'], [30, 'EDM'], [75, 'EOC'], [120, 'EDM']], 24], [[3125, 5000, 'Hi']]), ('regression variant: display erase target', [[[0, 'TEXT: there'], [1, 'EOC'], [31, 'EDM'], [38, 'EOC'], [45, 'TEXT: there'], [46, 'ENM'], [76, 'TEXT: there']], 29], [[34, 1068, ' there']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair variant: display erase target', [[[0, 'TEXT: there'], [0, 'TEXT: there'], [7, 'TEXT: there'], [37, 'EOC'], [67, 'TEXT:Hi'], [67, 'TEXT:Hi'], [97, 'EDM'], [112, 'EOC']], 29], [[1275, 3344, ' there there there']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[0, 'TEXT:Bye'], [1, 'EDM'], [31, 'TEXT: there'], [61, 'ENM'], [68, 'EOC'], [98, 'EOC'], [113, 'TEXT:Bye']], 25], []), ('normal control', [[[3, 'TEXT: there'], [32, 'TEXT: there'], [33, 'TEXT: there'], [48, 'EOC'], [78, 'EOC'], [123, 'TEXT: there']], 25], [[1920, 3120, ' there there there']]), ('normal control', [[[3, 'EDM'], [18, 'EOC'], [63, 'TEXT:Bye'], [63, 'ENM'], [108, 'TEXT:Bye'], [123, 'ENM'], [138, 'TEXT: there']], 25], [])], [('regression: display erase target', [[[30, 'TEXT:Bye'], [31, 'ENM'], [76, 'EOC'], [106, 'TEXT:Hi'], [107, 'EDM'], [137, 'EOC'], [166, 'EDM'], [167, 'TEXT: there']], 24], [[5708, 6916, 'Hi']]), ('regression variant: display erase target', [[[0, 'TEXT: there'], [29, 'TEXT:Bye'], [44, 'EDM'], [73, 'EOC'], [118, 'EOC'], [163, 'TEXT: there'], [192, 'ENM']], 25], [[2920, 4720, ' thereBye']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair variant: display erase target', [[[0, 'TEXT:Bye'], [45, 'EDM'], [74, 'EOC'], [119, 'TEXT:Hi'], [120, 'EDM'], [135, 'EOC'], [165, 'TEXT: there'], [194, 'TEXT: there']], 29], [[2551, 4137, 'Bye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('normal control', [[[30, 'TEXT:Bye'], [59, 'EOC'], [66, 'TEXT:Bye'], [111, 'EOC']], 24], [[2458, 4625, 'Bye']]), ('normal control', [[[3, 'TEXT:Hi'], [10, 'TEXT:Bye']], 30], []), ('normal control', [[[3, 'EOC'], [18, 'EOC'], [19, 'EOC']], 25], [])], [('regression: display erase target', [[[3, 'EOC'], [3, 'TEXT: there'], [4, 'TEXT: there'], [34, 'EDM'], [64, 'EOC'], [71, 'EOC'], [78, 'TEXT: there'], [78, 'TEXT: there']], 30], [[2133, 2366, ' there there']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair probe: display erase target', [[[3, 'TEXT:Hi'], [18, 'TEXT: there'], [33, 'TEXT:Bye'], [62, 'EOC'], [91, 'EDM'], [120, 'EOC'], [149, 'EOC'], [150, 'TEXT:Bye']], 25], [[2480, 3640, 'Hi thereBye']]), ('partial repair variant: display erase target', [[[0, 'TEXT:Bye'], [30, 'EOC'], [30, 'EDM'], [45, 'EOC'], [60, 'TEXT: there'], [89, 'EDM'], [119, 'EDM'], [126, 'TEXT:Bye']], 24], [[1250, 1250, 'Bye']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EDM'], [60, 'TEXT: there'], [67, 'EOC'], [112, 'EOC']], 24], [[2791, 4666, ' there']]), ('normal control', [[[3, 'EDM'], [33, 'TEXT:Bye'], [63, 'TEXT:Hi'], [108, 'EOC'], [109, 'TEXT:Hi']], 30], []), ('normal control', [[[30, 'ENM'], [31, 'TEXT: there'], [60, 'EDM'], [89, 'ENM'], [96, 'EDM'], [111, 'EOC']], 30], [])]]\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":"2019e4e645acc96a77ff3e26a9881ff5e03b33c0dcac0002650ef3c31b2d3d85","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, fps):\n    shown=''\n    hidden=''\n    since=None\n    out=[]\n    for frame,cmd in events:\n        t=frame*1000//fps\n        if cmd.startswith('TEXT:'):\n            hidden+=cmd[5:]\n        elif cmd=='ENM':\n            hidden=''\n        elif cmd=='EOC':\n            if shown:\n                out.append([since,t,shown])\n            shown,hidden=hidden,shown\n            since=t\n        elif cmd=='EDM':\n            if shown: out.append([since,t,shown])\n            hidden=''\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: display erase target', [[[30, 'TEXT:Bye'], [37, 'EOC'], [52, 'EDM'], [52, 'ENM'], [67, 'EDM']], 30], [[1233, 1733, 'Bye']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [75, 'TEXT:Hi'], [120, 'EOC'], [135, 'TEXT:Hi'], [164, 'EDM'], [193, 'TEXT:Hi'], [238, 'EOC'], [267, 'EOC']], 25], [[4800, 6560, 'HiHi'], [9520, 10680, 'HiHi']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [75, 'EOC'], [90, 'EDM'], [90, 'EDM'], [135, 'TEXT:Hi'], [136, 'EDM'], [136, 'TEXT:Hi']], 29], [[2586, 3103, 'Hi']]), ('partial repair variant: display erase target', [[[3, 'TEXT:Bye'], [18, 'EOC'], [33, 'TEXT:Hi'], [33, 'EDM'], [33, 'TEXT:Hi'], [62, 'ENM'], [63, 'EOC'], [92, 'TEXT: there']], 29], [[620, 1137, 'Bye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('normal control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [30, 'TEXT:Hi'], [37, 'ENM']], 24], []), ('normal control', [[[0, 'EOC'], [30, 'TEXT:Bye'], [31, 'EOC'], [46, 'EOC'], [91, 'TEXT:Hi'], [92, 'TEXT: there'], [99, 'EDM'], [129, 'ENM']], 30], [[1033, 1533, 'Bye']])], [('regression: display erase target', [[[0, 'TEXT:Bye'], [7, 'EOC'], [14, 'EDM'], [43, 'ENM'], [88, 'EDM'], [95, 'EOC'], [95, 'EOC'], [125, 'TEXT:Bye']], 24], [[291, 583, 'Bye']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [75, 'EOC'], [90, 'EDM'], [90, 'EDM'], [135, 'TEXT:Hi'], [136, 'EDM'], [136, 'TEXT:Hi']], 29], [[2586, 3103, 'Hi']]), ('partial repair probe: display erase target', [[[0, 'TEXT: there'], [1, 'EOC'], [31, 'EDM'], [38, 'EOC'], [45, 'TEXT: there'], [46, 'ENM'], [76, 'TEXT: there']], 29], [[34, 1068, ' there']]), ('partial repair variant: display erase target', [[[3, 'EOC'], [10, 'ENM'], [40, 'TEXT: there'], [55, 'EOC'], [85, 'TEXT:Hi'], [115, 'EOC'], [160, 'EDM'], [167, 'EOC']], 29], [[1896, 3965, ' there'], [3965, 5517, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'TEXT: there'], [30, 'EOC'], [59, 'ENM']], 30], []), ('normal control', [[[0, 'EDM'], [7, 'TEXT: there'], [37, 'TEXT: there']], 29], []), ('normal control', [[[0, 'ENM'], [0, 'EOC'], [30, 'TEXT:Hi']], 24], [])], [('regression: display erase target', [[[30, 'TEXT:Hi'], [30, 'EDM'], [75, 'EOC'], [120, 'EDM']], 24], [[3125, 5000, 'Hi']]), ('regression variant: display erase target', [[[0, 'TEXT: there'], [1, 'EOC'], [31, 'EDM'], [38, 'EOC'], [45, 'TEXT: there'], [46, 'ENM'], [76, 'TEXT: there']], 29], [[34, 1068, ' there']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair variant: display erase target', [[[0, 'TEXT: there'], [0, 'TEXT: there'], [7, 'TEXT: there'], [37, 'EOC'], [67, 'TEXT:Hi'], [67, 'TEXT:Hi'], [97, 'EDM'], [112, 'EOC']], 29], [[1275, 3344, ' there there there']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[0, 'TEXT:Bye'], [1, 'EDM'], [31, 'TEXT: there'], [61, 'ENM'], [68, 'EOC'], [98, 'EOC'], [113, 'TEXT:Bye']], 25], []), ('normal control', [[[3, 'TEXT: there'], [32, 'TEXT: there'], [33, 'TEXT: there'], [48, 'EOC'], [78, 'EOC'], [123, 'TEXT: there']], 25], [[1920, 3120, ' there there there']]), ('normal control', [[[3, 'EDM'], [18, 'EOC'], [63, 'TEXT:Bye'], [63, 'ENM'], [108, 'TEXT:Bye'], [123, 'ENM'], [138, 'TEXT: there']], 25], [])], [('regression: display erase target', [[[30, 'TEXT:Bye'], [31, 'ENM'], [76, 'EOC'], [106, 'TEXT:Hi'], [107, 'EDM'], [137, 'EOC'], [166, 'EDM'], [167, 'TEXT: there']], 24], [[5708, 6916, 'Hi']]), ('regression variant: display erase target', [[[0, 'TEXT: there'], [29, 'TEXT:Bye'], [44, 'EDM'], [73, 'EOC'], [118, 'EOC'], [163, 'TEXT: there'], [192, 'ENM']], 25], [[2920, 4720, ' thereBye']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair variant: display erase target', [[[0, 'TEXT:Bye'], [45, 'EDM'], [74, 'EOC'], [119, 'TEXT:Hi'], [120, 'EDM'], [135, 'EOC'], [165, 'TEXT: there'], [194, 'TEXT: there']], 29], [[2551, 4137, 'Bye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('normal control', [[[30, 'TEXT:Bye'], [59, 'EOC'], [66, 'TEXT:Bye'], [111, 'EOC']], 24], [[2458, 4625, 'Bye']]), ('normal control', [[[3, 'TEXT:Hi'], [10, 'TEXT:Bye']], 30], []), ('normal control', [[[3, 'EOC'], [18, 'EOC'], [19, 'EOC']], 25], [])], [('regression: display erase target', [[[3, 'EOC'], [3, 'TEXT: there'], [4, 'TEXT: there'], [34, 'EDM'], [64, 'EOC'], [71, 'EOC'], [78, 'TEXT: there'], [78, 'TEXT: there']], 30], [[2133, 2366, ' there there']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair probe: display erase target', [[[3, 'TEXT:Hi'], [18, 'TEXT: there'], [33, 'TEXT:Bye'], [62, 'EOC'], [91, 'EDM'], [120, 'EOC'], [149, 'EOC'], [150, 'TEXT:Bye']], 25], [[2480, 3640, 'Hi thereBye']]), ('partial repair variant: display erase target', [[[0, 'TEXT:Bye'], [30, 'EOC'], [30, 'EDM'], [45, 'EOC'], [60, 'TEXT: there'], [89, 'EDM'], [119, 'EDM'], [126, 'TEXT:Bye']], 24], [[1250, 1250, 'Bye']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EDM'], [60, 'TEXT: there'], [67, 'EOC'], [112, 'EOC']], 24], [[2791, 4666, ' there']]), ('normal control', [[[3, 'EDM'], [33, 'TEXT:Bye'], [63, 'TEXT:Hi'], [108, 'EOC'], [109, 'TEXT:Hi']], 30], []), ('normal control', [[[30, 'ENM'], [31, 'TEXT: there'], [60, 'EDM'], [89, 'ENM'], [96, 'EDM'], [111, 'EOC']], 30], [])]]\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":"31afff737318241c3bc7a05c8f29958c9f26bfac279464b54d957b9c9c0994d4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, fps):\n    shown=''\n    hidden=''\n    since=None\n    out=[]\n    for frame,cmd in events:\n        t=frame*1000//fps\n        if cmd.startswith('TEXT:'):\n            hidden+=cmd[5:]\n        elif cmd=='ENM':\n            hidden=''\n        elif cmd=='EOC':\n            if shown:\n                out.append([since,t,shown])\n            shown,hidden=hidden,shown\n            since=t\n        elif cmd=='EDM':\n            if shown: out.append([since,t,shown])\n            shown=''\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: display erase target', [[[30, 'TEXT:Bye'], [37, 'EOC'], [52, 'EDM'], [52, 'ENM'], [67, 'EDM']], 30], [[1233, 1733, 'Bye']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [75, 'TEXT:Hi'], [120, 'EOC'], [135, 'TEXT:Hi'], [164, 'EDM'], [193, 'TEXT:Hi'], [238, 'EOC'], [267, 'EOC']], 25], [[4800, 6560, 'HiHi'], [9520, 10680, 'HiHi']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [75, 'EOC'], [90, 'EDM'], [90, 'EDM'], [135, 'TEXT:Hi'], [136, 'EDM'], [136, 'TEXT:Hi']], 29], [[2586, 3103, 'Hi']]), ('partial repair variant: display erase target', [[[3, 'TEXT:Bye'], [18, 'EOC'], [33, 'TEXT:Hi'], [33, 'EDM'], [33, 'TEXT:Hi'], [62, 'ENM'], [63, 'EOC'], [92, 'TEXT: there']], 29], [[620, 1137, 'Bye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('normal control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [30, 'TEXT:Hi'], [37, 'ENM']], 24], []), ('normal control', [[[0, 'EOC'], [30, 'TEXT:Bye'], [31, 'EOC'], [46, 'EOC'], [91, 'TEXT:Hi'], [92, 'TEXT: there'], [99, 'EDM'], [129, 'ENM']], 30], [[1033, 1533, 'Bye']])], [('regression: display erase target', [[[0, 'TEXT:Bye'], [7, 'EOC'], [14, 'EDM'], [43, 'ENM'], [88, 'EDM'], [95, 'EOC'], [95, 'EOC'], [125, 'TEXT:Bye']], 24], [[291, 583, 'Bye']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [75, 'EOC'], [90, 'EDM'], [90, 'EDM'], [135, 'TEXT:Hi'], [136, 'EDM'], [136, 'TEXT:Hi']], 29], [[2586, 3103, 'Hi']]), ('partial repair probe: display erase target', [[[0, 'TEXT: there'], [1, 'EOC'], [31, 'EDM'], [38, 'EOC'], [45, 'TEXT: there'], [46, 'ENM'], [76, 'TEXT: there']], 29], [[34, 1068, ' there']]), ('partial repair variant: display erase target', [[[3, 'EOC'], [10, 'ENM'], [40, 'TEXT: there'], [55, 'EOC'], [85, 'TEXT:Hi'], [115, 'EOC'], [160, 'EDM'], [167, 'EOC']], 29], [[1896, 3965, ' there'], [3965, 5517, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'TEXT: there'], [30, 'EOC'], [59, 'ENM']], 30], []), ('normal control', [[[0, 'EDM'], [7, 'TEXT: there'], [37, 'TEXT: there']], 29], []), ('normal control', [[[0, 'ENM'], [0, 'EOC'], [30, 'TEXT:Hi']], 24], [])], [('regression: display erase target', [[[30, 'TEXT:Hi'], [30, 'EDM'], [75, 'EOC'], [120, 'EDM']], 24], [[3125, 5000, 'Hi']]), ('regression variant: display erase target', [[[0, 'TEXT: there'], [1, 'EOC'], [31, 'EDM'], [38, 'EOC'], [45, 'TEXT: there'], [46, 'ENM'], [76, 'TEXT: there']], 29], [[34, 1068, ' there']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair variant: display erase target', [[[0, 'TEXT: there'], [0, 'TEXT: there'], [7, 'TEXT: there'], [37, 'EOC'], [67, 'TEXT:Hi'], [67, 'TEXT:Hi'], [97, 'EDM'], [112, 'EOC']], 29], [[1275, 3344, ' there there there']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[0, 'TEXT:Bye'], [1, 'EDM'], [31, 'TEXT: there'], [61, 'ENM'], [68, 'EOC'], [98, 'EOC'], [113, 'TEXT:Bye']], 25], []), ('normal control', [[[3, 'TEXT: there'], [32, 'TEXT: there'], [33, 'TEXT: there'], [48, 'EOC'], [78, 'EOC'], [123, 'TEXT: there']], 25], [[1920, 3120, ' there there there']]), ('normal control', [[[3, 'EDM'], [18, 'EOC'], [63, 'TEXT:Bye'], [63, 'ENM'], [108, 'TEXT:Bye'], [123, 'ENM'], [138, 'TEXT: there']], 25], [])], [('regression: display erase target', [[[30, 'TEXT:Bye'], [31, 'ENM'], [76, 'EOC'], [106, 'TEXT:Hi'], [107, 'EDM'], [137, 'EOC'], [166, 'EDM'], [167, 'TEXT: there']], 24], [[5708, 6916, 'Hi']]), ('regression variant: display erase target', [[[0, 'TEXT: there'], [29, 'TEXT:Bye'], [44, 'EDM'], [73, 'EOC'], [118, 'EOC'], [163, 'TEXT: there'], [192, 'ENM']], 25], [[2920, 4720, ' thereBye']]), ('partial repair probe: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair variant: display erase target', [[[0, 'TEXT:Bye'], [45, 'EDM'], [74, 'EOC'], [119, 'TEXT:Hi'], [120, 'EDM'], [135, 'EOC'], [165, 'TEXT: there'], [194, 'TEXT: there']], 29], [[2551, 4137, 'Bye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('normal control', [[[30, 'TEXT:Bye'], [59, 'EOC'], [66, 'TEXT:Bye'], [111, 'EOC']], 24], [[2458, 4625, 'Bye']]), ('normal control', [[[3, 'TEXT:Hi'], [10, 'TEXT:Bye']], 30], []), ('normal control', [[[3, 'EOC'], [18, 'EOC'], [19, 'EOC']], 25], [])], [('regression: display erase target', [[[3, 'EOC'], [3, 'TEXT: there'], [4, 'TEXT: there'], [34, 'EDM'], [64, 'EOC'], [71, 'EOC'], [78, 'TEXT: there'], [78, 'TEXT: there']], 30], [[2133, 2366, ' there there']]), ('regression variant: display erase target', [[[30, 'TEXT:Hi'], [45, 'TEXT:Hi'], [75, 'EDM'], [76, 'TEXT: there'], [83, 'EOC'], [128, 'EDM'], [143, 'EOC']], 25], [[3320, 5120, 'HiHi there']]), ('partial repair probe: display erase target', [[[3, 'TEXT:Hi'], [18, 'TEXT: there'], [33, 'TEXT:Bye'], [62, 'EOC'], [91, 'EDM'], [120, 'EOC'], [149, 'EOC'], [150, 'TEXT:Bye']], 25], [[2480, 3640, 'Hi thereBye']]), ('partial repair variant: display erase target', [[[0, 'TEXT:Bye'], [30, 'EOC'], [30, 'EDM'], [45, 'EOC'], [60, 'TEXT: there'], [89, 'EDM'], [119, 'EDM'], [126, 'TEXT:Bye']], 24], [[1250, 1250, 'Bye']]), ('boundary control', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EDM'], [60, 'TEXT: there'], [67, 'EOC'], [112, 'EOC']], 24], [[2791, 4666, ' there']]), ('normal control', [[[3, 'EDM'], [33, 'TEXT:Bye'], [63, 'TEXT:Hi'], [108, 'EOC'], [109, 'TEXT:Hi']], 30], []), ('normal control', [[[30, 'ENM'], [31, 'TEXT: there'], [60, 'EDM'], [89, 'ENM'], [96, 'EDM'], [111, 'EOC']], 30], [])]]\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-pop-on-caption-buffers-display-erase-target","generated_at":"2026-09-29T14:49:33.382902+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":"EDM must clear the displayed memory after emitting it.","root_cause":"EDM clears the non-displayed buffer instead of the displayed one.","sha256":"42812270fea72be2c07f9b3d035a1fe1ff84870862a7e90d830241f64b0dd00d","title":"Pop-on caption buffer timing: display erase target · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.23,"exit_code":1,"observations":[{"actual":[[1233,1733,"Bye"],[1733,2233,"Bye"]],"check":"regression: display erase target","expected":[[1233,1733,"Bye"]],"passed":false},{"actual":[[4800,6560,"HiHi"],[6560,9520,"HiHi"],[9520,10680,"HiHi"]],"check":"regression variant: display erase target","expected":[[4800,6560,"HiHi"],[9520,10680,"HiHi"]],"passed":false},{"actual":[[2586,3103,"Hi"],[3103,3103,"Hi"],[3103,4689,"Hi"]],"check":"partial repair probe: display erase target","expected":[[2586,3103,"Hi"]],"passed":false},{"actual":[[620,1137,"Bye"],[1137,2172,"Bye"]],"check":"partial repair variant: display erase target","expected":[[620,1137,"Bye"]],"passed":false},{"actual":[[1000,2000,"Hi"]],"check":"boundary control","expected":[[1000,2000,"Hi"]],"passed":true},{"actual":[[400,1600,"A"],[1600,2000,"B"]],"check":"boundary control","expected":[[400,1600,"A"],[1600,2000,"B"]],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[[1033,1533,"Bye"]],"check":"normal control","expected":[[1033,1533,"Bye"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: display erase target\", \"actual\": [[1233, 1733, \"Bye\"], [1733, 2233, \"Bye\"]], \"expected\": [[1233, 1733, \"Bye\"]], \"passed\": false}, {\"check\": \"regression variant: display erase target\", \"actual\": [[4800, 6560, \"HiHi\"], [6560, 9520, \"HiHi\"], [9520, 10680, \"HiHi\"]], \"expected\": [[4800, 6560, \"HiHi\"], [9520, 10680, \"HiHi\"]], \"passed\": false}, {\"check\": \"partial repair probe: display erase target\", \"actual\": [[2586, 3103, \"Hi\"], [3103, 3103, \"Hi\"], [3103, 4689, \"Hi\"]], \"expected\": [[2586, 3103, \"Hi\"]], \"passed\": false}, {\"check\": \"partial repair variant: display erase target\", \"actual\": [[620, 1137, \"Bye\"], [1137, 2172, \"Bye\"]], \"expected\": [[620, 1137, \"Bye\"]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[1000, 2000, \"Hi\"]], \"expected\": [[1000, 2000, \"Hi\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"expected\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1033, 1533, \"Bye\"]], \"expected\": [[1033, 1533, \"Bye\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.556,"exit_code":1,"observations":[{"actual":[[1233,1733,"Bye"],[1233,2233,"Bye"]],"check":"regression: display erase target","expected":[[1233,1733,"Bye"]],"passed":false},{"actual":[[4800,6560,"HiHi"],[4800,9520,"HiHi"],[9520,10680,"Hi"]],"check":"regression variant: display erase target","expected":[[4800,6560,"HiHi"],[9520,10680,"HiHi"]],"passed":false},{"actual":[[2586,3103,"Hi"],[2586,3103,"Hi"],[2586,4689,"Hi"]],"check":"partial repair probe: display erase target","expected":[[2586,3103,"Hi"]],"passed":false},{"actual":[[620,1137,"Bye"],[620,2172,"Bye"]],"check":"partial repair variant: display erase target","expected":[[620,1137,"Bye"]],"passed":false},{"actual":[[1000,2000,"Hi"]],"check":"boundary control","expected":[[1000,2000,"Hi"]],"passed":true},{"actual":[[400,1600,"A"],[1600,2000,"B"]],"check":"boundary control","expected":[[400,1600,"A"],[1600,2000,"B"]],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[[1033,1533,"Bye"]],"check":"normal control","expected":[[1033,1533,"Bye"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: display erase target\", \"actual\": [[1233, 1733, \"Bye\"], [1233, 2233, \"Bye\"]], \"expected\": [[1233, 1733, \"Bye\"]], \"passed\": false}, {\"check\": \"regression variant: display erase target\", \"actual\": [[4800, 6560, \"HiHi\"], [4800, 9520, \"HiHi\"], [9520, 10680, \"Hi\"]], \"expected\": [[4800, 6560, \"HiHi\"], [9520, 10680, \"HiHi\"]], \"passed\": false}, {\"check\": \"partial repair probe: display erase target\", \"actual\": [[2586, 3103, \"Hi\"], [2586, 3103, \"Hi\"], [2586, 4689, \"Hi\"]], \"expected\": [[2586, 3103, \"Hi\"]], \"passed\": false}, {\"check\": \"partial repair variant: display erase target\", \"actual\": [[620, 1137, \"Bye\"], [620, 2172, \"Bye\"]], \"expected\": [[620, 1137, \"Bye\"]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[1000, 2000, \"Hi\"]], \"expected\": [[1000, 2000, \"Hi\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"expected\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1033, 1533, \"Bye\"]], \"expected\": [[1033, 1533, \"Bye\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.98,"exit_code":0,"observations":[{"actual":[[1233,1733,"Bye"]],"check":"regression: display erase target","expected":[[1233,1733,"Bye"]],"passed":true},{"actual":[[4800,6560,"HiHi"],[9520,10680,"HiHi"]],"check":"regression variant: display erase target","expected":[[4800,6560,"HiHi"],[9520,10680,"HiHi"]],"passed":true},{"actual":[[2586,3103,"Hi"]],"check":"partial repair probe: display erase target","expected":[[2586,3103,"Hi"]],"passed":true},{"actual":[[620,1137,"Bye"]],"check":"partial repair variant: display erase target","expected":[[620,1137,"Bye"]],"passed":true},{"actual":[[1000,2000,"Hi"]],"check":"boundary control","expected":[[1000,2000,"Hi"]],"passed":true},{"actual":[[400,1600,"A"],[1600,2000,"B"]],"check":"boundary control","expected":[[400,1600,"A"],[1600,2000,"B"]],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[[1033,1533,"Bye"]],"check":"normal control","expected":[[1033,1533,"Bye"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: display erase target\", \"actual\": [[1233, 1733, \"Bye\"]], \"expected\": [[1233, 1733, \"Bye\"]], \"passed\": true}, {\"check\": \"regression variant: display erase target\", \"actual\": [[4800, 6560, \"HiHi\"], [9520, 10680, \"HiHi\"]], \"expected\": [[4800, 6560, \"HiHi\"], [9520, 10680, \"HiHi\"]], \"passed\": true}, {\"check\": \"partial repair probe: display erase target\", \"actual\": [[2586, 3103, \"Hi\"]], \"expected\": [[2586, 3103, \"Hi\"]], \"passed\": true}, {\"check\": \"partial repair variant: display erase target\", \"actual\": [[620, 1137, \"Bye\"]], \"expected\": [[620, 1137, \"Bye\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[1000, 2000, \"Hi\"]], \"expected\": [[1000, 2000, \"Hi\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"expected\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[1033, 1533, \"Bye\"]], \"expected\": [[1033, 1533, \"Bye\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}