fix: prevent stale duplicate planning tasks from blocking phase completion
Three fixes for phases getting stuck when a detail task crashes and is retried: 1. detailPhase mutation (architect.ts): clean up orphaned pending/in_progress detail tasks before creating new ones, preventing duplicates at the source 2. orchestrator recovery: detect and complete stale duplicate planning tasks (same category+phase, one completed, one pending) 3. ensureBranch: catch "already exists" TOCTOU race instead of blocking phase
This commit is contained in:
@@ -46,8 +46,17 @@ export class SimpleGitBranchManager implements BranchManager {
|
||||
return;
|
||||
}
|
||||
|
||||
await git.branch([branch, baseBranch]);
|
||||
log.info({ repoPath, branch, baseBranch }, 'branch created');
|
||||
try {
|
||||
await git.branch([branch, baseBranch]);
|
||||
log.info({ repoPath, branch, baseBranch }, 'branch created');
|
||||
} catch (err) {
|
||||
// Handle TOCTOU race: branch may have been created between the exists check and now
|
||||
if (err instanceof Error && err.message.includes('already exists')) {
|
||||
log.debug({ repoPath, branch }, 'branch created by concurrent process');
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async mergeBranch(repoPath: string, sourceBranch: string, targetBranch: string): Promise<MergeResult> {
|
||||
|
||||
Reference in New Issue
Block a user