{"record":{"id":"f5b8129eeb83fce7","repo":"openai/codex","slug":"project-project-id-cannot-be-moved-before-itself","errorCode":null,"errorMessage":"project {project_id} cannot be moved before itself","messagePattern":"project (.+?) cannot be moved before itself","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/state/src/runtime/projects.rs","lineNumber":310,"sourceCode":"    /// Returns None when the moved project does not exist and Some(false) for a no-op.\n    pub async fn move_project(\n        &self,\n        project_id: &str,\n        before_project_id: Option<&str>,\n    ) -> anyhow::Result<Option<bool>> {\n        let mut tx = self.pool.begin_with(\"BEGIN IMMEDIATE\").await?;\n        let mut project_ids = sqlx::query_scalar::<_, String>(\n            \"SELECT id FROM projects ORDER BY position ASC, id ASC\",\n        )\n        .fetch_all(&mut *tx)\n        .await?;\n        let Some(current_index) = project_ids.iter().position(|id| id == project_id) else {\n            tx.rollback().await?;\n            return Ok(None);\n        };\n        if before_project_id == Some(project_id) {\n            tx.rollback().await?;\n            anyhow::bail!(\"project {project_id} cannot be moved before itself\");\n        }\n        let original_project_ids = project_ids.clone();\n        project_ids.remove(current_index);\n        let next_index = if let Some(before_project_id) = before_project_id {\n            project_ids\n                .iter()\n                .position(|id| id == before_project_id)\n                .ok_or_else(|| anyhow::anyhow!(\"before project not found: {before_project_id}\"))?\n        } else {\n            project_ids.len()\n        };\n        project_ids.insert(next_index, project_id.to_string());\n        if project_ids == original_project_ids {\n            tx.rollback().await?;\n            return Ok(Some(false));\n        }\n        for (position, id) in project_ids.iter().enumerate() {\n            sqlx::query(\"UPDATE projects SET position = ? WHERE id = ?\")","sourceCodeStart":292,"sourceCodeEnd":328,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/state/src/runtime/projects.rs#L292-L328","documentation":"Error \"project {project_id} cannot be moved before itself\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/state/src/runtime/projects.rs:310 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"}