From 3c04b763fdb7d8c0b58da954eaaeca2c7822ef64 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Thu, 18 Dec 2025 20:08:58 -0800 Subject: [PATCH] feat: add merge-request issue type for refinery processing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add TypeMergeRequest as a valid issue type for tracking merge queue entries. This enables the refinery to track merge requests with structured metadata (branch, target, source_issue, worker, rig). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- cmd/bd/create.go | 2 +- cmd/bd/list.go | 2 +- cmd/bd/show.go | 2 +- internal/types/types.go | 15 ++++++++------- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/cmd/bd/create.go b/cmd/bd/create.go index 353a4944..8a264620 100644 --- a/cmd/bd/create.go +++ b/cmd/bd/create.go @@ -392,7 +392,7 @@ func init() { createCmd.Flags().String("title", "", "Issue title (alternative to positional argument)") createCmd.Flags().Bool("silent", false, "Output only the issue ID (for scripting)") registerPriorityFlag(createCmd, "2") - createCmd.Flags().StringP("type", "t", "task", "Issue type (bug|feature|task|epic|chore)") + createCmd.Flags().StringP("type", "t", "task", "Issue type (bug|feature|task|epic|chore|merge-request)") registerCommonIssueFlags(createCmd) createCmd.Flags().StringSliceP("labels", "l", []string{}, "Labels (comma-separated)") createCmd.Flags().StringSlice("label", []string{}, "Alias for --labels") diff --git a/cmd/bd/list.go b/cmd/bd/list.go index e86945b6..63488b8e 100644 --- a/cmd/bd/list.go +++ b/cmd/bd/list.go @@ -519,7 +519,7 @@ func init() { listCmd.Flags().StringP("status", "s", "", "Filter by status (open, in_progress, blocked, closed)") registerPriorityFlag(listCmd, "") listCmd.Flags().StringP("assignee", "a", "", "Filter by assignee") - listCmd.Flags().StringP("type", "t", "", "Filter by type (bug, feature, task, epic, chore)") + listCmd.Flags().StringP("type", "t", "", "Filter by type (bug, feature, task, epic, chore, merge-request)") listCmd.Flags().StringSliceP("label", "l", []string{}, "Filter by labels (AND: must have ALL). Can combine with --label-any") listCmd.Flags().StringSlice("label-any", []string{}, "Filter by labels (OR: must have AT LEAST ONE). Can combine with --label") listCmd.Flags().String("title", "", "Filter by title text (case-insensitive substring match)") diff --git a/cmd/bd/show.go b/cmd/bd/show.go index b7d084f9..eaabb514 100644 --- a/cmd/bd/show.go +++ b/cmd/bd/show.go @@ -1313,7 +1313,7 @@ func init() { updateCmd.Flags().StringP("status", "s", "", "New status") registerPriorityFlag(updateCmd, "") updateCmd.Flags().String("title", "", "New title") - updateCmd.Flags().StringP("type", "t", "", "New type (bug|feature|task|epic|chore)") + updateCmd.Flags().StringP("type", "t", "", "New type (bug|feature|task|epic|chore|merge-request)") registerCommonIssueFlags(updateCmd) updateCmd.Flags().String("notes", "", "Additional notes") updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance") diff --git a/internal/types/types.go b/internal/types/types.go index a87c00ea..6f6f4bfd 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -218,18 +218,19 @@ type IssueType string // Issue type constants const ( - TypeBug IssueType = "bug" - TypeFeature IssueType = "feature" - TypeTask IssueType = "task" - TypeEpic IssueType = "epic" - TypeChore IssueType = "chore" - TypeMessage IssueType = "message" // Ephemeral communication between workers + TypeBug IssueType = "bug" + TypeFeature IssueType = "feature" + TypeTask IssueType = "task" + TypeEpic IssueType = "epic" + TypeChore IssueType = "chore" + TypeMessage IssueType = "message" // Ephemeral communication between workers + TypeMergeRequest IssueType = "merge-request" // Merge queue entry for refinery processing ) // IsValid checks if the issue type value is valid func (t IssueType) IsValid() bool { switch t { - case TypeBug, TypeFeature, TypeTask, TypeEpic, TypeChore, TypeMessage: + case TypeBug, TypeFeature, TypeTask, TypeEpic, TypeChore, TypeMessage, TypeMergeRequest: return true } return false