{"abstract":"Hunks one line apart are reported as conflicting.","category":"Text diff and three-way merge","checks":10,"contract":"Two patches against the same base list hunks as [old_start, old_len]. A hunk with length > 0 covers lines start..start+len-1; a zero-length hunk is an insertion after line start and sits at start+0.5. Hunks conflict when their spans overlap or are adjacent (within one line). Return sorted [i, j] index pairs of conflicting hunks from the first and second patch.","contract_signature":"p1, p2","evaluation_group":"w2-text-diff-merge-hunk-overlap-check","failed_approach":"Ending at s + L - 2 drops the last line of each range.","family":"w2-text-diff-merge-hunk-overlap-check-range-end","id":"FA-75701","implementations":{"attempt":{"sha256":"f445bdb93cff16a6d75eff2afd67f34686a187460e887c02eba450e2b027f1da","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(p1, p2):\n    def span(h):\n        s, ln = h\n        if ln == 0:\n            return (s + 0.5, s + 0.5)\n        return (s, s + ln - 2)\n    out = []\n    for i, h1 in enumerate(p1):\n        a_lo, a_hi = span(h1)\n        for j, h2 in enumerate(p2):\n            b_lo, b_hi = span(h2)\n            if a_lo <= b_hi + 1 and b_lo <= a_hi + 1:\n                out.append([i, j])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [8, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 1]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    2: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [9, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 2]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    3: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [10, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 3]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    4: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [11, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 4]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    5: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [12, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 5]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n}[N]\nfor label, args, expected in cases:\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":"fc4a276e53e0df75a9181ea75aff9bebe721e842ba6cef2c15e17421bfeaf590","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(p1, p2):\n    def span(h):\n        s, ln = h\n        if ln == 0:\n            return (s + 0.5, s + 0.5)\n        return (s, s + ln)\n    out = []\n    for i, h1 in enumerate(p1):\n        a_lo, a_hi = span(h1)\n        for j, h2 in enumerate(p2):\n            b_lo, b_hi = span(h2)\n            if a_lo <= b_hi + 1 and b_lo <= a_hi + 1:\n                out.append([i, j])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = {\n    1: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [8, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 1]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    2: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [9, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 2]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    3: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [10, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 3]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    4: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [11, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 4]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n    5: [('overlapping ranges', [[[3, 4]], [[5, 2]]], [[0, 0]]), ('adjacent ranges conflict', [[[1, 3]], [[4, 2]]], [[0, 0]]), ('one line apart is clean', [[[1, 3]], [[5, 2]]], []), ('insertions at the same point', [[[5, 0]], [[5, 0]]], [[0, 0]]), ('insertion next to a range', [[[5, 0]], [[6, 3], [12, 1]]], [[0, 0]]), ('insertion inside a range', [[[2, 5]], [[4, 0]]], [[0, 0]]), ('insertion two lines above a range', [[[4, 0]], [[6, 2]]], []), ('single-line ranges touching', [[[10, 1], [20, 1]], [[11, 1], [30, 5]]], [[0, 0]]), ('far apart', [[[1, 1]], [[50, 0]]], []), ('insertion one line below a range end', [[[5, 0]], [[2, 3]]], [])],\n}[N]\nfor label, args, expected in cases:\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 of one diff, patch or merge rule with stipulated conventions; it is not a production diff or version-control implementation and makes no claim of conformance to any specific tool. 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-text-diff-merge-hunk-overlap-check-range-end","generated_at":"2026-09-29T14:49:09.306775+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Cherry-picks and concurrent patch application refuse to auto-merge changes that touch or abut the same lines.","root_cause":"The span end uses start + length instead of start + length - 1.","sha256":"3ec850c11ea23a2e6407b8e96e09e160561fa1fae0e4075236c152250c875612","title":"Hunk overlap check: ranges extend one line past their last line · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.132,"exit_code":1,"observations":[{"actual":[[0,0]],"check":"overlapping ranges","expected":[[0,0]],"passed":true},{"actual":[],"check":"adjacent ranges conflict","expected":[[0,0]],"passed":false},{"actual":[],"check":"one line apart is clean","expected":[],"passed":true},{"actual":[[0,0]],"check":"insertions at the same point","expected":[[0,0]],"passed":true},{"actual":[[0,0]],"check":"insertion next to a range","expected":[[0,0]],"passed":true},{"actual":[[0,0]],"check":"insertion inside a range","expected":[[0,0]],"passed":true},{"actual":[],"check":"insertion two lines above a range","expected":[],"passed":true},{"actual":[],"check":"single-line ranges touching","expected":[[0,0]],"passed":false},{"actual":[],"check":"far apart","expected":[],"passed":true},{"actual":[],"check":"insertion one line below a range end","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"overlapping ranges\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"adjacent ranges conflict\", \"actual\": [], \"expected\": [[0, 0]], \"passed\": false}, {\"check\": \"one line apart is clean\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"insertions at the same point\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"insertion next to a range\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"insertion inside a range\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"insertion two lines above a range\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"single-line ranges touching\", \"actual\": [], \"expected\": [[0, 0]], \"passed\": false}, {\"check\": \"far apart\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"insertion one line below a range end\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.168,"exit_code":1,"observations":[{"actual":[[0,0]],"check":"overlapping ranges","expected":[[0,0]],"passed":true},{"actual":[[0,0]],"check":"adjacent ranges conflict","expected":[[0,0]],"passed":true},{"actual":[[0,0]],"check":"one line apart is clean","expected":[],"passed":false},{"actual":[[0,0]],"check":"insertions at the same point","expected":[[0,0]],"passed":true},{"actual":[[0,0]],"check":"insertion next to a range","expected":[[0,0]],"passed":true},{"actual":[[0,0]],"check":"insertion inside a range","expected":[[0,0]],"passed":true},{"actual":[],"check":"insertion two lines above a range","expected":[],"passed":true},{"actual":[[0,0]],"check":"single-line ranges touching","expected":[[0,0]],"passed":true},{"actual":[],"check":"far apart","expected":[],"passed":true},{"actual":[[0,0]],"check":"insertion one line below a range end","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"overlapping ranges\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"adjacent ranges conflict\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"one line apart is clean\", \"actual\": [[0, 0]], \"expected\": [], \"passed\": false}, {\"check\": \"insertions at the same point\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"insertion next to a range\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"insertion inside a range\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"insertion two lines above a range\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"single-line ranges touching\", \"actual\": [[0, 0]], \"expected\": [[0, 0]], \"passed\": true}, {\"check\": \"far apart\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"insertion one line below a range end\", \"actual\": [[0, 0]], \"expected\": [], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}