{"abstract":"Deque iterator detects only increasing generation changes.","category":"Bounded deques","checks":7,"contract":"A fail-fast deque iterator tracks consumed logical count, captured structural epoch and traversal direction. Read at most limit elements; stale iterators emit no items and preserve position.","evaluation_group":"s3-bounded-deques-iterator-batch","failed_approach":"The partial repair still applies the incorrect transition to an admitted boundary or multi-element case.","family":"s3-bounded-deques-iterator-batch-epoch-inequality","id":"FA-46641","implementations":{"attempt":{"sha256":"ed22dfdee09ea6501e03bec0362dda8424002ec7475d4c198d1b269e80f364b8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    a,pos,limit,saved,current,reverse=x\n    if saved<current or (saved>current and not a):return ['stale',pos,[],saved]\n    remaining=max(0,len(a)-pos)\n    count=min(limit,remaining)\n    sequence=a[::-1] if reverse else a\n    values=sequence[pos:pos+count]\n    next_pos=pos+count\n    return ['ok',next_pos,values,saved]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([[N,N+1,N+2,N+3],1,2,3,3,False]), {1: ['ok', 3, [2, 3], 3], 2: ['ok', 3, [3, 4], 3], 3: ['ok', 3, [4, 5], 3], 4: ['ok', 3, [5, 6], 3], 5: ['ok', 3, [6, 7], 3]}[N])\ncheck('1', solve([[N,N+1,N+2],0,2,2,2,True]), {1: ['ok', 2, [3, 2], 2], 2: ['ok', 2, [4, 3], 2], 3: ['ok', 2, [5, 4], 2], 4: ['ok', 2, [6, 5], 2], 5: ['ok', 2, [7, 6], 2]}[N])\ncheck('2', solve([[N,N+1],1,5,4,4,False]), {1: ['ok', 2, [2], 4], 2: ['ok', 2, [3], 4], 3: ['ok', 2, [4], 4], 4: ['ok', 2, [5], 4], 5: ['ok', 2, [6], 4]}[N])\ncheck('3', solve([[N],0,3,1,2,False]), {1: ['stale', 0, [], 1], 2: ['stale', 0, [], 1], 3: ['stale', 0, [], 1], 4: ['stale', 0, [], 1], 5: ['stale', 0, [], 1]}[N])\ncheck('4', solve([[],0,2,0,0,True]), {1: ['ok', 0, [], 0], 2: ['ok', 0, [], 0], 3: ['ok', 0, [], 0], 4: ['ok', 0, [], 0], 5: ['ok', 0, [], 0]}[N])\ncheck('5', solve([[N,N+1],1,0,5,5,True]), {1: ['ok', 1, [], 5], 2: ['ok', 1, [], 5], 3: ['ok', 1, [], 5], 4: ['ok', 1, [], 5], 5: ['ok', 1, [], 5]}[N])\ncheck('6', solve([[N,N+1],0,1,3,2,False]), {1: ['stale', 0, [], 3], 2: ['stale', 0, [], 3], 3: ['stale', 0, [], 3], 4: ['stale', 0, [], 3], 5: ['stale', 0, [], 3]}[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":"93e949e7a7210f404d66ecf8a77b44ed7053f38140ce9236b2d97cac326d4b40","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    a,pos,limit,saved,current,reverse=x\n    if saved<current:return ['stale',pos,[],saved]\n    remaining=max(0,len(a)-pos)\n    count=min(limit,remaining)\n    sequence=a[::-1] if reverse else a\n    values=sequence[pos:pos+count]\n    next_pos=pos+count\n    return ['ok',next_pos,values,saved]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([[N,N+1,N+2,N+3],1,2,3,3,False]), {1: ['ok', 3, [2, 3], 3], 2: ['ok', 3, [3, 4], 3], 3: ['ok', 3, [4, 5], 3], 4: ['ok', 3, [5, 6], 3], 5: ['ok', 3, [6, 7], 3]}[N])\ncheck('1', solve([[N,N+1,N+2],0,2,2,2,True]), {1: ['ok', 2, [3, 2], 2], 2: ['ok', 2, [4, 3], 2], 3: ['ok', 2, [5, 4], 2], 4: ['ok', 2, [6, 5], 2], 5: ['ok', 2, [7, 6], 2]}[N])\ncheck('2', solve([[N,N+1],1,5,4,4,False]), {1: ['ok', 2, [2], 4], 2: ['ok', 2, [3], 4], 3: ['ok', 2, [4], 4], 4: ['ok', 2, [5], 4], 5: ['ok', 2, [6], 4]}[N])\ncheck('3', solve([[N],0,3,1,2,False]), {1: ['stale', 0, [], 1], 2: ['stale', 0, [], 1], 3: ['stale', 0, [], 1], 4: ['stale', 0, [], 1], 5: ['stale', 0, [], 1]}[N])\ncheck('4', solve([[],0,2,0,0,True]), {1: ['ok', 0, [], 0], 2: ['ok', 0, [], 0], 3: ['ok', 0, [], 0], 4: ['ok', 0, [], 0], 5: ['ok', 0, [], 0]}[N])\ncheck('5', solve([[N,N+1],1,0,5,5,True]), {1: ['ok', 1, [], 5], 2: ['ok', 1, [], 5], 3: ['ok', 1, [], 5], 4: ['ok', 1, [], 5], 5: ['ok', 1, [], 5]}[N])\ncheck('6', solve([[N,N+1],0,1,3,2,False]), {1: ['stale', 0, [], 3], 2: ['stale', 0, [], 3], 3: ['stale', 0, [], 3], 4: ['stale', 0, [], 3], 5: ['stale', 0, [], 3]}[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":"8df25ac41577cafa3cbc155288b37068a18d0629d53c7c9caf1961c097a09b0c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    a,pos,limit,saved,current,reverse=x\n    if saved!=current:return ['stale',pos,[],saved]\n    remaining=max(0,len(a)-pos)\n    count=min(limit,remaining)\n    sequence=a[::-1] if reverse else a\n    values=sequence[pos:pos+count]\n    next_pos=pos+count\n    return ['ok',next_pos,values,saved]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([[N,N+1,N+2,N+3],1,2,3,3,False]), {1: ['ok', 3, [2, 3], 3], 2: ['ok', 3, [3, 4], 3], 3: ['ok', 3, [4, 5], 3], 4: ['ok', 3, [5, 6], 3], 5: ['ok', 3, [6, 7], 3]}[N])\ncheck('1', solve([[N,N+1,N+2],0,2,2,2,True]), {1: ['ok', 2, [3, 2], 2], 2: ['ok', 2, [4, 3], 2], 3: ['ok', 2, [5, 4], 2], 4: ['ok', 2, [6, 5], 2], 5: ['ok', 2, [7, 6], 2]}[N])\ncheck('2', solve([[N,N+1],1,5,4,4,False]), {1: ['ok', 2, [2], 4], 2: ['ok', 2, [3], 4], 3: ['ok', 2, [4], 4], 4: ['ok', 2, [5], 4], 5: ['ok', 2, [6], 4]}[N])\ncheck('3', solve([[N],0,3,1,2,False]), {1: ['stale', 0, [], 1], 2: ['stale', 0, [], 1], 3: ['stale', 0, [], 1], 4: ['stale', 0, [], 1], 5: ['stale', 0, [], 1]}[N])\ncheck('4', solve([[],0,2,0,0,True]), {1: ['ok', 0, [], 0], 2: ['ok', 0, [], 0], 3: ['ok', 0, [], 0], 4: ['ok', 0, [], 0], 5: ['ok', 0, [], 0]}[N])\ncheck('5', solve([[N,N+1],1,0,5,5,True]), {1: ['ok', 1, [], 5], 2: ['ok', 1, [], 5], 3: ['ok', 1, [], 5], 4: ['ok', 1, [], 5], 5: ['ok', 1, [], 5]}[N])\ncheck('6', solve([[N,N+1],0,1,3,2,False]), {1: ['stale', 0, [], 3], 2: ['stale', 0, [], 3], 3: ['stale', 0, [], 3], 4: ['stale', 0, [], 3], 5: ['stale', 0, [], 3]}[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-iterator-batch-epoch-inequality","generated_at":"2026-09-29T14:44:33.955714+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 epoch inequality invariant in iterator-batch.","root_cause":"Deque iterator detects only increasing generation changes.","sha256":"e269407e5892eff8b84446149f22c482789a087f5f943c8c92ff62b35d2739fc","title":"Deque iterator detects only increasing generation changes · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.415,"exit_code":1,"observations":[{"actual":["ok",3,[2,3],3],"check":"0","expected":["ok",3,[2,3],3],"passed":true},{"actual":["ok",2,[3,2],2],"check":"1","expected":["ok",2,[3,2],2],"passed":true},{"actual":["ok",2,[2],4],"check":"2","expected":["ok",2,[2],4],"passed":true},{"actual":["stale",0,[],1],"check":"3","expected":["stale",0,[],1],"passed":true},{"actual":["ok",0,[],0],"check":"4","expected":["ok",0,[],0],"passed":true},{"actual":["ok",1,[],5],"check":"5","expected":["ok",1,[],5],"passed":true},{"actual":["ok",1,[1],3],"check":"6","expected":["stale",0,[],3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [\"ok\", 3, [2, 3], 3], \"expected\": [\"ok\", 3, [2, 3], 3], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"ok\", 2, [3, 2], 2], \"expected\": [\"ok\", 2, [3, 2], 2], \"passed\": true}, {\"check\": \"2\", \"actual\": [\"ok\", 2, [2], 4], \"expected\": [\"ok\", 2, [2], 4], \"passed\": true}, {\"check\": \"3\", \"actual\": [\"stale\", 0, [], 1], \"expected\": [\"stale\", 0, [], 1], \"passed\": true}, {\"check\": \"4\", \"actual\": [\"ok\", 0, [], 0], \"expected\": [\"ok\", 0, [], 0], \"passed\": true}, {\"check\": \"5\", \"actual\": [\"ok\", 1, [], 5], \"expected\": [\"ok\", 1, [], 5], \"passed\": true}, {\"check\": \"6\", \"actual\": [\"ok\", 1, [1], 3], \"expected\": [\"stale\", 0, [], 3], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.859,"exit_code":1,"observations":[{"actual":["ok",3,[2,3],3],"check":"0","expected":["ok",3,[2,3],3],"passed":true},{"actual":["ok",2,[3,2],2],"check":"1","expected":["ok",2,[3,2],2],"passed":true},{"actual":["ok",2,[2],4],"check":"2","expected":["ok",2,[2],4],"passed":true},{"actual":["stale",0,[],1],"check":"3","expected":["stale",0,[],1],"passed":true},{"actual":["ok",0,[],0],"check":"4","expected":["ok",0,[],0],"passed":true},{"actual":["ok",1,[],5],"check":"5","expected":["ok",1,[],5],"passed":true},{"actual":["ok",1,[1],3],"check":"6","expected":["stale",0,[],3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [\"ok\", 3, [2, 3], 3], \"expected\": [\"ok\", 3, [2, 3], 3], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"ok\", 2, [3, 2], 2], \"expected\": [\"ok\", 2, [3, 2], 2], \"passed\": true}, {\"check\": \"2\", \"actual\": [\"ok\", 2, [2], 4], \"expected\": [\"ok\", 2, [2], 4], \"passed\": true}, {\"check\": \"3\", \"actual\": [\"stale\", 0, [], 1], \"expected\": [\"stale\", 0, [], 1], \"passed\": true}, {\"check\": \"4\", \"actual\": [\"ok\", 0, [], 0], \"expected\": [\"ok\", 0, [], 0], \"passed\": true}, {\"check\": \"5\", \"actual\": [\"ok\", 1, [], 5], \"expected\": [\"ok\", 1, [], 5], \"passed\": true}, {\"check\": \"6\", \"actual\": [\"ok\", 1, [1], 3], \"expected\": [\"stale\", 0, [], 3], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.715,"exit_code":0,"observations":[{"actual":["ok",3,[2,3],3],"check":"0","expected":["ok",3,[2,3],3],"passed":true},{"actual":["ok",2,[3,2],2],"check":"1","expected":["ok",2,[3,2],2],"passed":true},{"actual":["ok",2,[2],4],"check":"2","expected":["ok",2,[2],4],"passed":true},{"actual":["stale",0,[],1],"check":"3","expected":["stale",0,[],1],"passed":true},{"actual":["ok",0,[],0],"check":"4","expected":["ok",0,[],0],"passed":true},{"actual":["ok",1,[],5],"check":"5","expected":["ok",1,[],5],"passed":true},{"actual":["stale",0,[],3],"check":"6","expected":["stale",0,[],3],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [\"ok\", 3, [2, 3], 3], \"expected\": [\"ok\", 3, [2, 3], 3], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"ok\", 2, [3, 2], 2], \"expected\": [\"ok\", 2, [3, 2], 2], \"passed\": true}, {\"check\": \"2\", \"actual\": [\"ok\", 2, [2], 4], \"expected\": [\"ok\", 2, [2], 4], \"passed\": true}, {\"check\": \"3\", \"actual\": [\"stale\", 0, [], 1], \"expected\": [\"stale\", 0, [], 1], \"passed\": true}, {\"check\": \"4\", \"actual\": [\"ok\", 0, [], 0], \"expected\": [\"ok\", 0, [], 0], \"passed\": true}, {\"check\": \"5\", \"actual\": [\"ok\", 1, [], 5], \"expected\": [\"ok\", 1, [], 5], \"passed\": true}, {\"check\": \"6\", \"actual\": [\"stale\", 0, [], 3], \"expected\": [\"stale\", 0, [], 3], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}