{"abstract":"Captions loaded after a flip repeat the previous caption text.","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":"Clearing non-displayed memory instead of swapping loses the previous caption for later appends.","family":"w2-subtitle-cue-timing-pop-on-caption-buffers-memory-swap","id":"FA-78241","implementations":{"attempt":{"sha256":"c9b1159a8dadda5c16b6afa718a30fcfdc8fce3c53f2338ba9b086beca4cd52a","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,''\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: memory swap', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('regression variant: memory swap', [[[30, 'TEXT: there'], [45, 'EOC'], [52, 'EOC'], [82, 'ENM'], [82, 'TEXT:Bye'], [127, 'EOC'], [127, 'EOC'], [156, 'TEXT:Hi']], 29], [[1551, 1793, ' there'], [4379, 4379, 'Bye']]), ('partial repair probe: memory swap', [[[30, 'TEXT:Hi'], [59, 'TEXT:Hi'], [59, 'EOC'], [74, 'ENM'], [119, 'EOC'], [149, 'EOC'], [194, 'EOC']], 29], [[2034, 4103, 'HiHi'], [5137, 6689, 'HiHi']]), ('partial repair variant: memory swap', [[[3, 'TEXT:Hi'], [48, 'EOC'], [49, 'EOC'], [49, 'TEXT:Hi'], [94, 'TEXT:Bye'], [123, 'EOC'], [130, 'EDM']], 25], [[1920, 1960, 'Hi'], [4920, 5200, 'HiHiBye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [30, 'TEXT:Hi'], [37, 'ENM']], 24], []), ('normal control', [[[0, 'EOC'], [7, 'TEXT:Bye'], [52, 'EDM'], [59, 'TEXT:Bye'], [74, 'EOC']], 24], []), ('normal control', [[[30, 'TEXT:Hi'], [31, 'TEXT: there'], [61, 'EDM'], [106, 'TEXT: there'], [121, 'ENM'], [136, 'TEXT:Hi'], [166, 'EOC']], 24], [])], [('regression: memory swap', [[[0, 'EOC'], [30, 'TEXT:Bye'], [31, 'EOC'], [46, 'EOC'], [91, 'TEXT:Hi'], [92, 'TEXT: there'], [99, 'EDM'], [129, 'ENM']], 30], [[1033, 1533, 'Bye']]), ('regression variant: memory swap', [[[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: memory swap', [[[30, 'TEXT:Bye'], [45, 'EOC'], [74, 'EOC'], [74, 'EDM'], [103, 'EOC'], [148, 'EDM'], [163, 'TEXT:Bye']], 24], [[1875, 3083, 'Bye'], [4291, 6166, 'Bye']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Hi'], [30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [105, 'EOC'], [120, 'EOC'], [165, 'EOC'], [180, 'TEXT: there'], [195, 'EDM']], 24], [[4375, 5000, 'HiByeBye'], [6875, 8125, 'HiByeBye']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[30, 'EDM'], [30, 'EOC'], [60, 'ENM'], [89, 'ENM']], 25], []), ('normal control', [[[3, 'ENM'], [4, 'TEXT: there'], [34, 'EDM'], [64, 'ENM'], [79, 'EOC']], 30], []), ('normal control', [[[3, 'EOC'], [32, 'EOC'], [77, 'TEXT:Bye']], 25], [])], [('regression: memory swap', [[[3, 'TEXT:Hi'], [48, 'EOC'], [49, 'EOC'], [49, 'TEXT:Hi'], [94, 'TEXT:Bye'], [123, 'EOC'], [130, 'EDM']], 25], [[1920, 1960, 'Hi'], [4920, 5200, 'HiHiBye']]), ('regression variant: memory swap', [[[3, 'TEXT:Hi'], [10, 'EOC'], [17, 'TEXT:Bye'], [62, 'TEXT:Bye'], [91, 'TEXT:Bye'], [136, 'EOC'], [151, 'EDM']], 25], [[400, 5440, 'Hi'], [5440, 6040, 'ByeByeBye']]), ('partial repair probe: memory swap', [[[0, 'TEXT: there'], [7, 'EOC'], [37, 'TEXT:Hi'], [52, 'EOC'], [67, 'EOC'], [74, 'EOC'], [75, 'EOC'], [90, 'TEXT:Hi']], 24], [[291, 2166, ' there'], [2166, 2791, 'Hi'], [2791, 3083, ' there'], [3083, 3125, 'Hi']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Hi'], [59, 'TEXT:Hi'], [59, 'EOC'], [74, 'ENM'], [119, 'EOC'], [149, 'EOC'], [194, 'EOC']], 29], [[2034, 4103, 'HiHi'], [5137, 6689, 'HiHi']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[0, 'EOC'], [7, 'EDM'], [14, 'EOC'], [59, 'EOC'], [104, 'EOC'], [133, 'EOC'], [162, 'EOC'], [207, 'EOC']], 25], []), ('normal control', [[[30, 'EOC'], [31, 'TEXT: there'], [31, 'EDM'], [76, 'TEXT:Bye'], [76, 'ENM'], [91, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [59, 'EOC'], [60, 'TEXT: there'], [89, 'TEXT: there'], [96, 'ENM'], [96, 'TEXT:Bye'], [96, 'TEXT:Bye'], [96, 'TEXT: there']], 30], [])], [('regression: memory swap', [[[30, 'TEXT:Hi'], [30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [105, 'EOC'], [120, 'EOC'], [165, 'EOC'], [180, 'TEXT: there'], [195, 'EDM']], 24], [[4375, 5000, 'HiByeBye'], [6875, 8125, 'HiByeBye']]), ('regression variant: memory swap', [[[3, 'TEXT: there'], [4, 'EOC'], [11, 'EOC'], [12, 'TEXT:Hi'], [42, 'EOC'], [57, 'ENM']], 24], [[166, 458, ' there']]), ('partial repair probe: memory swap', [[[0, 'ENM'], [1, 'TEXT:Hi'], [16, 'EOC'], [16, 'EOC'], [45, 'TEXT:Bye'], [74, 'EOC'], [89, 'EOC'], [119, 'ENM']], 30], [[533, 533, 'Hi'], [2466, 2966, 'HiBye']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Bye'], [45, 'EOC'], [74, 'EOC'], [74, 'EDM'], [103, 'EOC'], [148, 'EDM'], [163, 'TEXT:Bye']], 24], [[1875, 3083, 'Bye'], [4291, 6166, 'Bye']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[0, 'TEXT: there'], [7, 'ENM'], [8, 'EOC'], [9, 'ENM'], [16, 'TEXT:Hi']], 30], []), ('normal control', [[[30, 'EDM'], [60, 'TEXT: there'], [90, 'TEXT:Bye']], 24], []), ('normal control', [[[3, 'EDM'], [18, 'TEXT:Hi'], [19, 'TEXT:Hi'], [34, 'TEXT: there'], [79, 'TEXT:Bye']], 25], [])], [('regression: memory swap', [[[3, 'ENM'], [3, 'TEXT:Bye'], [10, 'EOC'], [10, 'EOC'], [55, 'TEXT:Bye'], [56, 'EOC']], 29], [[344, 344, 'Bye']]), ('regression variant: memory swap', [[[3, 'TEXT:Hi'], [48, 'TEXT:Bye'], [49, 'TEXT:Bye'], [79, 'EOC'], [79, 'TEXT: there'], [124, 'EOC'], [169, 'TEXT:Bye'], [198, 'EOC']], 30], [[2633, 4133, 'HiByeBye'], [4133, 6600, ' there']]), ('partial repair probe: memory swap', [[[3, 'TEXT: there'], [18, 'EOC'], [18, 'EOC'], [19, 'EOC'], [48, 'EOC'], [78, 'EDM']], 29], [[620, 620, ' there'], [655, 1655, ' there']]), ('partial repair variant: memory swap', [[[0, 'TEXT: there'], [7, 'EOC'], [37, 'TEXT:Hi'], [52, 'EOC'], [67, 'EOC'], [74, 'EOC'], [75, 'EOC'], [90, 'TEXT:Hi']], 24], [[291, 2166, ' there'], [2166, 2791, 'Hi'], [2791, 3083, ' there'], [3083, 3125, 'Hi']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[0, 'EOC'], [7, 'TEXT:Bye'], [14, 'TEXT:Bye']], 25], []), ('normal control', [[[30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [90, 'ENM'], [120, 'EOC'], [127, 'TEXT: there'], [127, 'TEXT:Bye'], [134, 'TEXT:Bye']], 25], []), ('normal control', [[[3, 'EDM'], [32, 'TEXT:Bye'], [77, 'TEXT:Bye'], [106, 'TEXT:Hi'], [151, 'TEXT:Hi']], 29], [])]]\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":"50245ba8ed50685a72b5903ad9ac79160e64dee3dccc37964f681073b9fb4b67","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\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: memory swap', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('regression variant: memory swap', [[[30, 'TEXT: there'], [45, 'EOC'], [52, 'EOC'], [82, 'ENM'], [82, 'TEXT:Bye'], [127, 'EOC'], [127, 'EOC'], [156, 'TEXT:Hi']], 29], [[1551, 1793, ' there'], [4379, 4379, 'Bye']]), ('partial repair probe: memory swap', [[[30, 'TEXT:Hi'], [59, 'TEXT:Hi'], [59, 'EOC'], [74, 'ENM'], [119, 'EOC'], [149, 'EOC'], [194, 'EOC']], 29], [[2034, 4103, 'HiHi'], [5137, 6689, 'HiHi']]), ('partial repair variant: memory swap', [[[3, 'TEXT:Hi'], [48, 'EOC'], [49, 'EOC'], [49, 'TEXT:Hi'], [94, 'TEXT:Bye'], [123, 'EOC'], [130, 'EDM']], 25], [[1920, 1960, 'Hi'], [4920, 5200, 'HiHiBye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [30, 'TEXT:Hi'], [37, 'ENM']], 24], []), ('normal control', [[[0, 'EOC'], [7, 'TEXT:Bye'], [52, 'EDM'], [59, 'TEXT:Bye'], [74, 'EOC']], 24], []), ('normal control', [[[30, 'TEXT:Hi'], [31, 'TEXT: there'], [61, 'EDM'], [106, 'TEXT: there'], [121, 'ENM'], [136, 'TEXT:Hi'], [166, 'EOC']], 24], [])], [('regression: memory swap', [[[0, 'EOC'], [30, 'TEXT:Bye'], [31, 'EOC'], [46, 'EOC'], [91, 'TEXT:Hi'], [92, 'TEXT: there'], [99, 'EDM'], [129, 'ENM']], 30], [[1033, 1533, 'Bye']]), ('regression variant: memory swap', [[[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: memory swap', [[[30, 'TEXT:Bye'], [45, 'EOC'], [74, 'EOC'], [74, 'EDM'], [103, 'EOC'], [148, 'EDM'], [163, 'TEXT:Bye']], 24], [[1875, 3083, 'Bye'], [4291, 6166, 'Bye']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Hi'], [30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [105, 'EOC'], [120, 'EOC'], [165, 'EOC'], [180, 'TEXT: there'], [195, 'EDM']], 24], [[4375, 5000, 'HiByeBye'], [6875, 8125, 'HiByeBye']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[30, 'EDM'], [30, 'EOC'], [60, 'ENM'], [89, 'ENM']], 25], []), ('normal control', [[[3, 'ENM'], [4, 'TEXT: there'], [34, 'EDM'], [64, 'ENM'], [79, 'EOC']], 30], []), ('normal control', [[[3, 'EOC'], [32, 'EOC'], [77, 'TEXT:Bye']], 25], [])], [('regression: memory swap', [[[3, 'TEXT:Hi'], [48, 'EOC'], [49, 'EOC'], [49, 'TEXT:Hi'], [94, 'TEXT:Bye'], [123, 'EOC'], [130, 'EDM']], 25], [[1920, 1960, 'Hi'], [4920, 5200, 'HiHiBye']]), ('regression variant: memory swap', [[[3, 'TEXT:Hi'], [10, 'EOC'], [17, 'TEXT:Bye'], [62, 'TEXT:Bye'], [91, 'TEXT:Bye'], [136, 'EOC'], [151, 'EDM']], 25], [[400, 5440, 'Hi'], [5440, 6040, 'ByeByeBye']]), ('partial repair probe: memory swap', [[[0, 'TEXT: there'], [7, 'EOC'], [37, 'TEXT:Hi'], [52, 'EOC'], [67, 'EOC'], [74, 'EOC'], [75, 'EOC'], [90, 'TEXT:Hi']], 24], [[291, 2166, ' there'], [2166, 2791, 'Hi'], [2791, 3083, ' there'], [3083, 3125, 'Hi']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Hi'], [59, 'TEXT:Hi'], [59, 'EOC'], [74, 'ENM'], [119, 'EOC'], [149, 'EOC'], [194, 'EOC']], 29], [[2034, 4103, 'HiHi'], [5137, 6689, 'HiHi']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[0, 'EOC'], [7, 'EDM'], [14, 'EOC'], [59, 'EOC'], [104, 'EOC'], [133, 'EOC'], [162, 'EOC'], [207, 'EOC']], 25], []), ('normal control', [[[30, 'EOC'], [31, 'TEXT: there'], [31, 'EDM'], [76, 'TEXT:Bye'], [76, 'ENM'], [91, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [59, 'EOC'], [60, 'TEXT: there'], [89, 'TEXT: there'], [96, 'ENM'], [96, 'TEXT:Bye'], [96, 'TEXT:Bye'], [96, 'TEXT: there']], 30], [])], [('regression: memory swap', [[[30, 'TEXT:Hi'], [30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [105, 'EOC'], [120, 'EOC'], [165, 'EOC'], [180, 'TEXT: there'], [195, 'EDM']], 24], [[4375, 5000, 'HiByeBye'], [6875, 8125, 'HiByeBye']]), ('regression variant: memory swap', [[[3, 'TEXT: there'], [4, 'EOC'], [11, 'EOC'], [12, 'TEXT:Hi'], [42, 'EOC'], [57, 'ENM']], 24], [[166, 458, ' there']]), ('partial repair probe: memory swap', [[[0, 'ENM'], [1, 'TEXT:Hi'], [16, 'EOC'], [16, 'EOC'], [45, 'TEXT:Bye'], [74, 'EOC'], [89, 'EOC'], [119, 'ENM']], 30], [[533, 533, 'Hi'], [2466, 2966, 'HiBye']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Bye'], [45, 'EOC'], [74, 'EOC'], [74, 'EDM'], [103, 'EOC'], [148, 'EDM'], [163, 'TEXT:Bye']], 24], [[1875, 3083, 'Bye'], [4291, 6166, 'Bye']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[0, 'TEXT: there'], [7, 'ENM'], [8, 'EOC'], [9, 'ENM'], [16, 'TEXT:Hi']], 30], []), ('normal control', [[[30, 'EDM'], [60, 'TEXT: there'], [90, 'TEXT:Bye']], 24], []), ('normal control', [[[3, 'EDM'], [18, 'TEXT:Hi'], [19, 'TEXT:Hi'], [34, 'TEXT: there'], [79, 'TEXT:Bye']], 25], [])], [('regression: memory swap', [[[3, 'ENM'], [3, 'TEXT:Bye'], [10, 'EOC'], [10, 'EOC'], [55, 'TEXT:Bye'], [56, 'EOC']], 29], [[344, 344, 'Bye']]), ('regression variant: memory swap', [[[3, 'TEXT:Hi'], [48, 'TEXT:Bye'], [49, 'TEXT:Bye'], [79, 'EOC'], [79, 'TEXT: there'], [124, 'EOC'], [169, 'TEXT:Bye'], [198, 'EOC']], 30], [[2633, 4133, 'HiByeBye'], [4133, 6600, ' there']]), ('partial repair probe: memory swap', [[[3, 'TEXT: there'], [18, 'EOC'], [18, 'EOC'], [19, 'EOC'], [48, 'EOC'], [78, 'EDM']], 29], [[620, 620, ' there'], [655, 1655, ' there']]), ('partial repair variant: memory swap', [[[0, 'TEXT: there'], [7, 'EOC'], [37, 'TEXT:Hi'], [52, 'EOC'], [67, 'EOC'], [74, 'EOC'], [75, 'EOC'], [90, 'TEXT:Hi']], 24], [[291, 2166, ' there'], [2166, 2791, 'Hi'], [2791, 3083, ' there'], [3083, 3125, 'Hi']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[0, 'EOC'], [7, 'TEXT:Bye'], [14, 'TEXT:Bye']], 25], []), ('normal control', [[[30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [90, 'ENM'], [120, 'EOC'], [127, 'TEXT: there'], [127, 'TEXT:Bye'], [134, 'TEXT:Bye']], 25], []), ('normal control', [[[3, 'EDM'], [32, 'TEXT:Bye'], [77, 'TEXT:Bye'], [106, 'TEXT:Hi'], [151, 'TEXT:Hi']], 29], [])]]\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":"f9b586bfb26e875354ece853db01f09e25ed304b8123af1925a3a66c2f1783e4","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: memory swap', [[[0, 'TEXT:A'], [10, 'EOC'], [20, 'TEXT:B'], [40, 'EOC'], [50, 'EOC']], 25], [[400, 1600, 'A'], [1600, 2000, 'B']]), ('regression variant: memory swap', [[[30, 'TEXT: there'], [45, 'EOC'], [52, 'EOC'], [82, 'ENM'], [82, 'TEXT:Bye'], [127, 'EOC'], [127, 'EOC'], [156, 'TEXT:Hi']], 29], [[1551, 1793, ' there'], [4379, 4379, 'Bye']]), ('partial repair probe: memory swap', [[[30, 'TEXT:Hi'], [59, 'TEXT:Hi'], [59, 'EOC'], [74, 'ENM'], [119, 'EOC'], [149, 'EOC'], [194, 'EOC']], 29], [[2034, 4103, 'HiHi'], [5137, 6689, 'HiHi']]), ('partial repair variant: memory swap', [[[3, 'TEXT:Hi'], [48, 'EOC'], [49, 'EOC'], [49, 'TEXT:Hi'], [94, 'TEXT:Bye'], [123, 'EOC'], [130, 'EDM']], 25], [[1920, 1960, 'Hi'], [4920, 5200, 'HiHiBye']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [30, 'TEXT:Hi'], [37, 'ENM']], 24], []), ('normal control', [[[0, 'EOC'], [7, 'TEXT:Bye'], [52, 'EDM'], [59, 'TEXT:Bye'], [74, 'EOC']], 24], []), ('normal control', [[[30, 'TEXT:Hi'], [31, 'TEXT: there'], [61, 'EDM'], [106, 'TEXT: there'], [121, 'ENM'], [136, 'TEXT:Hi'], [166, 'EOC']], 24], [])], [('regression: memory swap', [[[0, 'EOC'], [30, 'TEXT:Bye'], [31, 'EOC'], [46, 'EOC'], [91, 'TEXT:Hi'], [92, 'TEXT: there'], [99, 'EDM'], [129, 'ENM']], 30], [[1033, 1533, 'Bye']]), ('regression variant: memory swap', [[[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: memory swap', [[[30, 'TEXT:Bye'], [45, 'EOC'], [74, 'EOC'], [74, 'EDM'], [103, 'EOC'], [148, 'EDM'], [163, 'TEXT:Bye']], 24], [[1875, 3083, 'Bye'], [4291, 6166, 'Bye']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Hi'], [30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [105, 'EOC'], [120, 'EOC'], [165, 'EOC'], [180, 'TEXT: there'], [195, 'EDM']], 24], [[4375, 5000, 'HiByeBye'], [6875, 8125, 'HiByeBye']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[30, 'EDM'], [30, 'EOC'], [60, 'ENM'], [89, 'ENM']], 25], []), ('normal control', [[[3, 'ENM'], [4, 'TEXT: there'], [34, 'EDM'], [64, 'ENM'], [79, 'EOC']], 30], []), ('normal control', [[[3, 'EOC'], [32, 'EOC'], [77, 'TEXT:Bye']], 25], [])], [('regression: memory swap', [[[3, 'TEXT:Hi'], [48, 'EOC'], [49, 'EOC'], [49, 'TEXT:Hi'], [94, 'TEXT:Bye'], [123, 'EOC'], [130, 'EDM']], 25], [[1920, 1960, 'Hi'], [4920, 5200, 'HiHiBye']]), ('regression variant: memory swap', [[[3, 'TEXT:Hi'], [10, 'EOC'], [17, 'TEXT:Bye'], [62, 'TEXT:Bye'], [91, 'TEXT:Bye'], [136, 'EOC'], [151, 'EDM']], 25], [[400, 5440, 'Hi'], [5440, 6040, 'ByeByeBye']]), ('partial repair probe: memory swap', [[[0, 'TEXT: there'], [7, 'EOC'], [37, 'TEXT:Hi'], [52, 'EOC'], [67, 'EOC'], [74, 'EOC'], [75, 'EOC'], [90, 'TEXT:Hi']], 24], [[291, 2166, ' there'], [2166, 2791, 'Hi'], [2791, 3083, ' there'], [3083, 3125, 'Hi']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Hi'], [59, 'TEXT:Hi'], [59, 'EOC'], [74, 'ENM'], [119, 'EOC'], [149, 'EOC'], [194, 'EOC']], 29], [[2034, 4103, 'HiHi'], [5137, 6689, 'HiHi']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[0, 'EOC'], [7, 'EDM'], [14, 'EOC'], [59, 'EOC'], [104, 'EOC'], [133, 'EOC'], [162, 'EOC'], [207, 'EOC']], 25], []), ('normal control', [[[30, 'EOC'], [31, 'TEXT: there'], [31, 'EDM'], [76, 'TEXT:Bye'], [76, 'ENM'], [91, 'EDM']], 30], []), ('normal control', [[[30, 'EOC'], [59, 'EOC'], [60, 'TEXT: there'], [89, 'TEXT: there'], [96, 'ENM'], [96, 'TEXT:Bye'], [96, 'TEXT:Bye'], [96, 'TEXT: there']], 30], [])], [('regression: memory swap', [[[30, 'TEXT:Hi'], [30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [105, 'EOC'], [120, 'EOC'], [165, 'EOC'], [180, 'TEXT: there'], [195, 'EDM']], 24], [[4375, 5000, 'HiByeBye'], [6875, 8125, 'HiByeBye']]), ('regression variant: memory swap', [[[3, 'TEXT: there'], [4, 'EOC'], [11, 'EOC'], [12, 'TEXT:Hi'], [42, 'EOC'], [57, 'ENM']], 24], [[166, 458, ' there']]), ('partial repair probe: memory swap', [[[0, 'ENM'], [1, 'TEXT:Hi'], [16, 'EOC'], [16, 'EOC'], [45, 'TEXT:Bye'], [74, 'EOC'], [89, 'EOC'], [119, 'ENM']], 30], [[533, 533, 'Hi'], [2466, 2966, 'HiBye']]), ('partial repair variant: memory swap', [[[30, 'TEXT:Bye'], [45, 'EOC'], [74, 'EOC'], [74, 'EDM'], [103, 'EOC'], [148, 'EDM'], [163, 'TEXT:Bye']], 24], [[1875, 3083, 'Bye'], [4291, 6166, 'Bye']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('normal control', [[[0, 'TEXT: there'], [7, 'ENM'], [8, 'EOC'], [9, 'ENM'], [16, 'TEXT:Hi']], 30], []), ('normal control', [[[30, 'EDM'], [60, 'TEXT: there'], [90, 'TEXT:Bye']], 24], []), ('normal control', [[[3, 'EDM'], [18, 'TEXT:Hi'], [19, 'TEXT:Hi'], [34, 'TEXT: there'], [79, 'TEXT:Bye']], 25], [])], [('regression: memory swap', [[[3, 'ENM'], [3, 'TEXT:Bye'], [10, 'EOC'], [10, 'EOC'], [55, 'TEXT:Bye'], [56, 'EOC']], 29], [[344, 344, 'Bye']]), ('regression variant: memory swap', [[[3, 'TEXT:Hi'], [48, 'TEXT:Bye'], [49, 'TEXT:Bye'], [79, 'EOC'], [79, 'TEXT: there'], [124, 'EOC'], [169, 'TEXT:Bye'], [198, 'EOC']], 30], [[2633, 4133, 'HiByeBye'], [4133, 6600, ' there']]), ('partial repair probe: memory swap', [[[3, 'TEXT: there'], [18, 'EOC'], [18, 'EOC'], [19, 'EOC'], [48, 'EOC'], [78, 'EDM']], 29], [[620, 620, ' there'], [655, 1655, ' there']]), ('partial repair variant: memory swap', [[[0, 'TEXT: there'], [7, 'EOC'], [37, 'TEXT:Hi'], [52, 'EOC'], [67, 'EOC'], [74, 'EOC'], [75, 'EOC'], [90, 'TEXT:Hi']], 24], [[291, 2166, ' there'], [2166, 2791, 'Hi'], [2791, 3083, ' there'], [3083, 3125, 'Hi']]), ('boundary control', [[[0, 'TEXT:Hi'], [30, 'EOC'], [60, 'EDM']], 30], [[1000, 2000, 'Hi']]), ('boundary control', [[[0, 'EOC'], [5, 'EDM']], 30], []), ('normal control', [[[0, 'EOC'], [7, 'TEXT:Bye'], [14, 'TEXT:Bye']], 25], []), ('normal control', [[[30, 'TEXT:Bye'], [60, 'TEXT:Bye'], [90, 'ENM'], [120, 'EOC'], [127, 'TEXT: there'], [127, 'TEXT:Bye'], [134, 'TEXT:Bye']], 25], []), ('normal control', [[[3, 'EDM'], [32, 'TEXT:Bye'], [77, 'TEXT:Bye'], [106, 'TEXT:Hi'], [151, 'TEXT:Hi']], 29], [])]]\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-memory-swap","generated_at":"2026-09-29T14:49:33.382344+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":"Swap displayed and non-displayed memories on EOC.","root_cause":"End-of-caption copies non-displayed memory to the display without swapping it back.","sha256":"b43c3acfe5254db335d7beebbabe238aa9fc811087fa59f3927fef887c40a5f8","title":"Pop-on caption buffer timing: memory swap · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.464,"exit_code":1,"observations":[{"actual":[[400,1600,"A"],[1600,2000,"B"]],"check":"regression: memory swap","expected":[[400,1600,"A"],[1600,2000,"B"]],"passed":true},{"actual":[[1551,1793," there"],[4379,4379,"Bye"]],"check":"regression variant: memory swap","expected":[[1551,1793," there"],[4379,4379,"Bye"]],"passed":true},{"actual":[[2034,4103,"HiHi"]],"check":"partial repair probe: memory swap","expected":[[2034,4103,"HiHi"],[5137,6689,"HiHi"]],"passed":false},{"actual":[[1920,1960,"Hi"],[4920,5200,"HiBye"]],"check":"partial repair variant: memory swap","expected":[[1920,1960,"Hi"],[4920,5200,"HiHiBye"]],"passed":false},{"actual":[[1000,2000,"Hi"]],"check":"boundary control","expected":[[1000,2000,"Hi"]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: memory swap\", \"actual\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"expected\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"passed\": true}, {\"check\": \"regression variant: memory swap\", \"actual\": [[1551, 1793, \" there\"], [4379, 4379, \"Bye\"]], \"expected\": [[1551, 1793, \" there\"], [4379, 4379, \"Bye\"]], \"passed\": true}, {\"check\": \"partial repair probe: memory swap\", \"actual\": [[2034, 4103, \"HiHi\"]], \"expected\": [[2034, 4103, \"HiHi\"], [5137, 6689, \"HiHi\"]], \"passed\": false}, {\"check\": \"partial repair variant: memory swap\", \"actual\": [[1920, 1960, \"Hi\"], [4920, 5200, \"HiBye\"]], \"expected\": [[1920, 1960, \"Hi\"], [4920, 5200, \"HiHiBye\"]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[1000, 2000, \"Hi\"]], \"expected\": [[1000, 2000, \"Hi\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.276,"exit_code":1,"observations":[{"actual":[[400,1600,"A"],[1600,2000,"AB"]],"check":"regression: memory swap","expected":[[400,1600,"A"],[1600,2000,"B"]],"passed":false},{"actual":[[1551,1793," there"],[1793,4379," there"],[4379,4379,"Bye"]],"check":"regression variant: memory swap","expected":[[1551,1793," there"],[4379,4379,"Bye"]],"passed":false},{"actual":[[2034,4103,"HiHi"]],"check":"partial repair probe: memory swap","expected":[[2034,4103,"HiHi"],[5137,6689,"HiHi"]],"passed":false},{"actual":[[1920,1960,"Hi"],[1960,4920,"Hi"],[4920,5200,"HiHiBye"]],"check":"partial repair variant: memory swap","expected":[[1920,1960,"Hi"],[4920,5200,"HiHiBye"]],"passed":false},{"actual":[[1000,2000,"Hi"]],"check":"boundary control","expected":[[1000,2000,"Hi"]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: memory swap\", \"actual\": [[400, 1600, \"A\"], [1600, 2000, \"AB\"]], \"expected\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"passed\": false}, {\"check\": \"regression variant: memory swap\", \"actual\": [[1551, 1793, \" there\"], [1793, 4379, \" there\"], [4379, 4379, \"Bye\"]], \"expected\": [[1551, 1793, \" there\"], [4379, 4379, \"Bye\"]], \"passed\": false}, {\"check\": \"partial repair probe: memory swap\", \"actual\": [[2034, 4103, \"HiHi\"]], \"expected\": [[2034, 4103, \"HiHi\"], [5137, 6689, \"HiHi\"]], \"passed\": false}, {\"check\": \"partial repair variant: memory swap\", \"actual\": [[1920, 1960, \"Hi\"], [1960, 4920, \"Hi\"], [4920, 5200, \"HiHiBye\"]], \"expected\": [[1920, 1960, \"Hi\"], [4920, 5200, \"HiHiBye\"]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[1000, 2000, \"Hi\"]], \"expected\": [[1000, 2000, \"Hi\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.047,"exit_code":0,"observations":[{"actual":[[400,1600,"A"],[1600,2000,"B"]],"check":"regression: memory swap","expected":[[400,1600,"A"],[1600,2000,"B"]],"passed":true},{"actual":[[1551,1793," there"],[4379,4379,"Bye"]],"check":"regression variant: memory swap","expected":[[1551,1793," there"],[4379,4379,"Bye"]],"passed":true},{"actual":[[2034,4103,"HiHi"],[5137,6689,"HiHi"]],"check":"partial repair probe: memory swap","expected":[[2034,4103,"HiHi"],[5137,6689,"HiHi"]],"passed":true},{"actual":[[1920,1960,"Hi"],[4920,5200,"HiHiBye"]],"check":"partial repair variant: memory swap","expected":[[1920,1960,"Hi"],[4920,5200,"HiHiBye"]],"passed":true},{"actual":[[1000,2000,"Hi"]],"check":"boundary control","expected":[[1000,2000,"Hi"]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: memory swap\", \"actual\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"expected\": [[400, 1600, \"A\"], [1600, 2000, \"B\"]], \"passed\": true}, {\"check\": \"regression variant: memory swap\", \"actual\": [[1551, 1793, \" there\"], [4379, 4379, \"Bye\"]], \"expected\": [[1551, 1793, \" there\"], [4379, 4379, \"Bye\"]], \"passed\": true}, {\"check\": \"partial repair probe: memory swap\", \"actual\": [[2034, 4103, \"HiHi\"], [5137, 6689, \"HiHi\"]], \"expected\": [[2034, 4103, \"HiHi\"], [5137, 6689, \"HiHi\"]], \"passed\": true}, {\"check\": \"partial repair variant: memory swap\", \"actual\": [[1920, 1960, \"Hi\"], [4920, 5200, \"HiHiBye\"]], \"expected\": [[1920, 1960, \"Hi\"], [4920, 5200, \"HiHiBye\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[1000, 2000, \"Hi\"]], \"expected\": [[1000, 2000, \"Hi\"]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}