{"abstract":"Newly opened rows get the index of the last cue slot rather than the new row.","category":"Subtitle cue timing","checks":8,"contract":"Assign overlapping cues to display rows. Cues are processed by (start, input index); a row is free at time t when the last cue placed there ended at or before t (end exclusive). Each cue takes the lowest free row, or opens a new row. Return the row of each cue in input order.","evaluation_group":"w2-subtitle-cue-timing-row-stacking","failed_approach":"Using the cue index as the row number only works while every earlier cue opened its own row.","family":"w2-subtitle-cue-timing-row-stacking-new-row-index","id":"FA-78061","implementations":{"attempt":{"sha256":"5767ba89378219227436120a6c045160e16ed893f7c602616e07aefd47c377f7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues):\n    order=sorted(range(len(cues)),key=lambda i:(cues[i][0],i))\n    row_end=[]\n    rows=[0]*len(cues)\n    for i in order:\n        s,e=cues[i]\n        for r in range(len(row_end)):\n            if row_end[r]<=s:\n                row_end[r]=e\n                rows[i]=r\n                break\n        else:\n            row_end.append(e)\n            rows[i]=i\n    return rows\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: new row index', [[[0, 100], [100, 200]]], [0, 0]), ('regression variant: new row index', [[[500, 700], [200, 400], [300, 400], [500, 900], [300, 500], [1000, 1400]]], [0, 0, 1, 1, 2, 0]), ('partial repair probe: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair variant: new row index', [[[500, 800], [300, 400], [1000, 1200], [300, 600], [500, 600], [200, 300]]], [0, 0, 0, 1, 2, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[1000, 1001]]], [0]), ('normal control', [[[1000, 1400]]], [0]), ('normal control', [[[100, 101]]], [0])], [('regression: new row index', [[[0, 300], [100, 200], [200, 400]]], [0, 1, 1]), ('regression variant: new row index', [[[0, 300], [0, 400]]], [0, 1]), ('partial repair probe: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair variant: new row index', [[[1000, 1900], [200, 500], [0, 1], [100, 500], [500, 700], [0, 900]]], [0, 2, 0, 0, 0, 1]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[300, 1200]]], [0]), ('normal control', [[[1000, 1900]]], [0]), ('normal control', [[[100, 200]]], [0])], [('regression: new row index', [[[0, 500], [0, 100], [100, 200]]], [0, 1, 1]), ('regression variant: new row index', [[[200, 300], [500, 900]]], [0, 0]), ('partial repair probe: new row index', [[[100, 1000], [500, 600], [200, 500], [200, 500], [0, 200], [100, 101]]], [1, 0, 0, 2, 0, 2]), ('partial repair variant: new row index', [[[200, 201], [300, 500], [200, 201], [1000, 1300], [300, 400], [0, 200]]], [0, 0, 1, 0, 1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[0, 1]]], [0]), ('normal control', [[[100, 500]]], [0]), ('normal control', [[[200, 600]]], [0])], [('regression: new row index', [[[100, 300], [300, 500], [100, 500]]], [0, 0, 1]), ('regression variant: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair probe: new row index', [[[0, 300], [500, 1400], [0, 1], [1000, 1001], [1000, 1300]]], [0, 0, 1, 1, 2]), ('partial repair variant: new row index', [[[300, 500], [100, 500]]], [1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[1000, 1200]]], [0]), ('normal control', [[[200, 300]]], [0]), ('normal control', [[[100, 400]]], [0])], [('regression: new row index', [[[200, 500], [0, 900], [1000, 1100], [500, 900]]], [1, 0, 0, 1]), ('regression variant: new row index', [[[0, 400], [300, 600]]], [0, 1]), ('partial repair probe: new row index', [[[300, 1200], [1000, 1100], [300, 301], [100, 101]]], [0, 1, 1, 0]), ('partial repair variant: new row index', [[[200, 500], [1000, 1100], [1000, 1200], [0, 900]]], [1, 0, 1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[200, 1100]]], [0]), ('normal control', [[[300, 301]]], [0]), ('normal control', [[[300, 400]]], [0])]]\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":"3f035036bce944549cf292aa1994611282a78a2498502c018c6d740041d03bfa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues):\n    order=sorted(range(len(cues)),key=lambda i:(cues[i][0],i))\n    row_end=[]\n    rows=[0]*len(cues)\n    for i in order:\n        s,e=cues[i]\n        for r in range(len(row_end)):\n            if row_end[r]<=s:\n                row_end[r]=e\n                rows[i]=r\n                break\n        else:\n            row_end.append(e)\n            rows[i]=len(rows)-1\n    return rows\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: new row index', [[[0, 100], [100, 200]]], [0, 0]), ('regression variant: new row index', [[[500, 700], [200, 400], [300, 400], [500, 900], [300, 500], [1000, 1400]]], [0, 0, 1, 1, 2, 0]), ('partial repair probe: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair variant: new row index', [[[500, 800], [300, 400], [1000, 1200], [300, 600], [500, 600], [200, 300]]], [0, 0, 0, 1, 2, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[1000, 1001]]], [0]), ('normal control', [[[1000, 1400]]], [0]), ('normal control', [[[100, 101]]], [0])], [('regression: new row index', [[[0, 300], [100, 200], [200, 400]]], [0, 1, 1]), ('regression variant: new row index', [[[0, 300], [0, 400]]], [0, 1]), ('partial repair probe: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair variant: new row index', [[[1000, 1900], [200, 500], [0, 1], [100, 500], [500, 700], [0, 900]]], [0, 2, 0, 0, 0, 1]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[300, 1200]]], [0]), ('normal control', [[[1000, 1900]]], [0]), ('normal control', [[[100, 200]]], [0])], [('regression: new row index', [[[0, 500], [0, 100], [100, 200]]], [0, 1, 1]), ('regression variant: new row index', [[[200, 300], [500, 900]]], [0, 0]), ('partial repair probe: new row index', [[[100, 1000], [500, 600], [200, 500], [200, 500], [0, 200], [100, 101]]], [1, 0, 0, 2, 0, 2]), ('partial repair variant: new row index', [[[200, 201], [300, 500], [200, 201], [1000, 1300], [300, 400], [0, 200]]], [0, 0, 1, 0, 1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[0, 1]]], [0]), ('normal control', [[[100, 500]]], [0]), ('normal control', [[[200, 600]]], [0])], [('regression: new row index', [[[100, 300], [300, 500], [100, 500]]], [0, 0, 1]), ('regression variant: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair probe: new row index', [[[0, 300], [500, 1400], [0, 1], [1000, 1001], [1000, 1300]]], [0, 0, 1, 1, 2]), ('partial repair variant: new row index', [[[300, 500], [100, 500]]], [1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[1000, 1200]]], [0]), ('normal control', [[[200, 300]]], [0]), ('normal control', [[[100, 400]]], [0])], [('regression: new row index', [[[200, 500], [0, 900], [1000, 1100], [500, 900]]], [1, 0, 0, 1]), ('regression variant: new row index', [[[0, 400], [300, 600]]], [0, 1]), ('partial repair probe: new row index', [[[300, 1200], [1000, 1100], [300, 301], [100, 101]]], [0, 1, 1, 0]), ('partial repair variant: new row index', [[[200, 500], [1000, 1100], [1000, 1200], [0, 900]]], [1, 0, 1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[200, 1100]]], [0]), ('normal control', [[[300, 301]]], [0]), ('normal control', [[[300, 400]]], [0])]]\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":"c3ff3cda25e27e03e929519e7682fab6bfd33d57018dc3b55190e456b814bc7c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cues):\n    order=sorted(range(len(cues)),key=lambda i:(cues[i][0],i))\n    row_end=[]\n    rows=[0]*len(cues)\n    for i in order:\n        s,e=cues[i]\n        for r in range(len(row_end)):\n            if row_end[r]<=s:\n                row_end[r]=e\n                rows[i]=r\n                break\n        else:\n            row_end.append(e)\n            rows[i]=len(row_end)-1\n    return rows\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: new row index', [[[0, 100], [100, 200]]], [0, 0]), ('regression variant: new row index', [[[500, 700], [200, 400], [300, 400], [500, 900], [300, 500], [1000, 1400]]], [0, 0, 1, 1, 2, 0]), ('partial repair probe: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair variant: new row index', [[[500, 800], [300, 400], [1000, 1200], [300, 600], [500, 600], [200, 300]]], [0, 0, 0, 1, 2, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[1000, 1001]]], [0]), ('normal control', [[[1000, 1400]]], [0]), ('normal control', [[[100, 101]]], [0])], [('regression: new row index', [[[0, 300], [100, 200], [200, 400]]], [0, 1, 1]), ('regression variant: new row index', [[[0, 300], [0, 400]]], [0, 1]), ('partial repair probe: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair variant: new row index', [[[1000, 1900], [200, 500], [0, 1], [100, 500], [500, 700], [0, 900]]], [0, 2, 0, 0, 0, 1]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[300, 1200]]], [0]), ('normal control', [[[1000, 1900]]], [0]), ('normal control', [[[100, 200]]], [0])], [('regression: new row index', [[[0, 500], [0, 100], [100, 200]]], [0, 1, 1]), ('regression variant: new row index', [[[200, 300], [500, 900]]], [0, 0]), ('partial repair probe: new row index', [[[100, 1000], [500, 600], [200, 500], [200, 500], [0, 200], [100, 101]]], [1, 0, 0, 2, 0, 2]), ('partial repair variant: new row index', [[[200, 201], [300, 500], [200, 201], [1000, 1300], [300, 400], [0, 200]]], [0, 0, 1, 0, 1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[0, 1]]], [0]), ('normal control', [[[100, 500]]], [0]), ('normal control', [[[200, 600]]], [0])], [('regression: new row index', [[[100, 300], [300, 500], [100, 500]]], [0, 0, 1]), ('regression variant: new row index', [[[1000, 1900], [100, 1000], [500, 900], [500, 501], [500, 900], [200, 300]]], [0, 0, 1, 2, 3, 1]), ('partial repair probe: new row index', [[[0, 300], [500, 1400], [0, 1], [1000, 1001], [1000, 1300]]], [0, 0, 1, 1, 2]), ('partial repair variant: new row index', [[[300, 500], [100, 500]]], [1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[1000, 1200]]], [0]), ('normal control', [[[200, 300]]], [0]), ('normal control', [[[100, 400]]], [0])], [('regression: new row index', [[[200, 500], [0, 900], [1000, 1100], [500, 900]]], [1, 0, 0, 1]), ('regression variant: new row index', [[[0, 400], [300, 600]]], [0, 1]), ('partial repair probe: new row index', [[[300, 1200], [1000, 1100], [300, 301], [100, 101]]], [0, 1, 1, 0]), ('partial repair variant: new row index', [[[200, 500], [1000, 1100], [1000, 1200], [0, 900]]], [1, 0, 1, 0]), ('boundary control', [[[0, 100]]], [0]), ('normal control', [[[200, 1100]]], [0]), ('normal control', [[[300, 301]]], [0]), ('normal control', [[[300, 400]]], [0])]]\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-row-stacking-new-row-index","generated_at":"2026-09-29T14:49:31.792240+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":"Use the index of the appended row, len(row_end)-1.","root_cause":"The index of a newly opened row is derived from the number of cues instead of the number of rows.","sha256":"be7d54ba4eff04396407dc08419d78bc5c9f3d242787c4f1a61044b378d377e3","title":"Overlapping cue row stacking: new row index · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.131,"exit_code":1,"observations":[{"actual":[0,0],"check":"regression: new row index","expected":[0,0],"passed":true},{"actual":[0,1,2,1,4,0],"check":"regression variant: new row index","expected":[0,0,1,1,2,0],"passed":false},{"actual":[0,1,1,3,4,5],"check":"partial repair probe: new row index","expected":[0,0,1,2,3,1],"passed":false},{"actual":[0,0,0,3,4,5],"check":"partial repair variant: new row index","expected":[0,0,0,1,2,0],"passed":false},{"actual":[0],"check":"boundary control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: new row index\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"regression variant: new row index\", \"actual\": [0, 1, 2, 1, 4, 0], \"expected\": [0, 0, 1, 1, 2, 0], \"passed\": false}, {\"check\": \"partial repair probe: new row index\", \"actual\": [0, 1, 1, 3, 4, 5], \"expected\": [0, 0, 1, 2, 3, 1], \"passed\": false}, {\"check\": \"partial repair variant: new row index\", \"actual\": [0, 0, 0, 3, 4, 5], \"expected\": [0, 0, 0, 1, 2, 0], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.183,"exit_code":1,"observations":[{"actual":[1,0],"check":"regression: new row index","expected":[0,0],"passed":false},{"actual":[0,5,5,1,5,0],"check":"regression variant: new row index","expected":[0,0,1,1,2,0],"passed":false},{"actual":[0,5,1,5,5,5],"check":"partial repair probe: new row index","expected":[0,0,1,2,3,1],"passed":false},{"actual":[0,0,0,5,5,5],"check":"partial repair variant: new row index","expected":[0,0,0,1,2,0],"passed":false},{"actual":[0],"check":"boundary control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: new row index\", \"actual\": [1, 0], \"expected\": [0, 0], \"passed\": false}, {\"check\": \"regression variant: new row index\", \"actual\": [0, 5, 5, 1, 5, 0], \"expected\": [0, 0, 1, 1, 2, 0], \"passed\": false}, {\"check\": \"partial repair probe: new row index\", \"actual\": [0, 5, 1, 5, 5, 5], \"expected\": [0, 0, 1, 2, 3, 1], \"passed\": false}, {\"check\": \"partial repair variant: new row index\", \"actual\": [0, 0, 0, 5, 5, 5], \"expected\": [0, 0, 0, 1, 2, 0], \"passed\": false}, {\"check\": \"boundary control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.823,"exit_code":0,"observations":[{"actual":[0,0],"check":"regression: new row index","expected":[0,0],"passed":true},{"actual":[0,0,1,1,2,0],"check":"regression variant: new row index","expected":[0,0,1,1,2,0],"passed":true},{"actual":[0,0,1,2,3,1],"check":"partial repair probe: new row index","expected":[0,0,1,2,3,1],"passed":true},{"actual":[0,0,0,1,2,0],"check":"partial repair variant: new row index","expected":[0,0,0,1,2,0],"passed":true},{"actual":[0],"check":"boundary control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true},{"actual":[0],"check":"normal control","expected":[0],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: new row index\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"regression variant: new row index\", \"actual\": [0, 0, 1, 1, 2, 0], \"expected\": [0, 0, 1, 1, 2, 0], \"passed\": true}, {\"check\": \"partial repair probe: new row index\", \"actual\": [0, 0, 1, 2, 3, 1], \"expected\": [0, 0, 1, 2, 3, 1], \"passed\": true}, {\"check\": \"partial repair variant: new row index\", \"actual\": [0, 0, 0, 1, 2, 0], \"expected\": [0, 0, 0, 1, 2, 0], \"passed\": true}, {\"check\": \"boundary control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"normal control\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}