{"record":{"id":"c572350146b59bb3","repo":"Significant-Gravitas/AutoGPT","slug":"job-not-found","errorCode":null,"errorMessage":"job not found","messagePattern":"job not found","errorType":"http","errorClass":"HTTPException","httpStatus":404,"severity":"info","filePath":"autogpt_platform/backend/backend/api/features/admin/memory_admin_routes.py","lineNumber":803,"sourceCode":")\nasync def get_dream_pass_status(\n    request: Request,\n    user_id: Annotated[str, Path(description=\"User id or 'me'\")],\n    job_id: Annotated[str, Path(description=\"Job id returned by the POST\")],\n    caller_id: Annotated[str, Depends(get_user_id)],\n    jwt_payload: Annotated[dict, Security(get_jwt_payload)],\n) -> DreamJobStatus:\n    \"\"\"Read the current status of a fire-and-forget dream pass job.\"\"\"\n    target = _resolve_user_id(user_id, caller_id)\n    _audit_cross_user_access(\n        request=request,\n        caller_id=caller_id,\n        target_id=target,\n        jwt_payload=jwt_payload,\n    )\n    status = await read_status(kind=\"dream_pass\", job_id=job_id)\n    if status is None:\n        raise HTTPException(status_code=404, detail=\"job not found\")\n    if status.user_id != target:\n        raise HTTPException(status_code=403, detail=\"job belongs to a different user\")\n    return DreamJobStatus.model_validate(status.model_dump())\n\n\n@router.post(\"/{user_id}/ratification\", response_model=RatificationResult)\nasync def trigger_ratification_pass(\n    request: Request,\n    user_id: Annotated[str, Path(description=\"User id or 'me'\")],\n    caller_id: Annotated[str, Depends(get_user_id)],\n    jwt_payload: Annotated[dict, Security(get_jwt_payload)],\n) -> RatificationResult:\n    \"\"\"Trigger an on-demand ratification sweep for the user (in isolation).\n\n    Forwards to ``Scheduler.execute_ratification_pass_now``. Runs ONLY\n    the ratification supersession sweep — does NOT run dream pass or\n    community rebuild. Useful for testing ratification behavior\n    without the full nightly fan-out.","sourceCodeStart":785,"sourceCodeEnd":821,"githubUrl":"https://github.com/Significant-Gravitas/AutoGPT/blob/9c8bb5550f446ba5d3046b78896578742495b3cf/autogpt_platform/backend/backend/api/features/admin/memory_admin_routes.py#L785-L821","documentation":"HTTP 404 from the dream-pass job status endpoint. The route looks up the job via read_status(kind='dream_pass', job_id=job_id); if no status row exists for that exact kind+job_id combination, it returns 404 'job not found'. The job_id must be the UUID returned by the POST that triggered the pass.","triggerScenarios":"GET /{user_id}/dream/{job_id}/status with a job_id that was never issued, was issued for a different job kind (e.g. a nightly or rebuild job id), was truncated/copied incorrectly, or whose status record expired or was cleared from storage.","commonSituations":"Polling with a job_id from a different endpoint family (nightly vs dream_pass); losing the job_id between the 202 response and the status poll (page reload, lost state); status store flushed/reset (Redis restart without persistence) so even valid jobs 404; typos from manual transcription of the UUID.","solutions":["Confirm you are polling the dream-pass status route with the exact job_id from the POST /{user_id}/dream 202 response body","Verify the status backing store (where read_status persists) is up and was not wiped","Check logs that the POST actually returned 202 and printed the job_id","If the store was reset, re-trigger the dream pass to obtain a fresh job_id"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"from uuid import UUID\n\ndef valid_job_id(job_id: str) -> bool:\n    try:\n        UUID(job_id)\n        return True\n    except ValueError:\n        return False\n\nassert valid_job_id(job_id), \"job_id must be the UUID from the trigger response\"","typeGuard":null,"tryCatchPattern":"except httpx.HTTPStatusError as e:\n    if e.response.status_code == 404:\n        stop_polling()  # job unknown; re-trigger rather than retry forever\n    raise","preventionTips":["Persist the trigger response's job_id immediately (keyed by user and kind)","Poll the status route matching the trigger route family","UUID.parse job ids before using them"],"tags":["http-404","job-status","dream-pass","not-found"],"backgroundTag":null,"analyzedSha":"9c8bb5550f446ba5d3046b78896578742495b3cf","analyzedAt":"2026-08-14T17:17:21.957Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}