| … | … | @@ -0,0 +1,57 @@ | |
| 25 | + | // Status events may queue behind a generated rename or another checkout. | |
| 26 | + | if ((yield* git.currentBranch(input.cwd)) !== input.refName) return; | |
| 27 | + | for (const thread of sharing) { | |
| 28 | + | yield* threads.dispatch({ | |
🟠 High orchestration-v2/WorktreeBranchSync.ts:28
A concurrent expectedBranch or expectedWorktreePath conflict aborts reconcile at this dispatch, leaving every later shared thread stale; because unchanged local status is not republished, those threads are not retried. Catch expected conflicts around each thread’s dispatch so the loop continues.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
| 1 | In file @apps/server/src/orchestration-v2/WorktreeBranchSync.ts around line 28: |
| 2 | |
| 3 | A concurrent `expectedBranch` or `expectedWorktreePath` conflict aborts `reconcile` at this dispatch, leaving every later shared thread stale; because unchanged local status is not republished, those threads are not retried. Catch expected conflicts around each thread’s dispatch so the loop continues. |
Note
Generated by GPT 6.1 Sol
Confirmed with a regression case that failed before the fix. Reconciliation now catches OrchestratorDispatchError per thread, so a rejected update does not prevent later shared or archived threads from updating. Other failures still reach the worker error handler. Fixed in c51a06eb44; check:changed passes with 138 tests.