fix(FN-5279): apply reuse-mode squash to local main and guard executor-lease race
In reuse-task-worktree mode the merger detaches HEAD in the task worktree so the squash commit lands on detached HEAD; nothing previously advanced the project root's local integration branch, so changes never appeared on main. Step 5c now applies the squash to projectRootDir via git merge --ff-only, falling back to a regular merge with AI conflict resolution if main has diverged. pushAfterMerge (when enabled) now runs from projectRootDir where the branch was just advanced, so parsePushRemoteTarget can resolve a branch instead of failing on the worktree's detached HEAD. Also tightens acquireReuseHandoff: the executor-lease check above the queue-lease acquisition was non-atomic, letting a local executor grab the task between checks. Re-check after acquisition and release the queue lease with a precise diagnostic instead of proceeding into a generic failure later. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
5
.changeset/fix-fn-5279-reuse-mode-push.md
Normal file
5
.changeset/fix-fn-5279-reuse-mode-push.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@runfusion/fusion": patch
|
||||
---
|
||||
|
||||
Fix reuse-task-worktree merge mode (FN-5279) never applying the squash commit to the project root's local integration branch. The merger detaches HEAD in the task worktree and lands the squash on the detached HEAD; previously nothing advanced the project root's local `main`, so changes never appeared on the user's `main` (and any subsequent `pushAfterMerge` would push the stale ref or fail outright because `parsePushRemoteTarget` can't resolve a branch from a detached HEAD). A new step 5c now applies the squash to the project root's integration branch via `git merge --ff-only`, falling back to a regular merge with AI conflict resolution if `main` has diverged. Push-after-merge (when enabled) now runs from the project root where the integration branch was just advanced.
|
||||
Reference in New Issue
Block a user