Merge
Under git.branch_strategy: milestone (the generated default), each
milestone works on its own dedicated branch for its full lifecycle. Once a
milestone is completed:
pitway milestone-merge M001 # merges into base_branch
pitway milestone-merge M001 --target release # or an explicit target
--target defaults to the milestone's own base_branch. Re-running
milestone-merge is a safe, idempotent no-op once the merge has already
landed.
Not automatic
milestone-complete does not run this for you -- merging is invoked
explicitly, when you're actually ready to integrate the branch. This keeps
"the milestone's work is verified and done" and "the milestone's branch is
now part of your mainline" as two separate, deliberate decisions.
The other branch strategy
Setting git.branch_strategy: main instead commits milestones directly
to the current branch, skipping the dedicated-branch-and-merge step
entirely -- there's nothing for milestone-merge to do under that
strategy.