{"abstract":"Deque rollback reclaims new blocks in allocation order.","category":"Bounded deques","checks":6,"contract":"Undo a failed bounded ring mutation from a before-image journal. Replay writes newest-first, restore captured head/size/epoch, release reserved capacity, reclaim newly allocated blocks newest-first and consume the journal.","evaluation_group":"s3-bounded-deques-mutation-rollback","failed_approach":"The partial repair still applies the incorrect transition to an admitted boundary or multi-element case.","family":"s3-bounded-deques-mutation-rollback-allocation-unwind","id":"FA-47226","implementations":{"attempt":{"sha256":"d0da5b4f4ced7b7a38075e9fe94945a0f9b36723a356a188d6d1c112b089fe40","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    slots,journal,old_head,old_size,old_epoch,reserved,created=x\n    restored=slots[:]\n    for index,value in reversed(journal):restored[index]=value\n    head=old_head\n    size=old_size\n    epoch=old_epoch\n    permits=0\n    reclaimed=created[::-1] if len(created)<=1 else created[:]\n    remaining=[]\n    return [restored,head,size,epoch,permits,reclaimed,remaining]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([[N+2,None],[[0,N],[0,N+1]],1,1,3,2,[4,5]]), {1: [[1, None], 1, 1, 3, 0, [5, 4], []], 2: [[2, None], 1, 1, 3, 0, [5, 4], []], 3: [[3, None], 1, 1, 3, 0, [5, 4], []], 4: [[4, None], 1, 1, 3, 0, [5, 4], []], 5: [[5, None], 1, 1, 3, 0, [5, 4], []]}[N])\ncheck('1', solve([[N,N+1,N+2],[[1,None],[2,None]],0,1,2,1,[7]]), {1: [[1, None, None], 0, 1, 2, 0, [7], []], 2: [[2, None, None], 0, 1, 2, 0, [7], []], 3: [[3, None, None], 0, 1, 2, 0, [7], []], 4: [[4, None, None], 0, 1, 2, 0, [7], []], 5: [[5, None, None], 0, 1, 2, 0, [7], []]}[N])\ncheck('2', solve([[N],[],0,1,4,0,[]]), {1: [[1], 0, 1, 4, 0, [], []], 2: [[2], 0, 1, 4, 0, [], []], 3: [[3], 0, 1, 4, 0, [], []], 4: [[4], 0, 1, 4, 0, [], []], 5: [[5], 0, 1, 4, 0, [], []]}[N])\ncheck('3', solve([[None,N+1,None],[[1,N]],1,1,0,1,[8,9,10]]), {1: [[None, 1, None], 1, 1, 0, 0, [10, 9, 8], []], 2: [[None, 2, None], 1, 1, 0, 0, [10, 9, 8], []], 3: [[None, 3, None], 1, 1, 0, 0, [10, 9, 8], []], 4: [[None, 4, None], 1, 1, 0, 0, [10, 9, 8], []], 5: [[None, 5, None], 1, 1, 0, 0, [10, 9, 8], []]}[N])\ncheck('4', solve([[N,N+1],[[0,None],[1,None]],1,0,2,2,[3,6]]), {1: [[None, None], 1, 0, 2, 0, [6, 3], []], 2: [[None, None], 1, 0, 2, 0, [6, 3], []], 3: [[None, None], 1, 0, 2, 0, [6, 3], []], 4: [[None, None], 1, 0, 2, 0, [6, 3], []], 5: [[None, None], 1, 0, 2, 0, [6, 3], []]}[N])\ncheck('5', solve([[N+3,N+1],[[0,N],[0,N+2]],0,2,7,3,[4,7]]), {1: [[1, 2], 0, 2, 7, 0, [7, 4], []], 2: [[2, 3], 0, 2, 7, 0, [7, 4], []], 3: [[3, 4], 0, 2, 7, 0, [7, 4], []], 4: [[4, 5], 0, 2, 7, 0, [7, 4], []], 5: [[5, 6], 0, 2, 7, 0, [7, 4], []]}[N])\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":"3a5732ffd5f8c44a8e80b0b32242001fed9f8ec7cb8070594e677ecf4b096430","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    slots,journal,old_head,old_size,old_epoch,reserved,created=x\n    restored=slots[:]\n    for index,value in reversed(journal):restored[index]=value\n    head=old_head\n    size=old_size\n    epoch=old_epoch\n    permits=0\n    reclaimed=created[:]\n    remaining=[]\n    return [restored,head,size,epoch,permits,reclaimed,remaining]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([[N+2,None],[[0,N],[0,N+1]],1,1,3,2,[4,5]]), {1: [[1, None], 1, 1, 3, 0, [5, 4], []], 2: [[2, None], 1, 1, 3, 0, [5, 4], []], 3: [[3, None], 1, 1, 3, 0, [5, 4], []], 4: [[4, None], 1, 1, 3, 0, [5, 4], []], 5: [[5, None], 1, 1, 3, 0, [5, 4], []]}[N])\ncheck('1', solve([[N,N+1,N+2],[[1,None],[2,None]],0,1,2,1,[7]]), {1: [[1, None, None], 0, 1, 2, 0, [7], []], 2: [[2, None, None], 0, 1, 2, 0, [7], []], 3: [[3, None, None], 0, 1, 2, 0, [7], []], 4: [[4, None, None], 0, 1, 2, 0, [7], []], 5: [[5, None, None], 0, 1, 2, 0, [7], []]}[N])\ncheck('2', solve([[N],[],0,1,4,0,[]]), {1: [[1], 0, 1, 4, 0, [], []], 2: [[2], 0, 1, 4, 0, [], []], 3: [[3], 0, 1, 4, 0, [], []], 4: [[4], 0, 1, 4, 0, [], []], 5: [[5], 0, 1, 4, 0, [], []]}[N])\ncheck('3', solve([[None,N+1,None],[[1,N]],1,1,0,1,[8,9,10]]), {1: [[None, 1, None], 1, 1, 0, 0, [10, 9, 8], []], 2: [[None, 2, None], 1, 1, 0, 0, [10, 9, 8], []], 3: [[None, 3, None], 1, 1, 0, 0, [10, 9, 8], []], 4: [[None, 4, None], 1, 1, 0, 0, [10, 9, 8], []], 5: [[None, 5, None], 1, 1, 0, 0, [10, 9, 8], []]}[N])\ncheck('4', solve([[N,N+1],[[0,None],[1,None]],1,0,2,2,[3,6]]), {1: [[None, None], 1, 0, 2, 0, [6, 3], []], 2: [[None, None], 1, 0, 2, 0, [6, 3], []], 3: [[None, None], 1, 0, 2, 0, [6, 3], []], 4: [[None, None], 1, 0, 2, 0, [6, 3], []], 5: [[None, None], 1, 0, 2, 0, [6, 3], []]}[N])\ncheck('5', solve([[N+3,N+1],[[0,N],[0,N+2]],0,2,7,3,[4,7]]), {1: [[1, 2], 0, 2, 7, 0, [7, 4], []], 2: [[2, 3], 0, 2, 7, 0, [7, 4], []], 3: [[3, 4], 0, 2, 7, 0, [7, 4], []], 4: [[4, 5], 0, 2, 7, 0, [7, 4], []], 5: [[5, 6], 0, 2, 7, 0, [7, 4], []]}[N])\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":"02415cca25c95fcb919451d53a2274923d681c8b60a42d385a95ebb70b03d358","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    slots,journal,old_head,old_size,old_epoch,reserved,created=x\n    restored=slots[:]\n    for index,value in reversed(journal):restored[index]=value\n    head=old_head\n    size=old_size\n    epoch=old_epoch\n    permits=0\n    reclaimed=created[::-1]\n    remaining=[]\n    return [restored,head,size,epoch,permits,reclaimed,remaining]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([[N+2,None],[[0,N],[0,N+1]],1,1,3,2,[4,5]]), {1: [[1, None], 1, 1, 3, 0, [5, 4], []], 2: [[2, None], 1, 1, 3, 0, [5, 4], []], 3: [[3, None], 1, 1, 3, 0, [5, 4], []], 4: [[4, None], 1, 1, 3, 0, [5, 4], []], 5: [[5, None], 1, 1, 3, 0, [5, 4], []]}[N])\ncheck('1', solve([[N,N+1,N+2],[[1,None],[2,None]],0,1,2,1,[7]]), {1: [[1, None, None], 0, 1, 2, 0, [7], []], 2: [[2, None, None], 0, 1, 2, 0, [7], []], 3: [[3, None, None], 0, 1, 2, 0, [7], []], 4: [[4, None, None], 0, 1, 2, 0, [7], []], 5: [[5, None, None], 0, 1, 2, 0, [7], []]}[N])\ncheck('2', solve([[N],[],0,1,4,0,[]]), {1: [[1], 0, 1, 4, 0, [], []], 2: [[2], 0, 1, 4, 0, [], []], 3: [[3], 0, 1, 4, 0, [], []], 4: [[4], 0, 1, 4, 0, [], []], 5: [[5], 0, 1, 4, 0, [], []]}[N])\ncheck('3', solve([[None,N+1,None],[[1,N]],1,1,0,1,[8,9,10]]), {1: [[None, 1, None], 1, 1, 0, 0, [10, 9, 8], []], 2: [[None, 2, None], 1, 1, 0, 0, [10, 9, 8], []], 3: [[None, 3, None], 1, 1, 0, 0, [10, 9, 8], []], 4: [[None, 4, None], 1, 1, 0, 0, [10, 9, 8], []], 5: [[None, 5, None], 1, 1, 0, 0, [10, 9, 8], []]}[N])\ncheck('4', solve([[N,N+1],[[0,None],[1,None]],1,0,2,2,[3,6]]), {1: [[None, None], 1, 0, 2, 0, [6, 3], []], 2: [[None, None], 1, 0, 2, 0, [6, 3], []], 3: [[None, None], 1, 0, 2, 0, [6, 3], []], 4: [[None, None], 1, 0, 2, 0, [6, 3], []], 5: [[None, None], 1, 0, 2, 0, [6, 3], []]}[N])\ncheck('5', solve([[N+3,N+1],[[0,N],[0,N+2]],0,2,7,3,[4,7]]), {1: [[1, 2], 0, 2, 7, 0, [7, 4], []], 2: [[2, 3], 0, 2, 7, 0, [7, 4], []], 3: [[3, 4], 0, 2, 7, 0, [7, 4], []], 4: [[4, 5], 0, 2, 7, 0, [7, 4], []], 5: [[5, 6], 0, 2, 7, 0, [7, 4], []]}[N])\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-mutation-rollback-allocation-unwind","generated_at":"2026-09-29T14:44:39.472670+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 allocation unwind invariant in mutation-rollback.","root_cause":"Deque rollback reclaims new blocks in allocation order.","sha256":"bf0426430b46ef0cd81f76cc23a20199274e2ff367114ccd56eac27fe53c3256","title":"Deque rollback reclaims new blocks in allocation order · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.032,"exit_code":1,"observations":[{"actual":[[1,null],1,1,3,0,[4,5],[]],"check":"0","expected":[[1,null],1,1,3,0,[5,4],[]],"passed":false},{"actual":[[1,null,null],0,1,2,0,[7],[]],"check":"1","expected":[[1,null,null],0,1,2,0,[7],[]],"passed":true},{"actual":[[1],0,1,4,0,[],[]],"check":"2","expected":[[1],0,1,4,0,[],[]],"passed":true},{"actual":[[null,1,null],1,1,0,0,[8,9,10],[]],"check":"3","expected":[[null,1,null],1,1,0,0,[10,9,8],[]],"passed":false},{"actual":[[null,null],1,0,2,0,[3,6],[]],"check":"4","expected":[[null,null],1,0,2,0,[6,3],[]],"passed":false},{"actual":[[1,2],0,2,7,0,[4,7],[]],"check":"5","expected":[[1,2],0,2,7,0,[7,4],[]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [[1, null], 1, 1, 3, 0, [4, 5], []], \"expected\": [[1, null], 1, 1, 3, 0, [5, 4], []], \"passed\": false}, {\"check\": \"1\", \"actual\": [[1, null, null], 0, 1, 2, 0, [7], []], \"expected\": [[1, null, null], 0, 1, 2, 0, [7], []], \"passed\": true}, {\"check\": \"2\", \"actual\": [[1], 0, 1, 4, 0, [], []], \"expected\": [[1], 0, 1, 4, 0, [], []], \"passed\": true}, {\"check\": \"3\", \"actual\": [[null, 1, null], 1, 1, 0, 0, [8, 9, 10], []], \"expected\": [[null, 1, null], 1, 1, 0, 0, [10, 9, 8], []], \"passed\": false}, {\"check\": \"4\", \"actual\": [[null, null], 1, 0, 2, 0, [3, 6], []], \"expected\": [[null, null], 1, 0, 2, 0, [6, 3], []], \"passed\": false}, {\"check\": \"5\", \"actual\": [[1, 2], 0, 2, 7, 0, [4, 7], []], \"expected\": [[1, 2], 0, 2, 7, 0, [7, 4], []], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.684,"exit_code":1,"observations":[{"actual":[[1,null],1,1,3,0,[4,5],[]],"check":"0","expected":[[1,null],1,1,3,0,[5,4],[]],"passed":false},{"actual":[[1,null,null],0,1,2,0,[7],[]],"check":"1","expected":[[1,null,null],0,1,2,0,[7],[]],"passed":true},{"actual":[[1],0,1,4,0,[],[]],"check":"2","expected":[[1],0,1,4,0,[],[]],"passed":true},{"actual":[[null,1,null],1,1,0,0,[8,9,10],[]],"check":"3","expected":[[null,1,null],1,1,0,0,[10,9,8],[]],"passed":false},{"actual":[[null,null],1,0,2,0,[3,6],[]],"check":"4","expected":[[null,null],1,0,2,0,[6,3],[]],"passed":false},{"actual":[[1,2],0,2,7,0,[4,7],[]],"check":"5","expected":[[1,2],0,2,7,0,[7,4],[]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [[1, null], 1, 1, 3, 0, [4, 5], []], \"expected\": [[1, null], 1, 1, 3, 0, [5, 4], []], \"passed\": false}, {\"check\": \"1\", \"actual\": [[1, null, null], 0, 1, 2, 0, [7], []], \"expected\": [[1, null, null], 0, 1, 2, 0, [7], []], \"passed\": true}, {\"check\": \"2\", \"actual\": [[1], 0, 1, 4, 0, [], []], \"expected\": [[1], 0, 1, 4, 0, [], []], \"passed\": true}, {\"check\": \"3\", \"actual\": [[null, 1, null], 1, 1, 0, 0, [8, 9, 10], []], \"expected\": [[null, 1, null], 1, 1, 0, 0, [10, 9, 8], []], \"passed\": false}, {\"check\": \"4\", \"actual\": [[null, null], 1, 0, 2, 0, [3, 6], []], \"expected\": [[null, null], 1, 0, 2, 0, [6, 3], []], \"passed\": false}, {\"check\": \"5\", \"actual\": [[1, 2], 0, 2, 7, 0, [4, 7], []], \"expected\": [[1, 2], 0, 2, 7, 0, [7, 4], []], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.972,"exit_code":0,"observations":[{"actual":[[1,null],1,1,3,0,[5,4],[]],"check":"0","expected":[[1,null],1,1,3,0,[5,4],[]],"passed":true},{"actual":[[1,null,null],0,1,2,0,[7],[]],"check":"1","expected":[[1,null,null],0,1,2,0,[7],[]],"passed":true},{"actual":[[1],0,1,4,0,[],[]],"check":"2","expected":[[1],0,1,4,0,[],[]],"passed":true},{"actual":[[null,1,null],1,1,0,0,[10,9,8],[]],"check":"3","expected":[[null,1,null],1,1,0,0,[10,9,8],[]],"passed":true},{"actual":[[null,null],1,0,2,0,[6,3],[]],"check":"4","expected":[[null,null],1,0,2,0,[6,3],[]],"passed":true},{"actual":[[1,2],0,2,7,0,[7,4],[]],"check":"5","expected":[[1,2],0,2,7,0,[7,4],[]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [[1, null], 1, 1, 3, 0, [5, 4], []], \"expected\": [[1, null], 1, 1, 3, 0, [5, 4], []], \"passed\": true}, {\"check\": \"1\", \"actual\": [[1, null, null], 0, 1, 2, 0, [7], []], \"expected\": [[1, null, null], 0, 1, 2, 0, [7], []], \"passed\": true}, {\"check\": \"2\", \"actual\": [[1], 0, 1, 4, 0, [], []], \"expected\": [[1], 0, 1, 4, 0, [], []], \"passed\": true}, {\"check\": \"3\", \"actual\": [[null, 1, null], 1, 1, 0, 0, [10, 9, 8], []], \"expected\": [[null, 1, null], 1, 1, 0, 0, [10, 9, 8], []], \"passed\": true}, {\"check\": \"4\", \"actual\": [[null, null], 1, 0, 2, 0, [6, 3], []], \"expected\": [[null, null], 1, 0, 2, 0, [6, 3], []], \"passed\": true}, {\"check\": \"5\", \"actual\": [[1, 2], 0, 2, 7, 0, [7, 4], []], \"expected\": [[1, 2], 0, 2, 7, 0, [7, 4], []], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}