From 05b84c3925a9c949f66e826dc2cd5d564f228e7b Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Fri, 26 Dec 2025 20:51:51 -0800 Subject: [PATCH] fix: bd ready excludes ephemeral (wisp) issues (hq-t15s) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wisps are ephemeral issues used for patrol/operational cycles and should not appear in `bd ready` output as trackable work items. Added ephemeral exclusion filter to both the GetReadyWork() function and ready_issues VIEW. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/storage/sqlite/ready.go | 3 ++- internal/storage/sqlite/schema.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/storage/sqlite/ready.go b/internal/storage/sqlite/ready.go index 29604142..7be64097 100644 --- a/internal/storage/sqlite/ready.go +++ b/internal/storage/sqlite/ready.go @@ -17,7 +17,8 @@ import ( // Excludes pinned issues which are persistent anchors, not actionable work (bd-92u) func (s *SQLiteStorage) GetReadyWork(ctx context.Context, filter types.WorkFilter) ([]*types.Issue, error) { whereClauses := []string{ - "i.pinned = 0", // Exclude pinned issues (bd-92u) + "i.pinned = 0", // Exclude pinned issues (bd-92u) + "(i.ephemeral = 0 OR i.ephemeral IS NULL)", // Exclude wisps (hq-t15s) } args := []interface{}{} diff --git a/internal/storage/sqlite/schema.go b/internal/storage/sqlite/schema.go index 898b13f4..3eb19f45 100644 --- a/internal/storage/sqlite/schema.go +++ b/internal/storage/sqlite/schema.go @@ -230,6 +230,7 @@ WITH RECURSIVE SELECT i.* FROM issues i WHERE i.status = 'open' + AND (i.ephemeral = 0 OR i.ephemeral IS NULL) AND NOT EXISTS ( SELECT 1 FROM blocked_transitively WHERE issue_id = i.id );