feat(blocked): exclude pinned issues from bd blocked output

- Add Pinned field to Issue struct in types.go
- Create migration 023 to add pinned column with partial index
- Update SQLite GetBlockedIssues to filter WHERE pinned = 0
- Update Memory GetBlockedIssues to skip pinned issues
- Update schema.go with pinned column definition

Pinned issues are tracked but excluded from the blocked list to
reduce noise for issues that are intentionally parked.

Closes: beads-ei4

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-12-19 00:37:16 -08:00
parent 9dc34da64a
commit 9e85aa9f9a
6 changed files with 55 additions and 0 deletions

View File

@@ -1063,6 +1063,7 @@ func (m *MemoryStorage) getOpenBlockers(issueID string) []string {
}
// GetBlockedIssues returns issues that are blocked by other issues
// Note: Pinned issues are excluded from the output (beads-ei4)
func (m *MemoryStorage) GetBlockedIssues(ctx context.Context) ([]*types.BlockedIssue, error) {
m.mu.RLock()
defer m.mu.RUnlock()
@@ -1075,6 +1076,11 @@ func (m *MemoryStorage) GetBlockedIssues(ctx context.Context) ([]*types.BlockedI
continue
}
// Exclude pinned issues (beads-ei4)
if issue.Pinned {
continue
}
blockers := m.getOpenBlockers(issue.ID)
if issue.Status != types.StatusBlocked && len(blockers) == 0 {
continue