BloopAI/vibe-kanban · error
{msg}
Error message
{msg} What it means
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.
Source
Thrown at crates/local-deployment/src/container.rs:156
WorkspaceError::Worktree(err) => ContainerError::Worktree(err),
WorkspaceError::GitService(err) => ContainerError::GitServiceError(err),
WorkspaceError::Io(err) => ContainerError::Io(err),
WorkspaceError::NoRepositories => {
ContainerError::Other(anyhow!("No repositories provided"))
}
WorkspaceError::Repo(err) => ContainerError::Other(anyhow!(err)),
WorkspaceError::WorkspaceNotFound => {
ContainerError::Other(anyhow!("Workspace not found"))
}
WorkspaceError::RepoAlreadyAttached => {
ContainerError::Other(anyhow!("Repository already attached to workspace"))
}
WorkspaceError::BranchNotFound { repo_name, branch } => ContainerError::Other(anyhow!(
"Branch '{}' does not exist in repository '{}'",
branch,
repo_name
)),
WorkspaceError::PartialCreation(msg) => ContainerError::Other(anyhow!(msg)),
}
}
async fn workspace_repo_inputs(
&self,
workspace_id: Uuid,
) -> Result<(Vec<Repo>, Vec<RepoWorkspaceInput>), ContainerError> {
let workspace_repos =
WorkspaceRepo::find_by_workspace_id(&self.db.pool, workspace_id).await?;
if workspace_repos.is_empty() {
return Err(ContainerError::Other(anyhow!(
"Workspace has no repositories configured"
)));
}
let repositories =
WorkspaceRepo::find_repos_for_workspace(&self.db.pool, workspace_id).await?;
let target_branches: HashMap<_, _> = workspace_reposView on GitHub (pinned to 4deb7eca8f)
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.
Example fix
// before
let ws = container.create(&CreateWorkspaceReq { repos: all_repos, .. }).await?;
// after
match container.create(&req).await {
Err(ContainerError::Other(e)) if !e.to_string().is_empty() => {
container.delete_workspace(ws_id).await.ok(); // roll back partial state
return Err(e);
}
r => r?,
} Defensive patterns
Strategy: fallback
Validate before calling
// pre-validate every repo/branch in the request before creating the workspace
for r in &req.repos {
ensure_branch_exists(&r.repo_path, &r.target_branch).await?;
} Try / catch
match container.create(&req).await {
Err(ContainerError::Other(e)) => {
container.delete_workspace(ws_id).await.ok(); // clean partial state
Err(e)
}
ok => ok,
} Prevention
- 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.
When it happens
Trigger: Creating a multi-repo workspace where one repo's worktree/branch setup fails after others already succeeded, causing the manager to return PartialCreation(msg).
Common situations: 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.
Related errors
- result.error
- No setup script configured for this project
- Cannot run script while another process is running
- Failed to run setup script
- No cleanup script configured for this project
AI-assisted analysis of BloopAI/vibe-kanban@4deb7eca8f (2026-08-29).
Data as JSON: /api/errors/02199dc6bf3f5695.
Report an issue: GitHub.