{"record":{"id":"02199dc6bf3f5695","repo":"BloopAI/vibe-kanban","slug":"msg","errorCode":null,"errorMessage":"{msg}","messagePattern":"\\{msg\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/local-deployment/src/container.rs","lineNumber":156,"sourceCode":"            WorkspaceError::Worktree(err) => ContainerError::Worktree(err),\n            WorkspaceError::GitService(err) => ContainerError::GitServiceError(err),\n            WorkspaceError::Io(err) => ContainerError::Io(err),\n            WorkspaceError::NoRepositories => {\n                ContainerError::Other(anyhow!(\"No repositories provided\"))\n            }\n            WorkspaceError::Repo(err) => ContainerError::Other(anyhow!(err)),\n            WorkspaceError::WorkspaceNotFound => {\n                ContainerError::Other(anyhow!(\"Workspace not found\"))\n            }\n            WorkspaceError::RepoAlreadyAttached => {\n                ContainerError::Other(anyhow!(\"Repository already attached to workspace\"))\n            }\n            WorkspaceError::BranchNotFound { repo_name, branch } => ContainerError::Other(anyhow!(\n                \"Branch '{}' does not exist in repository '{}'\",\n                branch,\n                repo_name\n            )),\n            WorkspaceError::PartialCreation(msg) => ContainerError::Other(anyhow!(msg)),\n        }\n    }\n\n    async fn workspace_repo_inputs(\n        &self,\n        workspace_id: Uuid,\n    ) -> Result<(Vec<Repo>, Vec<RepoWorkspaceInput>), ContainerError> {\n        let workspace_repos =\n            WorkspaceRepo::find_by_workspace_id(&self.db.pool, workspace_id).await?;\n        if workspace_repos.is_empty() {\n            return Err(ContainerError::Other(anyhow!(\n                \"Workspace has no repositories configured\"\n            )));\n        }\n\n        let repositories =\n            WorkspaceRepo::find_repos_for_workspace(&self.db.pool, workspace_id).await?;\n        let target_branches: HashMap<_, _> = workspace_repos","sourceCodeStart":138,"sourceCodeEnd":174,"githubUrl":"https://github.com/BloopAI/vibe-kanban/blob/4deb7eca8f381f7cbc1f9d15515a9ab8f8009053/crates/local-deployment/src/container.rs#L138-L174","documentation":"map_workspace_manager_error passes through WorkspaceError::PartialCreation verbatim as the error message. This is thrown when creating a workspace only partially succeeded (some repos/worktrees were set up, others failed) and the manager aborts, wrapping whatever descriptive message the partial-failure produced. The message content therefore varies and describes which step of the multi-repo creation failed.","triggerScenarios":"Creating a multi-repo workspace where one repo's worktree/branch setup fails after others already succeeded, causing the manager to return PartialCreation(msg).","commonSituations":"One repo in a multi-repo project has a bad branch or permission problem while the rest initialize fine; network failure mid-clone; disk-full during worktree creation.","solutions":["Read the inner msg to identify which repo/step failed and fix that specific cause (bad branch, permissions, disk).","Clean up the partially created workspace (delete workspace / remove worktrees) and retry creation from a clean state.","Make workspace creation transactional or add rollback so partial state does not persist.","Fix the underlying per-repo issue then re-run the create call."],"exampleFix":"// before\nlet ws = container.create(&CreateWorkspaceReq { repos: all_repos, .. }).await?;\n// after\nmatch container.create(&req).await {\n    Err(ContainerError::Other(e)) if !e.to_string().is_empty() => {\n        container.delete_workspace(ws_id).await.ok(); // roll back partial state\n        return Err(e);\n    }\n    r => r?,\n}","handlingStrategy":"fallback","validationCode":"// pre-validate every repo/branch in the request before creating the workspace\nfor r in &req.repos {\n    ensure_branch_exists(&r.repo_path, &r.target_branch).await?;\n}","typeGuard":null,"tryCatchPattern":"match container.create(&req).await {\n    Err(ContainerError::Other(e)) => {\n        container.delete_workspace(ws_id).await.ok(); // clean partial state\n        Err(e)\n    }\n    ok => ok,\n}","preventionTips":["Pre-flight every repo and branch before multi-repo creation.","Always clean up after a failed create to avoid orphaned worktrees.","Make creation transactional or add server-side rollback.","Log the inner partial message verbatim for diagnosis."],"tags":["workspace","partial-failure","cleanup"],"backgroundTag":"partial-creation-failure","analyzedSha":"4deb7eca8f381f7cbc1f9d15515a9ab8f8009053","analyzedAt":"2026-08-29T09:24:13.446Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}