{"abstract":"Cursor erase drops the successor along with its target.","category":"Bounded deques","checks":6,"contract":"Erase a selected position while updating independent stable cursors. A cursor at the erased element moves to its successor, or end; later cursors shift left, earlier cursors stay. Return values, cursor positions, and cursor-observed values; None denotes end.","evaluation_group":"s3-bounded-deques-cursor-erasure","failed_approach":"The partial repair still applies the incorrect transition to an admitted boundary or multi-element case.","family":"s3-bounded-deques-cursor-erasure-sequence-suffix","id":"FA-45961","implementations":{"attempt":{"sha256":"79f5bcb9cd12b463193757f5d91f060bc75ba61ec8bbc954b1b537f7dd918554","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    items, at, cursors = x\n    remaining = items[:at] + items[at+1:] if at == 0 else items[:at] + items[at+2:]\n    updated = []\n    for position in cursors:\n        if position is None:\n            next_position = None\n        elif position < at:\n            next_position = position\n        elif position == at:\n            next_position = at if at < len(remaining) else None\n        else:\n            next_position = position - 1\n        updated.append(next_position)\n    observed = [remaining[p] if p is not None and 0 <= p < len(remaining) else None for p in updated]\n    return [remaining,updated,observed]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('interior cursors', solve([[N,N+1,N+2,N+3],1,[0,1,2,3,None]]), [[N,N+2,N+3],[0,1,1,2,None],[N,N+2,N+2,N+3,None]])\ncheck('erased last cursor', solve([[N,N+1],1,[0,1,None]]), [[N],[0,None,None],[N,None,None]])\ncheck('all point at head', solve([[N,N+1,N+2],0,[0,0,2]]), [[N+1,N+2],[0,0,1],[N+1,N+1,N+2]])\ncheck('single node erased', solve([[N],0,[0,None]]), [[],[None,None],[None,None]])\ncheck('no cursors', solve([[N,N+1],0,[]]), [[N+1],[],[]])\ncheck('unaffected cursors', solve([[N,N+1,N+2,N+3],3,[0,1,2]]), [[N,N+1,N+2],[0,1,2],[N,N+1,N+2]])\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":"f6e7732df4e2220a9ba03da858c08e4b294e397e6ad1913bcd0d6ba2fad03007","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    items, at, cursors = x\n    remaining = items[:at] + items[at+2:]\n    updated = []\n    for position in cursors:\n        if position is None:\n            next_position = None\n        elif position < at:\n            next_position = position\n        elif position == at:\n            next_position = at if at < len(remaining) else None\n        else:\n            next_position = position - 1\n        updated.append(next_position)\n    observed = [remaining[p] if p is not None and 0 <= p < len(remaining) else None for p in updated]\n    return [remaining,updated,observed]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('interior cursors', solve([[N,N+1,N+2,N+3],1,[0,1,2,3,None]]), [[N,N+2,N+3],[0,1,1,2,None],[N,N+2,N+2,N+3,None]])\ncheck('erased last cursor', solve([[N,N+1],1,[0,1,None]]), [[N],[0,None,None],[N,None,None]])\ncheck('all point at head', solve([[N,N+1,N+2],0,[0,0,2]]), [[N+1,N+2],[0,0,1],[N+1,N+1,N+2]])\ncheck('single node erased', solve([[N],0,[0,None]]), [[],[None,None],[None,None]])\ncheck('no cursors', solve([[N,N+1],0,[]]), [[N+1],[],[]])\ncheck('unaffected cursors', solve([[N,N+1,N+2,N+3],3,[0,1,2]]), [[N,N+1,N+2],[0,1,2],[N,N+1,N+2]])\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":"0ccb67a73594c8343fb6af1a7384228dc32eb825c511c67aff3e5c31d7335d7e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    items, at, cursors = x\n    remaining = items[:at] + items[at+1:]\n    updated = []\n    for position in cursors:\n        if position is None:\n            next_position = None\n        elif position < at:\n            next_position = position\n        elif position == at:\n            next_position = at if at < len(remaining) else None\n        else:\n            next_position = position - 1\n        updated.append(next_position)\n    observed = [remaining[p] if p is not None and 0 <= p < len(remaining) else None for p in updated]\n    return [remaining,updated,observed]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('interior cursors', solve([[N,N+1,N+2,N+3],1,[0,1,2,3,None]]), [[N,N+2,N+3],[0,1,1,2,None],[N,N+2,N+2,N+3,None]])\ncheck('erased last cursor', solve([[N,N+1],1,[0,1,None]]), [[N],[0,None,None],[N,None,None]])\ncheck('all point at head', solve([[N,N+1,N+2],0,[0,0,2]]), [[N+1,N+2],[0,0,1],[N+1,N+1,N+2]])\ncheck('single node erased', solve([[N],0,[0,None]]), [[],[None,None],[None,None]])\ncheck('no cursors', solve([[N,N+1],0,[]]), [[N+1],[],[]])\ncheck('unaffected cursors', solve([[N,N+1,N+2,N+3],3,[0,1,2]]), [[N,N+1,N+2],[0,1,2],[N,N+1,N+2]])\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":"Offline finite deterministic model; no claim of production implementation or concurrent memory-model conformance. 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":"s3-bounded-deques-cursor-erasure-sequence-suffix","generated_at":"2026-09-29T14:44:27.527278+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Controlled bounded deque implementation model with explicit storage and lifecycle observations.","repair":"Restore the documented sequence suffix invariant in cursor-erasure.","root_cause":"The end-exclusive deletion boundary skips the first surviving element.","sha256":"7c8277bc9eb9b01eef84f02ac5a6431500694f4a32816dafc8be3faf9cca672b","title":"Cursor erase drops the successor along with its target · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":46.37,"exit_code":1,"observations":[{"actual":[[1,4],[0,1,1,2,null],[1,4,4,null,null]],"check":"interior cursors","expected":[[1,3,4],[0,1,1,2,null],[1,3,3,4,null]],"passed":false},{"actual":[[1],[0,null,null],[1,null,null]],"check":"erased last cursor","expected":[[1],[0,null,null],[1,null,null]],"passed":true},{"actual":[[2,3],[0,0,1],[2,2,3]],"check":"all point at head","expected":[[2,3],[0,0,1],[2,2,3]],"passed":true},{"actual":[[],[null,null],[null,null]],"check":"single node erased","expected":[[],[null,null],[null,null]],"passed":true},{"actual":[[2],[],[]],"check":"no cursors","expected":[[2],[],[]],"passed":true},{"actual":[[1,2,3],[0,1,2],[1,2,3]],"check":"unaffected cursors","expected":[[1,2,3],[0,1,2],[1,2,3]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"interior cursors\", \"actual\": [[1, 4], [0, 1, 1, 2, null], [1, 4, 4, null, null]], \"expected\": [[1, 3, 4], [0, 1, 1, 2, null], [1, 3, 3, 4, null]], \"passed\": false}, {\"check\": \"erased last cursor\", \"actual\": [[1], [0, null, null], [1, null, null]], \"expected\": [[1], [0, null, null], [1, null, null]], \"passed\": true}, {\"check\": \"all point at head\", \"actual\": [[2, 3], [0, 0, 1], [2, 2, 3]], \"expected\": [[2, 3], [0, 0, 1], [2, 2, 3]], \"passed\": true}, {\"check\": \"single node erased\", \"actual\": [[], [null, null], [null, null]], \"expected\": [[], [null, null], [null, null]], \"passed\": true}, {\"check\": \"no cursors\", \"actual\": [[2], [], []], \"expected\": [[2], [], []], \"passed\": true}, {\"check\": \"unaffected cursors\", \"actual\": [[1, 2, 3], [0, 1, 2], [1, 2, 3]], \"expected\": [[1, 2, 3], [0, 1, 2], [1, 2, 3]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.412,"exit_code":1,"observations":[{"actual":[[1,4],[0,1,1,2,null],[1,4,4,null,null]],"check":"interior cursors","expected":[[1,3,4],[0,1,1,2,null],[1,3,3,4,null]],"passed":false},{"actual":[[1],[0,null,null],[1,null,null]],"check":"erased last cursor","expected":[[1],[0,null,null],[1,null,null]],"passed":true},{"actual":[[3],[0,0,1],[3,3,null]],"check":"all point at head","expected":[[2,3],[0,0,1],[2,2,3]],"passed":false},{"actual":[[],[null,null],[null,null]],"check":"single node erased","expected":[[],[null,null],[null,null]],"passed":true},{"actual":[[],[],[]],"check":"no cursors","expected":[[2],[],[]],"passed":false},{"actual":[[1,2,3],[0,1,2],[1,2,3]],"check":"unaffected cursors","expected":[[1,2,3],[0,1,2],[1,2,3]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"interior cursors\", \"actual\": [[1, 4], [0, 1, 1, 2, null], [1, 4, 4, null, null]], \"expected\": [[1, 3, 4], [0, 1, 1, 2, null], [1, 3, 3, 4, null]], \"passed\": false}, {\"check\": \"erased last cursor\", \"actual\": [[1], [0, null, null], [1, null, null]], \"expected\": [[1], [0, null, null], [1, null, null]], \"passed\": true}, {\"check\": \"all point at head\", \"actual\": [[3], [0, 0, 1], [3, 3, null]], \"expected\": [[2, 3], [0, 0, 1], [2, 2, 3]], \"passed\": false}, {\"check\": \"single node erased\", \"actual\": [[], [null, null], [null, null]], \"expected\": [[], [null, null], [null, null]], \"passed\": true}, {\"check\": \"no cursors\", \"actual\": [[], [], []], \"expected\": [[2], [], []], \"passed\": false}, {\"check\": \"unaffected cursors\", \"actual\": [[1, 2, 3], [0, 1, 2], [1, 2, 3]], \"expected\": [[1, 2, 3], [0, 1, 2], [1, 2, 3]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.841,"exit_code":0,"observations":[{"actual":[[1,3,4],[0,1,1,2,null],[1,3,3,4,null]],"check":"interior cursors","expected":[[1,3,4],[0,1,1,2,null],[1,3,3,4,null]],"passed":true},{"actual":[[1],[0,null,null],[1,null,null]],"check":"erased last cursor","expected":[[1],[0,null,null],[1,null,null]],"passed":true},{"actual":[[2,3],[0,0,1],[2,2,3]],"check":"all point at head","expected":[[2,3],[0,0,1],[2,2,3]],"passed":true},{"actual":[[],[null,null],[null,null]],"check":"single node erased","expected":[[],[null,null],[null,null]],"passed":true},{"actual":[[2],[],[]],"check":"no cursors","expected":[[2],[],[]],"passed":true},{"actual":[[1,2,3],[0,1,2],[1,2,3]],"check":"unaffected cursors","expected":[[1,2,3],[0,1,2],[1,2,3]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"interior cursors\", \"actual\": [[1, 3, 4], [0, 1, 1, 2, null], [1, 3, 3, 4, null]], \"expected\": [[1, 3, 4], [0, 1, 1, 2, null], [1, 3, 3, 4, null]], \"passed\": true}, {\"check\": \"erased last cursor\", \"actual\": [[1], [0, null, null], [1, null, null]], \"expected\": [[1], [0, null, null], [1, null, null]], \"passed\": true}, {\"check\": \"all point at head\", \"actual\": [[2, 3], [0, 0, 1], [2, 2, 3]], \"expected\": [[2, 3], [0, 0, 1], [2, 2, 3]], \"passed\": true}, {\"check\": \"single node erased\", \"actual\": [[], [null, null], [null, null]], \"expected\": [[], [null, null], [null, null]], \"passed\": true}, {\"check\": \"no cursors\", \"actual\": [[2], [], []], \"expected\": [[2], [], []], \"passed\": true}, {\"check\": \"unaffected cursors\", \"actual\": [[1, 2, 3], [0, 1, 2], [1, 2, 3]], \"expected\": [[1, 2, 3], [0, 1, 2], [1, 2, 3]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}