Open engine:v2 issues in dbt-labs/dbt-core (epics excluded unless noted)
/home/runner/work/fusion_issue_analysis/fusion_issue_analysis/data/serve/fusion_issues.duckdb via ggsql → Vega-Lite-- tile: headline_kpis -- type: kpi SELECT * FROM headline_kpis
Open at the end of each week, by type
-- tile: backlog_weekly
-- Category names are prefixed with their palette order so ggsql stacks them
-- feature, bug, task, other; RENAMING restores the labels.
SELECT
week::DATE AS week,
CASE issue_category WHEN 'feature' THEN '1 feature' WHEN 'bug' THEN '2 bug'
WHEN 'task' THEN '3 task' ELSE '4 other' END AS issue_type,
open_issues
FROM backlog_weekly
ORDER BY week
VISUALISE week AS x, open_issues AS y, issue_type AS fill
DRAW area
SCALE x VIA date
SCALE DISCRETE fill FROM ['1 feature', '2 bug', '3 task', '4 other']
TO ['#2a78d6', '#eb6834', '#1baf7a', '#898781']
RENAMING '1 feature' => 'Feature', '2 bug' => 'Bug', '3 task' => 'Task', '4 other' => 'Other'
LABEL x => null, y => 'Open issues', fill => 'Type'Complete weeks; when closed > opened the backlog shrank
-- tile: weekly_flow
-- week stays a string so dodged bars get a band per week (on a temporal
-- axis they render as hairlines).
SELECT week, 'opened' AS series, opened AS issues FROM weekly_flow
UNION ALL
SELECT week, 'closed' AS series, closed AS issues FROM weekly_flow
ORDER BY week, series DESC
VISUALISE week AS x, issues AS y, series AS fill
DRAW bar
SETTING position => 'dodge'
SCALE DISCRETE fill FROM ['opened', 'closed'] TO ['#eb6834', '#2a78d6']
RENAMING 'opened' => 'Opened', 'closed' => 'Closed'
LABEL x => 'Week', y => 'Issues', fill => nullHow much is waiting, and for how long
-- tile: triage_pipeline
-- order: y
-- Age buckets are prefixed with age_bucket_order so ggsql stacks them young
-- to old; RENAMING restores the labels.
SELECT
status_label,
age_bucket_order || ' ' || age_bucket AS age,
issue_count
FROM triage_pipeline
ORDER BY status_order, age_bucket_order
VISUALISE issue_count AS x, status_label AS y, age AS fill
DRAW bar
SCALE DISCRETE fill FROM ['1 0-7d', '2 8-30d', '3 31-90d', '4 91-180d', '5 180d+']
TO ['#b7d3f6', '#86b6ef', '#5598e7', '#256abf', '#104281']
RENAMING '1 0-7d' => '0-7d', '2 8-30d' => '8-30d', '3 31-90d' => '31-90d',
'4 91-180d' => '91-180d', '5 180d+' => '180d+'
LABEL x => 'Open issues', y => null, fill => 'Age'By week opened; unanswered issues count as misses
-- tile: response_weekly
SELECT week::DATE AS week, pct_responded_48h
FROM response_weekly
ORDER BY week
VISUALISE week AS x, pct_responded_48h AS y
DRAW line
SETTING colour => '#2a78d6'
DRAW point
SETTING colour => '#2a78d6'
SCALE x VIA date
SCALE CONTINUOUS y FROM [0, 100]
LABEL x => 'Week opened', y => '% answered within 48h'Open issues still labeled status:triage
-- tile: triage_queue
-- type: table
SELECT issue_number, title, issue_category, age_days, days_idle, reactions, comments,
is_customer_reported, issue_url
FROM triage_queue
ORDER BY age_days DESCIssues with several areas count in each
-- tile: open_by_area
-- order: y
SELECT
area,
CASE issue_category WHEN 'feature' THEN '1 feature' WHEN 'bug' THEN '2 bug'
WHEN 'task' THEN '3 task' ELSE '4 other' END AS issue_type,
issue_count
FROM open_by_area
ORDER BY area_total DESC, area
VISUALISE issue_count AS x, area AS y, issue_type AS fill
DRAW bar
SCALE DISCRETE fill FROM ['1 feature', '2 bug', '3 task', '4 other']
TO ['#2a78d6', '#eb6834', '#1baf7a', '#898781']
RENAMING '1 feature' => 'Feature', '2 bug' => 'Bug', '3 task' => 'Task', '4 other' => 'Other'
LABEL x => 'Open issues', y => null, fill => 'Type'Issues with adapter labels
-- tile: open_by_adapter
-- order: y
SELECT
adapter,
CASE issue_category WHEN 'feature' THEN '1 feature' WHEN 'bug' THEN '2 bug'
WHEN 'task' THEN '3 task' ELSE '4 other' END AS issue_type,
issue_count
FROM open_by_adapter
ORDER BY adapter_total DESC, adapter
VISUALISE issue_count AS x, adapter AS y, issue_type AS fill
DRAW bar
SCALE DISCRETE fill FROM ['1 feature', '2 bug', '3 task', '4 other']
TO ['#2a78d6', '#eb6834', '#1baf7a', '#898781']
RENAMING '1 feature' => 'Feature', '2 bug' => 'Bug', '3 task' => 'Task', '4 other' => 'Other'
LABEL x => 'Open issues', y => null, fill => 'Type'Top of the list can be closed out soon
-- tile: epic_progress -- type: table SELECT epic_number, title, child_closed, child_total, pct_complete, milestone_title, issue_url FROM epic_progress ORDER BY pct_complete DESC, child_open, epic_number
Ranked by reactions, then comments
-- tile: top_requested
-- type: table
SELECT issue_number, title, issue_category, areas, triage_status, reactions, comments,
age_days, is_customer_reported, issue_url
FROM top_requested
ORDER BY reactions DESC, comments DESCTop 15, excluding unassigned
-- tile: assignee_workload
-- order: y
SELECT
assignee_login,
CASE issue_category WHEN 'feature' THEN '1 feature' WHEN 'bug' THEN '2 bug'
WHEN 'task' THEN '3 task' ELSE '4 other' END AS issue_type,
issue_count
FROM assignee_workload
ORDER BY assignee_total DESC, assignee_login
VISUALISE issue_count AS x, assignee_login AS y, issue_type AS fill
DRAW bar
SCALE DISCRETE fill FROM ['1 feature', '2 bug', '3 task', '4 other']
TO ['#2a78d6', '#eb6834', '#1baf7a', '#898781']
RENAMING '1 feature' => 'Feature', '2 bug' => 'Bug', '3 task' => 'Task', '4 other' => 'Other'
LABEL x => 'Open issues', y => null, fill => 'Type'