{"abstract":"Mapped times with half-millisecond or larger fractions are one millisecond early.","category":"Subtitle cue timing","checks":9,"contract":"anchors [[a1,b1],[a2,b2]] (a1 != a2, b1 != b2) map subtitle time a to video time b linearly through both points. Each time is mapped exactly, rounded half up, clamped at 0; cues whose mapped end is not after the mapped start are dropped.","evaluation_group":"w2-subtitle-cue-timing-two-point-sync","failed_approach":"Banker rounding sends exact halves with an even floor downwards.","family":"w2-subtitle-cue-timing-two-point-sync-mapped-rounding","id":"FA-78076","implementations":{"attempt":{"sha256":"d0aeff413ac530ac4a6c9a3c108e21f8c68bfc8fae6da79544310143e0ce10ef","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(cues, anchors):\n    (a1,b1),(a2,b2)=anchors\n    k=Fraction(b2-b1,a2-a1)\n    def m(t):\n        return round(b1+(t-a1)*k)\n    out=[]\n    for s,e in cues:\n        ns,ne=max(0,m(s)),max(0,m(e))\n        if ne>ns:\n            out.append([ns,ne])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: mapped rounding', [[[1, 3]], [[0, 0], [2, 1]]], [[1, 2]]), ('regression variant: mapped rounding', [[[7782, 10282], [7777, 7780], [250, 252], [1500, 2000]], [[1000, 2000], [3000, 2500]]], [[3696, 4321], [3694, 3695], [2125, 2250]]), ('partial repair probe: mapped rounding', [[[999, 1001], [7777, 7779], [1500, 2000], [250, 251]], [[3000, 1000], [1000, 0]]], [[0, 1], [3389, 3390], [250, 500]]), ('partial repair variant: mapped rounding', [[[7777, 8777], [7777, 7780], [1500, 2000], [999, 1002]], [[0, 1000], [4000, 4500]]], [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[7777, 10277]], [[5000, 6000], [5003, 4503]]], []), ('normal control', [[[250, 2750], [0, 3]], [[5000, 4000], [6000, 5500]]], [[0, 625]]), ('normal control', [[[999, 1999], [1, 2501], [7777, 8277], [250, 253]], [[0, -1000], [3, 503]]], [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]])], [('regression: mapped rounding', [[[999, 1002], [999, 1999], [7777, 8277]], [[1000, 1500], [2000, 2000]]], [[1500, 1501], [1500, 2000], [4889, 5139]]), ('regression variant: mapped rounding', [[[1, 1001], [1500, 1503]], [[1000, 500], [0, 0]]], [[1, 501], [750, 752]]), ('partial repair probe: mapped rounding', [[[7782, 10282], [7777, 7780], [250, 252], [1500, 2000]], [[1000, 2000], [3000, 2500]]], [[3696, 4321], [3694, 3695], [2125, 2250]]), ('partial repair variant: mapped rounding', [[[7777, 7780]], [[2000, 2500], [1000, 0]]], [[16943, 16950]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('normal control', [[[1, 1001]], [[0, -1000], [10000, 9500]]], [[0, 51]]), ('normal control', [[[0, 2500], [250, 750], [0, 3]], [[10000, 10500], [20000, 20500]]], [[500, 3000], [750, 1250], [500, 503]]), ('normal control', [[[0, 2500], [0, 3]], [[1000, 1500], [0, -3000]]], [[0, 8250]])], [('regression: mapped rounding', [[[999, 1001], [7777, 7779], [1500, 2000], [250, 251]], [[3000, 1000], [1000, 0]]], [[0, 1], [3389, 3390], [250, 500]]), ('regression variant: mapped rounding', [[[7777, 7780], [6684, 6687], [0, 500], [999, 3499]], [[0, -1000], [3, 1503]]], [[6487610, 6490113], [5575684, 5578187], [0, 416167], [832499, 2918332]]), ('partial repair probe: mapped rounding', [[[1, 1001], [1500, 1503]], [[1000, 500], [0, 0]]], [[1, 501], [750, 752]]), ('partial repair variant: mapped rounding', [[[7777, 7779], [9295, 11795], [7777, 7780]], [[0, 0], [1000, 1500]]], [[11666, 11669], [13943, 17693], [11666, 11670]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[5033, 5036], [999, 1000]], [[9000, 9000], [5000, 4000]]], [[4041, 4045]]), ('normal control', [[[1, 2], [1500, 4000]], [[15000, 15000], [5000, 5000]]], [[1, 2], [1500, 4000]]), ('normal control', [[[250, 251], [1500, 2500], [0, 2], [0, 2]], [[10000, 10500], [14000, 15500]]], [[0, 1125]])], [('regression: mapped rounding', [[[7777, 8277], [1523, 1524]], [[5000, 6000], [9000, 10500]]], [[9124, 9687], [2088, 2090]]), ('regression variant: mapped rounding', [[[1, 501], [7777, 7778]], [[1000, 0], [11000, 12500]]], [[8471, 8473]]), ('partial repair probe: mapped rounding', [[[16012, 18512], [0, 2], [999, 1002], [1, 4]], [[10000, 10000], [11000, 10500]]], [[13006, 14256], [5000, 5001], [5500, 5501], [5001, 5002]]), ('partial repair variant: mapped rounding', [[[999, 1999], [0, 3], [7777, 7779]], [[0, 0], [2000, 3000]]], [[1499, 2999], [0, 5], [11666, 11669]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('normal control', [[[1500, 1501], [999, 1001], [7777, 7780], [250, 252]], [[11000, 10500], [10000, 7000]]], []), ('normal control', [[[1500, 1503], [999, 3499]], [[1000, 0], [3000, 3500]]], [[875, 880], [0, 4373]]), ('normal control', [[[999, 1499], [7777, 10277]], [[10000, 10500], [10003, 9503]]], [])], [('regression: mapped rounding', [[[3231, 3731], [1, 1001], [1500, 1501]], [[3, 1003], [0, -3000]]], [[4308231, 4975398], [0, 1332668], [1998500, 1999834]]), ('regression variant: mapped rounding', [[[16012, 18512], [0, 2], [999, 1002], [1, 4]], [[10000, 10000], [11000, 10500]]], [[13006, 14256], [5000, 5001], [5500, 5501], [5001, 5002]]), ('partial repair probe: mapped rounding', [[[1, 2501], [5729, 5732], [250, 252]], [[7000, 8500], [5000, 6000]]], [[0, 2876], [6911, 6915], [63, 65]]), ('partial repair variant: mapped rounding', [[[11711, 11713], [1500, 1503]], [[0, -3000], [1000, 2500]]], [[61411, 61422], [5250, 5267]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[250, 1250]], [[1000, 1000], [5000, 5500]]], [[156, 1281]]), ('normal control', [[[13786, 13787], [7777, 8277], [1, 2501], [250, 251]], [[10000, 11000], [10003, 9503]]], []), ('normal control', [[[7777, 8777], [7777, 7779]], [[0, 500], [1000, -1000]]], [])]]\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":"8366c7519f50c8028ef772662e7763facdeb81262e336ebe5652dcb3a786e358","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(cues, anchors):\n    (a1,b1),(a2,b2)=anchors\n    k=Fraction(b2-b1,a2-a1)\n    def m(t):\n        return math.floor(b1+(t-a1)*k)\n    out=[]\n    for s,e in cues:\n        ns,ne=max(0,m(s)),max(0,m(e))\n        if ne>ns:\n            out.append([ns,ne])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: mapped rounding', [[[1, 3]], [[0, 0], [2, 1]]], [[1, 2]]), ('regression variant: mapped rounding', [[[7782, 10282], [7777, 7780], [250, 252], [1500, 2000]], [[1000, 2000], [3000, 2500]]], [[3696, 4321], [3694, 3695], [2125, 2250]]), ('partial repair probe: mapped rounding', [[[999, 1001], [7777, 7779], [1500, 2000], [250, 251]], [[3000, 1000], [1000, 0]]], [[0, 1], [3389, 3390], [250, 500]]), ('partial repair variant: mapped rounding', [[[7777, 8777], [7777, 7780], [1500, 2000], [999, 1002]], [[0, 1000], [4000, 4500]]], [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[7777, 10277]], [[5000, 6000], [5003, 4503]]], []), ('normal control', [[[250, 2750], [0, 3]], [[5000, 4000], [6000, 5500]]], [[0, 625]]), ('normal control', [[[999, 1999], [1, 2501], [7777, 8277], [250, 253]], [[0, -1000], [3, 503]]], [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]])], [('regression: mapped rounding', [[[999, 1002], [999, 1999], [7777, 8277]], [[1000, 1500], [2000, 2000]]], [[1500, 1501], [1500, 2000], [4889, 5139]]), ('regression variant: mapped rounding', [[[1, 1001], [1500, 1503]], [[1000, 500], [0, 0]]], [[1, 501], [750, 752]]), ('partial repair probe: mapped rounding', [[[7782, 10282], [7777, 7780], [250, 252], [1500, 2000]], [[1000, 2000], [3000, 2500]]], [[3696, 4321], [3694, 3695], [2125, 2250]]), ('partial repair variant: mapped rounding', [[[7777, 7780]], [[2000, 2500], [1000, 0]]], [[16943, 16950]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('normal control', [[[1, 1001]], [[0, -1000], [10000, 9500]]], [[0, 51]]), ('normal control', [[[0, 2500], [250, 750], [0, 3]], [[10000, 10500], [20000, 20500]]], [[500, 3000], [750, 1250], [500, 503]]), ('normal control', [[[0, 2500], [0, 3]], [[1000, 1500], [0, -3000]]], [[0, 8250]])], [('regression: mapped rounding', [[[999, 1001], [7777, 7779], [1500, 2000], [250, 251]], [[3000, 1000], [1000, 0]]], [[0, 1], [3389, 3390], [250, 500]]), ('regression variant: mapped rounding', [[[7777, 7780], [6684, 6687], [0, 500], [999, 3499]], [[0, -1000], [3, 1503]]], [[6487610, 6490113], [5575684, 5578187], [0, 416167], [832499, 2918332]]), ('partial repair probe: mapped rounding', [[[1, 1001], [1500, 1503]], [[1000, 500], [0, 0]]], [[1, 501], [750, 752]]), ('partial repair variant: mapped rounding', [[[7777, 7779], [9295, 11795], [7777, 7780]], [[0, 0], [1000, 1500]]], [[11666, 11669], [13943, 17693], [11666, 11670]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[5033, 5036], [999, 1000]], [[9000, 9000], [5000, 4000]]], [[4041, 4045]]), ('normal control', [[[1, 2], [1500, 4000]], [[15000, 15000], [5000, 5000]]], [[1, 2], [1500, 4000]]), ('normal control', [[[250, 251], [1500, 2500], [0, 2], [0, 2]], [[10000, 10500], [14000, 15500]]], [[0, 1125]])], [('regression: mapped rounding', [[[7777, 8277], [1523, 1524]], [[5000, 6000], [9000, 10500]]], [[9124, 9687], [2088, 2090]]), ('regression variant: mapped rounding', [[[1, 501], [7777, 7778]], [[1000, 0], [11000, 12500]]], [[8471, 8473]]), ('partial repair probe: mapped rounding', [[[16012, 18512], [0, 2], [999, 1002], [1, 4]], [[10000, 10000], [11000, 10500]]], [[13006, 14256], [5000, 5001], [5500, 5501], [5001, 5002]]), ('partial repair variant: mapped rounding', [[[999, 1999], [0, 3], [7777, 7779]], [[0, 0], [2000, 3000]]], [[1499, 2999], [0, 5], [11666, 11669]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('normal control', [[[1500, 1501], [999, 1001], [7777, 7780], [250, 252]], [[11000, 10500], [10000, 7000]]], []), ('normal control', [[[1500, 1503], [999, 3499]], [[1000, 0], [3000, 3500]]], [[875, 880], [0, 4373]]), ('normal control', [[[999, 1499], [7777, 10277]], [[10000, 10500], [10003, 9503]]], [])], [('regression: mapped rounding', [[[3231, 3731], [1, 1001], [1500, 1501]], [[3, 1003], [0, -3000]]], [[4308231, 4975398], [0, 1332668], [1998500, 1999834]]), ('regression variant: mapped rounding', [[[16012, 18512], [0, 2], [999, 1002], [1, 4]], [[10000, 10000], [11000, 10500]]], [[13006, 14256], [5000, 5001], [5500, 5501], [5001, 5002]]), ('partial repair probe: mapped rounding', [[[1, 2501], [5729, 5732], [250, 252]], [[7000, 8500], [5000, 6000]]], [[0, 2876], [6911, 6915], [63, 65]]), ('partial repair variant: mapped rounding', [[[11711, 11713], [1500, 1503]], [[0, -3000], [1000, 2500]]], [[61411, 61422], [5250, 5267]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[250, 1250]], [[1000, 1000], [5000, 5500]]], [[156, 1281]]), ('normal control', [[[13786, 13787], [7777, 8277], [1, 2501], [250, 251]], [[10000, 11000], [10003, 9503]]], []), ('normal control', [[[7777, 8777], [7777, 7779]], [[0, 500], [1000, -1000]]], [])]]\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":"f95e03bd9aa4f5800d31dcf1263ccee5e1e12ead44b62493067ab735e9448ccc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(cues, anchors):\n    (a1,b1),(a2,b2)=anchors\n    k=Fraction(b2-b1,a2-a1)\n    def m(t):\n        return math.floor(b1+(t-a1)*k+Fraction(1,2))\n    out=[]\n    for s,e in cues:\n        ns,ne=max(0,m(s)),max(0,m(e))\n        if ne>ns:\n            out.append([ns,ne])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: mapped rounding', [[[1, 3]], [[0, 0], [2, 1]]], [[1, 2]]), ('regression variant: mapped rounding', [[[7782, 10282], [7777, 7780], [250, 252], [1500, 2000]], [[1000, 2000], [3000, 2500]]], [[3696, 4321], [3694, 3695], [2125, 2250]]), ('partial repair probe: mapped rounding', [[[999, 1001], [7777, 7779], [1500, 2000], [250, 251]], [[3000, 1000], [1000, 0]]], [[0, 1], [3389, 3390], [250, 500]]), ('partial repair variant: mapped rounding', [[[7777, 8777], [7777, 7780], [1500, 2000], [999, 1002]], [[0, 1000], [4000, 4500]]], [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[7777, 10277]], [[5000, 6000], [5003, 4503]]], []), ('normal control', [[[250, 2750], [0, 3]], [[5000, 4000], [6000, 5500]]], [[0, 625]]), ('normal control', [[[999, 1999], [1, 2501], [7777, 8277], [250, 253]], [[0, -1000], [3, 503]]], [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]])], [('regression: mapped rounding', [[[999, 1002], [999, 1999], [7777, 8277]], [[1000, 1500], [2000, 2000]]], [[1500, 1501], [1500, 2000], [4889, 5139]]), ('regression variant: mapped rounding', [[[1, 1001], [1500, 1503]], [[1000, 500], [0, 0]]], [[1, 501], [750, 752]]), ('partial repair probe: mapped rounding', [[[7782, 10282], [7777, 7780], [250, 252], [1500, 2000]], [[1000, 2000], [3000, 2500]]], [[3696, 4321], [3694, 3695], [2125, 2250]]), ('partial repair variant: mapped rounding', [[[7777, 7780]], [[2000, 2500], [1000, 0]]], [[16943, 16950]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('normal control', [[[1, 1001]], [[0, -1000], [10000, 9500]]], [[0, 51]]), ('normal control', [[[0, 2500], [250, 750], [0, 3]], [[10000, 10500], [20000, 20500]]], [[500, 3000], [750, 1250], [500, 503]]), ('normal control', [[[0, 2500], [0, 3]], [[1000, 1500], [0, -3000]]], [[0, 8250]])], [('regression: mapped rounding', [[[999, 1001], [7777, 7779], [1500, 2000], [250, 251]], [[3000, 1000], [1000, 0]]], [[0, 1], [3389, 3390], [250, 500]]), ('regression variant: mapped rounding', [[[7777, 7780], [6684, 6687], [0, 500], [999, 3499]], [[0, -1000], [3, 1503]]], [[6487610, 6490113], [5575684, 5578187], [0, 416167], [832499, 2918332]]), ('partial repair probe: mapped rounding', [[[1, 1001], [1500, 1503]], [[1000, 500], [0, 0]]], [[1, 501], [750, 752]]), ('partial repair variant: mapped rounding', [[[7777, 7779], [9295, 11795], [7777, 7780]], [[0, 0], [1000, 1500]]], [[11666, 11669], [13943, 17693], [11666, 11670]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[5033, 5036], [999, 1000]], [[9000, 9000], [5000, 4000]]], [[4041, 4045]]), ('normal control', [[[1, 2], [1500, 4000]], [[15000, 15000], [5000, 5000]]], [[1, 2], [1500, 4000]]), ('normal control', [[[250, 251], [1500, 2500], [0, 2], [0, 2]], [[10000, 10500], [14000, 15500]]], [[0, 1125]])], [('regression: mapped rounding', [[[7777, 8277], [1523, 1524]], [[5000, 6000], [9000, 10500]]], [[9124, 9687], [2088, 2090]]), ('regression variant: mapped rounding', [[[1, 501], [7777, 7778]], [[1000, 0], [11000, 12500]]], [[8471, 8473]]), ('partial repair probe: mapped rounding', [[[16012, 18512], [0, 2], [999, 1002], [1, 4]], [[10000, 10000], [11000, 10500]]], [[13006, 14256], [5000, 5001], [5500, 5501], [5001, 5002]]), ('partial repair variant: mapped rounding', [[[999, 1999], [0, 3], [7777, 7779]], [[0, 0], [2000, 3000]]], [[1499, 2999], [0, 5], [11666, 11669]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('normal control', [[[1500, 1501], [999, 1001], [7777, 7780], [250, 252]], [[11000, 10500], [10000, 7000]]], []), ('normal control', [[[1500, 1503], [999, 3499]], [[1000, 0], [3000, 3500]]], [[875, 880], [0, 4373]]), ('normal control', [[[999, 1499], [7777, 10277]], [[10000, 10500], [10003, 9503]]], [])], [('regression: mapped rounding', [[[3231, 3731], [1, 1001], [1500, 1501]], [[3, 1003], [0, -3000]]], [[4308231, 4975398], [0, 1332668], [1998500, 1999834]]), ('regression variant: mapped rounding', [[[16012, 18512], [0, 2], [999, 1002], [1, 4]], [[10000, 10000], [11000, 10500]]], [[13006, 14256], [5000, 5001], [5500, 5501], [5001, 5002]]), ('partial repair probe: mapped rounding', [[[1, 2501], [5729, 5732], [250, 252]], [[7000, 8500], [5000, 6000]]], [[0, 2876], [6911, 6915], [63, 65]]), ('partial repair variant: mapped rounding', [[[11711, 11713], [1500, 1503]], [[0, -3000], [1000, 2500]]], [[61411, 61422], [5250, 5267]]), ('boundary control', [[[1000, 2000]], [[0, 0], [1000, 2000]]], [[2000, 4000]]), ('boundary control', [[[0, 1000]], [[1000, 0], [3000, 1000]]], []), ('normal control', [[[250, 1250]], [[1000, 1000], [5000, 5500]]], [[156, 1281]]), ('normal control', [[[13786, 13787], [7777, 8277], [1, 2501], [250, 251]], [[10000, 11000], [10003, 9503]]], []), ('normal control', [[[7777, 8777], [7777, 7779]], [[0, 500], [1000, -1000]]], [])]]\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-two-point-sync-mapped-rounding","generated_at":"2026-09-29T14:49:31.975810+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":"Round the exact mapped time half up.","root_cause":"Mapped times are floored instead of rounded half up.","sha256":"e4ac31a194ada9c5417f97a926012ca136894c55ca010621e5d8d1665a2ef045","title":"Two-point subtitle synchronisation: mapped rounding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.338,"exit_code":1,"observations":[{"actual":[[0,2]],"check":"regression: mapped rounding","expected":[[1,2]],"passed":false},{"actual":[[3696,4320],[3694,3695],[1812,1813],[2125,2250]],"check":"regression variant: mapped rounding","expected":[[3696,4321],[3694,3695],[2125,2250]],"passed":false},{"actual":[[3388,3390],[250,500]],"check":"partial repair probe: mapped rounding","expected":[[0,1],[3389,3390],[250,500]],"passed":false},{"actual":[[7805,8680],[7805,7808],[2312,2750],[1874,1877]],"check":"partial repair variant: mapped rounding","expected":[[7805,8680],[7805,7808],[2313,2750],[1874,1877]],"passed":false},{"actual":[[2000,4000]],"check":"boundary control","expected":[[2000,4000]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[[0,625]],"check":"normal control","expected":[[0,625]],"passed":true},{"actual":[[499499,1000499],[0,1252001],[3895277,4145777],[124250,125753]],"check":"normal control","expected":[[499499,1000499],[0,1252001],[3895277,4145777],[124250,125753]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: mapped rounding\", \"actual\": [[0, 2]], \"expected\": [[1, 2]], \"passed\": false}, {\"check\": \"regression variant: mapped rounding\", \"actual\": [[3696, 4320], [3694, 3695], [1812, 1813], [2125, 2250]], \"expected\": [[3696, 4321], [3694, 3695], [2125, 2250]], \"passed\": false}, {\"check\": \"partial repair probe: mapped rounding\", \"actual\": [[3388, 3390], [250, 500]], \"expected\": [[0, 1], [3389, 3390], [250, 500]], \"passed\": false}, {\"check\": \"partial repair variant: mapped rounding\", \"actual\": [[7805, 8680], [7805, 7808], [2312, 2750], [1874, 1877]], \"expected\": [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[2000, 4000]], \"expected\": [[2000, 4000]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 625]], \"expected\": [[0, 625]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]], \"expected\": [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.052,"exit_code":1,"observations":[{"actual":[[0,1]],"check":"regression: mapped rounding","expected":[[1,2]],"passed":false},{"actual":[[3695,4320],[3694,3695],[1812,1813],[2125,2250]],"check":"regression variant: mapped rounding","expected":[[3696,4321],[3694,3695],[2125,2250]],"passed":false},{"actual":[[3388,3389],[250,500]],"check":"partial repair probe: mapped rounding","expected":[[0,1],[3389,3390],[250,500]],"passed":false},{"actual":[[7804,8679],[7804,7807],[2312,2750],[1874,1876]],"check":"partial repair variant: mapped rounding","expected":[[7805,8680],[7805,7808],[2313,2750],[1874,1877]],"passed":false},{"actual":[[2000,4000]],"check":"boundary control","expected":[[2000,4000]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[[0,625]],"check":"normal control","expected":[[0,625]],"passed":true},{"actual":[[499499,1000499],[0,1252001],[3895277,4145777],[124250,125753]],"check":"normal control","expected":[[499499,1000499],[0,1252001],[3895277,4145777],[124250,125753]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: mapped rounding\", \"actual\": [[0, 1]], \"expected\": [[1, 2]], \"passed\": false}, {\"check\": \"regression variant: mapped rounding\", \"actual\": [[3695, 4320], [3694, 3695], [1812, 1813], [2125, 2250]], \"expected\": [[3696, 4321], [3694, 3695], [2125, 2250]], \"passed\": false}, {\"check\": \"partial repair probe: mapped rounding\", \"actual\": [[3388, 3389], [250, 500]], \"expected\": [[0, 1], [3389, 3390], [250, 500]], \"passed\": false}, {\"check\": \"partial repair variant: mapped rounding\", \"actual\": [[7804, 8679], [7804, 7807], [2312, 2750], [1874, 1876]], \"expected\": [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [[2000, 4000]], \"expected\": [[2000, 4000]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 625]], \"expected\": [[0, 625]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]], \"expected\": [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":47.459,"exit_code":0,"observations":[{"actual":[[1,2]],"check":"regression: mapped rounding","expected":[[1,2]],"passed":true},{"actual":[[3696,4321],[3694,3695],[2125,2250]],"check":"regression variant: mapped rounding","expected":[[3696,4321],[3694,3695],[2125,2250]],"passed":true},{"actual":[[0,1],[3389,3390],[250,500]],"check":"partial repair probe: mapped rounding","expected":[[0,1],[3389,3390],[250,500]],"passed":true},{"actual":[[7805,8680],[7805,7808],[2313,2750],[1874,1877]],"check":"partial repair variant: mapped rounding","expected":[[7805,8680],[7805,7808],[2313,2750],[1874,1877]],"passed":true},{"actual":[[2000,4000]],"check":"boundary control","expected":[[2000,4000]],"passed":true},{"actual":[],"check":"boundary control","expected":[],"passed":true},{"actual":[],"check":"normal control","expected":[],"passed":true},{"actual":[[0,625]],"check":"normal control","expected":[[0,625]],"passed":true},{"actual":[[499499,1000499],[0,1252001],[3895277,4145777],[124250,125753]],"check":"normal control","expected":[[499499,1000499],[0,1252001],[3895277,4145777],[124250,125753]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: mapped rounding\", \"actual\": [[1, 2]], \"expected\": [[1, 2]], \"passed\": true}, {\"check\": \"regression variant: mapped rounding\", \"actual\": [[3696, 4321], [3694, 3695], [2125, 2250]], \"expected\": [[3696, 4321], [3694, 3695], [2125, 2250]], \"passed\": true}, {\"check\": \"partial repair probe: mapped rounding\", \"actual\": [[0, 1], [3389, 3390], [250, 500]], \"expected\": [[0, 1], [3389, 3390], [250, 500]], \"passed\": true}, {\"check\": \"partial repair variant: mapped rounding\", \"actual\": [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]], \"expected\": [[7805, 8680], [7805, 7808], [2313, 2750], [1874, 1877]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [[2000, 4000]], \"expected\": [[2000, 4000]], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[0, 625]], \"expected\": [[0, 625]], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]], \"expected\": [[499499, 1000499], [0, 1252001], [3895277, 4145777], [124250, 125753]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}