{"abstract":"Growth exposes backing capacity as live length.","category":"Bounded deques","checks":6,"contract":"Grow a ring to larger positive capacity. Linearize occupied slots in logical order, clear unused storage, reset head and report next insertion index and unchanged logical count.","evaluation_group":"s3-bounded-deques-ring-grow","failed_approach":"The partial repair still applies the incorrect transition to an admitted boundary or multi-element case.","family":"s3-bounded-deques-ring-grow-count-preservation","id":"FA-45911","implementations":{"attempt":{"sha256":"49a6e8c7d28d7974f91e090becd00c651c87113fcdee11796171753d4edad29e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    slots, head, size, capacity = x\n    old = len(slots)\n    live = [slots[(head + i) % old] for i in range(size)]\n    new = live + [None] * (capacity - size)\n    new_head = 0\n    write = size % capacity\n    return [new, new_head, write, 0 if size == 0 else capacity]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('wrapped live data', solve([[N,None,None,N+1,N+2],3,3,7]), [[N+1,N+2,N,None,None,None,None],0,3,3])\ncheck('empty shifted ring', solve([[None]*4,3,0,6]), [[None]*6,0,0,0])\ncheck('one shifted value', solve([[None,N,None],1,1,5]), [[N,None,None,None,None],0,1,1])\ncheck('full old ring', solve([[N,N+1,N+2],1,3,5]), [[N+1,N+2,N,None,None],0,3,3])\ncheck('head zero', solve([[N,N+1,None],0,2,6]), [[N,N+1,None,None,None,None],0,2,2])\ncheck('two wrapped values', solve([[N,None,None,N+1],3,2,8]), [[N+1,N,None,None,None,None,None,None],0,2,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":"49bd8c05d72660f3f16caf9502b6f03b0115d7e1e8d35917e745d2d0a402257c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    slots, head, size, capacity = x\n    old = len(slots)\n    live = [slots[(head + i) % old] for i in range(size)]\n    new = live + [None] * (capacity - size)\n    new_head = 0\n    write = size % capacity\n    return [new, new_head, write, capacity]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('wrapped live data', solve([[N,None,None,N+1,N+2],3,3,7]), [[N+1,N+2,N,None,None,None,None],0,3,3])\ncheck('empty shifted ring', solve([[None]*4,3,0,6]), [[None]*6,0,0,0])\ncheck('one shifted value', solve([[None,N,None],1,1,5]), [[N,None,None,None,None],0,1,1])\ncheck('full old ring', solve([[N,N+1,N+2],1,3,5]), [[N+1,N+2,N,None,None],0,3,3])\ncheck('head zero', solve([[N,N+1,None],0,2,6]), [[N,N+1,None,None,None,None],0,2,2])\ncheck('two wrapped values', solve([[N,None,None,N+1],3,2,8]), [[N+1,N,None,None,None,None,None,None],0,2,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":"74e399d4194544c3749facf917a06f10515584a78a0bebc7a6ac1ed75537ed07","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    slots, head, size, capacity = x\n    old = len(slots)\n    live = [slots[(head + i) % old] for i in range(size)]\n    new = live + [None] * (capacity - size)\n    new_head = 0\n    write = size % capacity\n    return [new, new_head, write, size]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('wrapped live data', solve([[N,None,None,N+1,N+2],3,3,7]), [[N+1,N+2,N,None,None,None,None],0,3,3])\ncheck('empty shifted ring', solve([[None]*4,3,0,6]), [[None]*6,0,0,0])\ncheck('one shifted value', solve([[None,N,None],1,1,5]), [[N,None,None,None,None],0,1,1])\ncheck('full old ring', solve([[N,N+1,N+2],1,3,5]), [[N+1,N+2,N,None,None],0,3,3])\ncheck('head zero', solve([[N,N+1,None],0,2,6]), [[N,N+1,None,None,None,None],0,2,2])\ncheck('two wrapped values', solve([[N,None,None,N+1],3,2,8]), [[N+1,N,None,None,None,None,None,None],0,2,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-ring-grow-count-preservation","generated_at":"2026-09-29T14:44:26.983422+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 count preservation invariant in ring-grow.","root_cause":"The logical size field is overwritten by the new allocation length.","sha256":"359f7dbb7f4d56a30c67edc577f68cf55b5c1dda0cfe18f37e66ea41e3051bbe","title":"Growth exposes backing capacity as live length · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.989,"exit_code":1,"observations":[{"actual":[[2,3,1,null,null,null,null],0,3,7],"check":"wrapped live data","expected":[[2,3,1,null,null,null,null],0,3,3],"passed":false},{"actual":[[null,null,null,null,null,null],0,0,0],"check":"empty shifted ring","expected":[[null,null,null,null,null,null],0,0,0],"passed":true},{"actual":[[1,null,null,null,null],0,1,5],"check":"one shifted value","expected":[[1,null,null,null,null],0,1,1],"passed":false},{"actual":[[2,3,1,null,null],0,3,5],"check":"full old ring","expected":[[2,3,1,null,null],0,3,3],"passed":false},{"actual":[[1,2,null,null,null,null],0,2,6],"check":"head zero","expected":[[1,2,null,null,null,null],0,2,2],"passed":false},{"actual":[[2,1,null,null,null,null,null,null],0,2,8],"check":"two wrapped values","expected":[[2,1,null,null,null,null,null,null],0,2,2],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wrapped live data\", \"actual\": [[2, 3, 1, null, null, null, null], 0, 3, 7], \"expected\": [[2, 3, 1, null, null, null, null], 0, 3, 3], \"passed\": false}, {\"check\": \"empty shifted ring\", \"actual\": [[null, null, null, null, null, null], 0, 0, 0], \"expected\": [[null, null, null, null, null, null], 0, 0, 0], \"passed\": true}, {\"check\": \"one shifted value\", \"actual\": [[1, null, null, null, null], 0, 1, 5], \"expected\": [[1, null, null, null, null], 0, 1, 1], \"passed\": false}, {\"check\": \"full old ring\", \"actual\": [[2, 3, 1, null, null], 0, 3, 5], \"expected\": [[2, 3, 1, null, null], 0, 3, 3], \"passed\": false}, {\"check\": \"head zero\", \"actual\": [[1, 2, null, null, null, null], 0, 2, 6], \"expected\": [[1, 2, null, null, null, null], 0, 2, 2], \"passed\": false}, {\"check\": \"two wrapped values\", \"actual\": [[2, 1, null, null, null, null, null, null], 0, 2, 8], \"expected\": [[2, 1, null, null, null, null, null, null], 0, 2, 2], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.874,"exit_code":1,"observations":[{"actual":[[2,3,1,null,null,null,null],0,3,7],"check":"wrapped live data","expected":[[2,3,1,null,null,null,null],0,3,3],"passed":false},{"actual":[[null,null,null,null,null,null],0,0,6],"check":"empty shifted ring","expected":[[null,null,null,null,null,null],0,0,0],"passed":false},{"actual":[[1,null,null,null,null],0,1,5],"check":"one shifted value","expected":[[1,null,null,null,null],0,1,1],"passed":false},{"actual":[[2,3,1,null,null],0,3,5],"check":"full old ring","expected":[[2,3,1,null,null],0,3,3],"passed":false},{"actual":[[1,2,null,null,null,null],0,2,6],"check":"head zero","expected":[[1,2,null,null,null,null],0,2,2],"passed":false},{"actual":[[2,1,null,null,null,null,null,null],0,2,8],"check":"two wrapped values","expected":[[2,1,null,null,null,null,null,null],0,2,2],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wrapped live data\", \"actual\": [[2, 3, 1, null, null, null, null], 0, 3, 7], \"expected\": [[2, 3, 1, null, null, null, null], 0, 3, 3], \"passed\": false}, {\"check\": \"empty shifted ring\", \"actual\": [[null, null, null, null, null, null], 0, 0, 6], \"expected\": [[null, null, null, null, null, null], 0, 0, 0], \"passed\": false}, {\"check\": \"one shifted value\", \"actual\": [[1, null, null, null, null], 0, 1, 5], \"expected\": [[1, null, null, null, null], 0, 1, 1], \"passed\": false}, {\"check\": \"full old ring\", \"actual\": [[2, 3, 1, null, null], 0, 3, 5], \"expected\": [[2, 3, 1, null, null], 0, 3, 3], \"passed\": false}, {\"check\": \"head zero\", \"actual\": [[1, 2, null, null, null, null], 0, 2, 6], \"expected\": [[1, 2, null, null, null, null], 0, 2, 2], \"passed\": false}, {\"check\": \"two wrapped values\", \"actual\": [[2, 1, null, null, null, null, null, null], 0, 2, 8], \"expected\": [[2, 1, null, null, null, null, null, null], 0, 2, 2], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.347,"exit_code":0,"observations":[{"actual":[[2,3,1,null,null,null,null],0,3,3],"check":"wrapped live data","expected":[[2,3,1,null,null,null,null],0,3,3],"passed":true},{"actual":[[null,null,null,null,null,null],0,0,0],"check":"empty shifted ring","expected":[[null,null,null,null,null,null],0,0,0],"passed":true},{"actual":[[1,null,null,null,null],0,1,1],"check":"one shifted value","expected":[[1,null,null,null,null],0,1,1],"passed":true},{"actual":[[2,3,1,null,null],0,3,3],"check":"full old ring","expected":[[2,3,1,null,null],0,3,3],"passed":true},{"actual":[[1,2,null,null,null,null],0,2,2],"check":"head zero","expected":[[1,2,null,null,null,null],0,2,2],"passed":true},{"actual":[[2,1,null,null,null,null,null,null],0,2,2],"check":"two wrapped values","expected":[[2,1,null,null,null,null,null,null],0,2,2],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"wrapped live data\", \"actual\": [[2, 3, 1, null, null, null, null], 0, 3, 3], \"expected\": [[2, 3, 1, null, null, null, null], 0, 3, 3], \"passed\": true}, {\"check\": \"empty shifted ring\", \"actual\": [[null, null, null, null, null, null], 0, 0, 0], \"expected\": [[null, null, null, null, null, null], 0, 0, 0], \"passed\": true}, {\"check\": \"one shifted value\", \"actual\": [[1, null, null, null, null], 0, 1, 1], \"expected\": [[1, null, null, null, null], 0, 1, 1], \"passed\": true}, {\"check\": \"full old ring\", \"actual\": [[2, 3, 1, null, null], 0, 3, 3], \"expected\": [[2, 3, 1, null, null], 0, 3, 3], \"passed\": true}, {\"check\": \"head zero\", \"actual\": [[1, 2, null, null, null, null], 0, 2, 2], \"expected\": [[1, 2, null, null, null, null], 0, 2, 2], \"passed\": true}, {\"check\": \"two wrapped values\", \"actual\": [[2, 1, null, null, null, null, null, null], 0, 2, 2], \"expected\": [[2, 1, null, null, null, null, null, null], 0, 2, 2], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}