From fe2ac97597078edcc66eb2f66a6dc2c38c12dd36 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Tue, 23 Dec 2025 15:05:19 -0800 Subject: [PATCH] fix: Exclude workflow types from bd ready by default (gt-7xtn) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit merge-request, gate, molecule, and message types are internal workflow items processed by Refinery/Deacon, not work for polecats to claim. These are now excluded from bd ready unless explicitly requested via --type flag. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/storage/memory/memory.go | 14 ++++++++++++++ internal/storage/sqlite/ready.go | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/internal/storage/memory/memory.go b/internal/storage/memory/memory.go index c44882d0..60ba8268 100644 --- a/internal/storage/memory/memory.go +++ b/internal/storage/memory/memory.go @@ -935,6 +935,20 @@ func (m *MemoryStorage) GetReadyWork(ctx context.Context, filter types.WorkFilte continue } + // Type filtering (gt-7xtn) + if filter.Type != "" { + if string(issue.IssueType) != filter.Type { + continue + } + } else { + // Exclude workflow types from ready work by default + // These are internal workflow items, not work for polecats to claim + switch issue.IssueType { + case types.TypeMergeRequest, types.TypeGate, types.TypeMolecule, types.TypeMessage: + continue + } + } + // Unassigned takes precedence over Assignee filter if filter.Unassigned { if issue.Assignee != "" { diff --git a/internal/storage/sqlite/ready.go b/internal/storage/sqlite/ready.go index 01db66cc..d6d9461b 100644 --- a/internal/storage/sqlite/ready.go +++ b/internal/storage/sqlite/ready.go @@ -33,6 +33,14 @@ func (s *SQLiteStorage) GetReadyWork(ctx context.Context, filter types.WorkFilte if filter.Type != "" { whereClauses = append(whereClauses, "i.issue_type = ?") args = append(args, filter.Type) + } else { + // Exclude workflow types from ready work by default (gt-7xtn) + // These are internal workflow items, not work for polecats to claim: + // - merge-request: processed by Refinery + // - gate: async wait conditions + // - molecule: workflow containers + // - message: mail/communication items + whereClauses = append(whereClauses, "i.issue_type NOT IN ('merge-request', 'gate', 'molecule', 'message')") } if filter.Priority != nil {