-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathanalyze_issues.sql
More file actions
191 lines (176 loc) · 4.71 KB
/
Copy pathanalyze_issues.sql
File metadata and controls
191 lines (176 loc) · 4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
-- VC Issue Tracker Analysis Queries
-- Run with: sqlite3 .beads/beads.db < analyze_issues.sql
.mode column
.headers on
.width 12 60 8 8
-- Summary statistics
SELECT '=== SUMMARY STATISTICS ===' as '';
SELECT
COUNT(*) as total_issues,
SUM(CASE WHEN status = 'open' THEN 1 ELSE 0 END) as open,
SUM(CASE WHEN status = 'closed' THEN 1 ELSE 0 END) as closed,
SUM(CASE WHEN status = 'in_progress' THEN 1 ELSE 0 END) as in_progress,
SUM(CASE WHEN status = 'blocked' THEN 1 ELSE 0 END) as blocked
FROM issues;
-- Issues by type and status
SELECT '' as '';
SELECT '=== ISSUES BY TYPE AND STATUS ===' as '';
SELECT
issue_type,
status,
COUNT(*) as count
FROM issues
GROUP BY issue_type, status
ORDER BY issue_type, status;
-- Priority distribution for open issues
SELECT '' as '';
SELECT '=== OPEN ISSUES BY PRIORITY ===' as '';
SELECT
priority,
COUNT(*) as count,
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM issues WHERE status = 'open'), 1) as pct
FROM issues
WHERE status = 'open'
GROUP BY priority
ORDER BY priority;
-- Label distribution (open issues only)
SELECT '' as '';
SELECT '=== TOP LABELS (OPEN ISSUES) ===' as '';
SELECT
l.label,
COUNT(DISTINCT i.id) as issue_count
FROM labels l
JOIN issues i ON l.issue_id = i.id
WHERE i.status = 'open'
GROUP BY l.label
ORDER BY issue_count DESC
LIMIT 20;
-- Issues created per day (last 30 days)
SELECT '' as '';
SELECT '=== ISSUES CREATED PER DAY (RECENT) ===' as '';
SELECT
DATE(created_at) as day,
COUNT(*) as created,
SUM(CASE WHEN status = 'closed' THEN 1 ELSE 0 END) as now_closed,
SUM(CASE WHEN status = 'open' THEN 1 ELSE 0 END) as now_open
FROM issues
WHERE created_at > DATE('now', '-30 days')
GROUP BY DATE(created_at)
ORDER BY day DESC;
-- Potential duplicate titles (open issues)
SELECT '' as '';
SELECT '=== POTENTIAL DUPLICATE TITLES (OPEN) ===' as '';
SELECT
title,
COUNT(*) as occurrences,
GROUP_CONCAT(id, ', ') as issue_ids
FROM issues
WHERE status = 'open'
GROUP BY title
HAVING COUNT(*) > 1
ORDER BY occurrences DESC;
-- Test-related issues by priority
SELECT '' as '';
SELECT '=== TEST-RELATED OPEN ISSUES BY PRIORITY ===' as '';
SELECT
priority,
COUNT(*) as count
FROM issues
WHERE status = 'open'
AND (title LIKE '%test%' OR title LIKE '%Test%')
GROUP BY priority
ORDER BY priority;
-- Supervisor-discovered issues breakdown
SELECT '' as '';
SELECT '=== SUPERVISOR-DISCOVERED ISSUES BREAKDOWN ===' as '';
SELECT
i.status,
CASE
WHEN i.title LIKE '%test%' OR i.title LIKE '%Test%' THEN 'test-related'
WHEN i.title LIKE '%Code Review%' THEN 'code-review'
ELSE 'other'
END as category,
COUNT(*) as count
FROM issues i
JOIN labels l ON i.id = l.issue_id
WHERE l.label = 'discovered:supervisor'
GROUP BY i.status, category
ORDER BY i.status, count DESC;
-- Oldest open issues (potential stale work)
SELECT '' as '';
SELECT '=== OLDEST OPEN ISSUES (TOP 20) ===' as '';
.width 12 70 10 12
SELECT
id,
title,
priority,
DATE(created_at) as created
FROM issues
WHERE status = 'open'
ORDER BY created_at ASC
LIMIT 20;
-- Issues with most dependencies (blockers)
SELECT '' as '';
SELECT '=== ISSUES WITH MOST BLOCKERS (TOP 10) ===' as '';
.width 12 60 8
SELECT
i.id,
i.title,
COUNT(d.from_issue_id) as blocker_count
FROM issues i
JOIN dependencies d ON i.id = d.to_issue_id
WHERE i.status = 'open'
GROUP BY i.id
ORDER BY blocker_count DESC
LIMIT 10;
-- High priority issues that might be noise
SELECT '' as '';
SELECT '=== P0/P1 TEST ISSUES (POTENTIAL NOISE) ===' as '';
.width 12 70 8
SELECT
id,
title,
priority
FROM issues
WHERE status = 'open'
AND priority <= 1
AND (title LIKE '%test%' OR title LIKE '%Test%')
ORDER BY priority, created_at
LIMIT 20;
-- Code review sweep analysis
SELECT '' as '';
SELECT '=== CODE REVIEW SWEEP ISSUES ===' as '';
SELECT
id,
title,
status,
DATE(created_at) as created
FROM issues
WHERE title LIKE '%Code Review Sweep%'
ORDER BY created_at;
-- Issues by week (trend analysis)
SELECT '' as '';
SELECT '=== ISSUE CREATION TREND (BY WEEK) ===' as '';
SELECT
STRFTIME('%Y-W%W', created_at) as week,
COUNT(*) as created,
SUM(CASE WHEN status = 'closed' THEN 1 ELSE 0 END) as closed,
SUM(CASE WHEN status = 'open' THEN 1 ELSE 0 END) as open
FROM issues
WHERE created_at > DATE('now', '-60 days')
GROUP BY STRFTIME('%Y-W%W', created_at)
ORDER BY week DESC;
-- Find similar titles (fuzzy matching via prefix)
SELECT '' as '';
SELECT '=== SIMILAR TITLE PATTERNS (POTENTIAL DUPLICATES) ===' as '';
.width 50 8
SELECT
SUBSTR(title, 1, 50) as title_prefix,
COUNT(*) as count
FROM issues
WHERE status = 'open'
AND LENGTH(title) > 20
GROUP BY SUBSTR(title, 1, 50)
HAVING COUNT(*) > 1
ORDER BY count DESC
LIMIT 20;