{"record":{"id":"09d496bda80fa8e2","repo":"openai/codex","slug":"max-attempts-must-be-1","errorCode":null,"errorMessage":"max_attempts must be >= 1","messagePattern":"max_attempts must be >= 1","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"sdk/python/src/openai_codex/retry.py","lineNumber":23,"sourceCode":"from typing import Callable, TypeVar\n\nfrom .errors import is_retryable_error\n\nT = TypeVar(\"T\")\n\n\ndef retry_on_overload(\n    op: Callable[[], T],\n    *,\n    max_attempts: int = 3,\n    initial_delay_s: float = 0.25,\n    max_delay_s: float = 2.0,\n    jitter_ratio: float = 0.2,\n) -> T:\n    \"\"\"Retry helper for transient server-overload errors.\"\"\"\n\n    if max_attempts < 1:\n        raise ValueError(\"max_attempts must be >= 1\")\n\n    delay = initial_delay_s\n    attempt = 0\n    while True:\n        attempt += 1\n        try:\n            return op()\n        except Exception as exc:\n            if attempt >= max_attempts:\n                raise\n            if not is_retryable_error(exc):\n                raise\n\n            jitter = delay * jitter_ratio\n            sleep_for = min(max_delay_s, delay) + random.uniform(-jitter, jitter)\n            if sleep_for > 0:\n                time.sleep(sleep_for)\n            delay = min(max_delay_s, delay * 2)","sourceCodeStart":5,"sourceCodeEnd":41,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/sdk/python/src/openai_codex/retry.py#L5-L41","documentation":"Error \"max_attempts must be >= 1\" thrown in openai/codex.","triggerScenarios":"Thrown at sdk/python/src/openai_codex/retry.py:23 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass max_attempts of at least 1."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}