mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-25 17:45:53 +01:00
PR-preparation tasks could never attach an isolated execution workspace on a pre-existing branch: child-issue creation inherited the source issue's workspace binding (often the shared primary checkout), and the worktree runtime only knew template-derived branch names, silently creating a fresh branch off base when the rendered name did not exist. Add workspaceStrategy.existingBranch as the smallest explicit contract: - Shared type + issue validator accept the pin only with isolated mode and a git_worktree strategy, reject branchTemplate alongside it, and validate the branch-name shape. - realizeExecutionWorkspace gains an exact-branch mode: verify the branch exists (fail closed otherwise), reuse a registered worktree that already has it checked out (including legacy .worktrees/ paths), otherwise attach it under the managed worktree parent without -b. Exact mode never creates, renames, fast-forwards, resets, or reconciles the requested branch, and never falls back to project_primary or a derived branch. - Dispatch ignores an inherited reuse_existing workspace binding whose recorded branch does not equal the pinned branch and realizes the pinned branch instead. - scripts/repair-pr-prep-workspace-attachment.mjs converts stranded PR-prep issues to the new contract via the company-scoped API without touching any git branch. Co-authored-by: Paperclip <noreply@paperclip.ing> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>