{"abstract":"Overlapping citations from adjacent chunks remain duplicated.","category":"Chunk citation alignment","checks":6,"contract":"For one source, merge sorted half-open spans when next.start <= current.end; preserve gaps.","contract_signature":"spans","evaluation_group":"annotation-span-discontinuous-fragment-union","failed_approach":"Merging only strict overlaps leaves adjacent half-open spans split.","family":"w3-chunk-citation-alignment-overlap-merge","id":"FA-99661","implementations":{"attempt":{"sha256":"975665574f4619583c040e433104cbd4a29cbb6f82a0c11f06143f66e21adf00","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(spans):\n    out=[]\n    for s,e in sorted(spans):\n     if out and s<out[-1][1]: out[-1][1]=max(out[-1][1],e)\n     else: out.append([s,e])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('overlap',solve([[N,N+4],[N+2,N+7]]),[[N,N+7]])\ncheck('touch',solve([[0,2],[2,4]]),[[0,4]])\ncheck('gap',solve([[0,2],[3,5]]),[[0,2],[3,5]])\ncheck('duplicate',solve([[1,3],[1,3]]),[[1,3]])\ncheck('empty',solve([]),[])\ncheck('single',solve([[N,N+1]]),[[N,N+1]])\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":"b759f166ac78d60276bdfe91e65eae9e8dcb26797ee62670c3517671274a2bf1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(spans):\n    return sorted(set(tuple(x) for x in spans))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('overlap',solve([[N,N+4],[N+2,N+7]]),[[N,N+7]])\ncheck('touch',solve([[0,2],[2,4]]),[[0,4]])\ncheck('gap',solve([[0,2],[3,5]]),[[0,2],[3,5]])\ncheck('duplicate',solve([[1,3],[1,3]]),[[1,3]])\ncheck('empty',solve([]),[])\ncheck('single',solve([[N,N+1]]),[[N,N+1]])\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":"Inputs are small integer offsets and identifiers under the stated toy contract; this does not define a document format or production citation API. 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":"w3-chunk-citation-alignment-overlap-merge","generated_at":"2026-09-30T16:48:26.712093+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic citation bookkeeping model isolates source attribution from rendering and retrieval.","root_cause":"Only exact duplicates are removed, so overlap produces double attribution.","sha256":"29f748c05344dcf9b71d9ac4dbe9d7c93c8ebed5f187766dc8832959eea64a8e","title":"Overlapping citations from adjacent chunks remain duplicated · case 01","variant":1,"variant_policy":"The fixture code references N, supplied as 1 through 5. Fixed boundary checks may repeat. These records share one mechanism and must remain together in evaluation splits.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":26.408,"exit_code":1,"observations":[{"actual":[[1,8]],"check":"overlap","expected":[[1,8]],"passed":true},{"actual":[[0,2],[2,4]],"check":"touch","expected":[[0,4]],"passed":false},{"actual":[[0,2],[3,5]],"check":"gap","expected":[[0,2],[3,5]],"passed":true},{"actual":[[1,3]],"check":"duplicate","expected":[[1,3]],"passed":true},{"actual":[],"check":"empty","expected":[],"passed":true},{"actual":[[1,2]],"check":"single","expected":[[1,2]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"overlap\", \"actual\": [[1, 8]], \"expected\": [[1, 8]], \"passed\": true}, {\"check\": \"touch\", \"actual\": [[0, 2], [2, 4]], \"expected\": [[0, 4]], \"passed\": false}, {\"check\": \"gap\", \"actual\": [[0, 2], [3, 5]], \"expected\": [[0, 2], [3, 5]], \"passed\": true}, {\"check\": \"duplicate\", \"actual\": [[1, 3]], \"expected\": [[1, 3]], \"passed\": true}, {\"check\": \"empty\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"single\", \"actual\": [[1, 2]], \"expected\": [[1, 2]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":27.409,"exit_code":1,"observations":[{"actual":[[1,5],[3,8]],"check":"overlap","expected":[[1,8]],"passed":false},{"actual":[[0,2],[2,4]],"check":"touch","expected":[[0,4]],"passed":false},{"actual":[[0,2],[3,5]],"check":"gap","expected":[[0,2],[3,5]],"passed":false},{"actual":[[1,3]],"check":"duplicate","expected":[[1,3]],"passed":false},{"actual":[],"check":"empty","expected":[],"passed":true},{"actual":[[1,2]],"check":"single","expected":[[1,2]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"overlap\", \"actual\": [[1, 5], [3, 8]], \"expected\": [[1, 8]], \"passed\": false}, {\"check\": \"touch\", \"actual\": [[0, 2], [2, 4]], \"expected\": [[0, 4]], \"passed\": false}, {\"check\": \"gap\", \"actual\": [[0, 2], [3, 5]], \"expected\": [[0, 2], [3, 5]], \"passed\": false}, {\"check\": \"duplicate\", \"actual\": [[1, 3]], \"expected\": [[1, 3]], \"passed\": false}, {\"check\": \"empty\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"single\", \"actual\": [[1, 2]], \"expected\": [[1, 2]], \"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."}}