Branch naming
autoducks uses a predictable, issue-number-rooted branch naming convention. Every branch traces back to its source issue, and the prefix encodes the issue kind: Features get feature/…, Bugs get fix/….
Patterns
Section titled “Patterns”| Context | Pattern | Example |
|---|---|---|
| Feature pipeline branch | feature/{id}-{slug} | feature/42-user-auth |
| Bug pipeline branch | fix/{id}-{slug} | fix/57-login-crash |
| Task under a pipeline branch | {feature|fix}/{parent_id}-issue-{task_id}-{timestamp} | feature/42-issue-43-1751941200 |
| Fix-agent retry branch | {feature|fix}/{parent_id}-issue-{task_id}-fix-{timestamp} | feature/42-issue-43-fix-1751943000 |
Task branches inherit the prefix of the pipeline branch they’re cut from. The fix-agent -fix-{timestamp} suffix is unrelated to the fix/ prefix — the former marks a retry attempt, the latter marks a Bug pipeline.
The Maestro’s PR-merged advancement trigger listens on both feature/* and fix/*.
Slug generation
Section titled “Slug generation”Slugs are generated from the issue title: lowercase, non-alphanumerics to hyphens, collapsed, truncated to 50 characters.
"Add dark mode toggle to settings" → feature/42-add-dark-mode-toggle-to-settings
Why timestamps in task branches?
Section titled “Why timestamps in task branches?”- Multiple execution attempts never collide.
- The Fix agent locates partial work from prior attempts via prefix matching (newest wins).
- Each branch identifies which attempt it belongs to.
Branch relationships
Section titled “Branch relationships”main (base_branch)└── feature/42-my-feature ← pipeline branch (draft PR → integration_branch, human review) ├── feature/42-issue-43-... ← task 1 branch (PR → pipeline branch, auto-merge) ├── feature/42-issue-44-... ← task 2 branch (PR → pipeline branch, auto-merge) └── feature/42-issue-45-... ← task 3 branch (PR → pipeline branch, auto-merge)For Bugs, replace feature/42-… with fix/57-… — the shape is identical.
Lifecycle
Section titled “Lifecycle”| Branch type | Created by | Deleted by |
|---|---|---|
| Pipeline branch | Maestro | Close agent (/close) |
| Task branch | Developer | Merge policy (GitHub auto-deletes on PR merge) |
| Fix retry branch | Fix agent | Merge policy |
Pipeline branches are not auto-deleted when the final PR merges — GitHub’s delete-on-merge policy handles task and fix branches.