{"record":{"id":"3a5bfa1da9eed982","repo":"openai/codex","slug":"project-not-found-project-id","errorCode":null,"errorMessage":"project not found: {project_id}","messagePattern":"project not found: (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/state/src/runtime/projects.rs","lineNumber":26,"sourceCode":"use crate::Project;\nuse crate::ProjectRoot;\nuse crate::ProjectsPage;\n\nimpl StateRuntime {\n    pub async fn set_thread_project(\n        &self,\n        thread_id: &str,\n        project_id: Option<&str>,\n    ) -> anyhow::Result<Option<Option<String>>> {\n        let mut tx = self.pool.begin_with(\"BEGIN IMMEDIATE\").await?;\n        if let Some(project_id) = project_id {\n            let exists = sqlx::query_scalar::<_, i64>(\"SELECT COUNT(*) FROM projects WHERE id = ?\")\n                .bind(project_id)\n                .fetch_one(&mut *tx)\n                .await?;\n            if exists == 0 {\n                tx.rollback().await?;\n                anyhow::bail!(\"project not found: {project_id}\");\n            }\n        }\n        let previous =\n            sqlx::query_scalar::<_, Option<String>>(\"SELECT project_id FROM threads WHERE id = ?\")\n                .bind(thread_id)\n                .fetch_optional(&mut *tx)\n                .await?;\n        let Some(previous) = previous else {\n            tx.rollback().await?;\n            return Ok(None);\n        };\n        if previous.as_deref() != project_id {\n            sqlx::query(\"UPDATE threads SET project_id = ? WHERE id = ?\")\n                .bind(project_id)\n                .bind(thread_id)\n                .execute(&mut *tx)\n                .await?;\n        }","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/state/src/runtime/projects.rs#L8-L44","documentation":"Error \"project not found: {project_id}\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/state/src/runtime/projects.rs:26 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"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"}