forked from 1jehuang/jcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhealth.sql
More file actions
140 lines (139 loc) · 5.48 KB
/
Copy pathhealth.sql
File metadata and controls
140 lines (139 loc) · 5.48 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
-- Telemetry health dashboard query.
-- Usage:
-- wrangler d1 execute jcode-telemetry --remote --file=health.sql
WITH install_ids AS (
SELECT DISTINCT telemetry_id
FROM events INDEXED BY idx_events_event_telemetry_created
WHERE event = 'install'
), lifecycle AS (
SELECT telemetry_id, created_at
FROM events INDEXED BY idx_events_event_telemetry_created
WHERE event IN ('session_end', 'session_crash')
), session_starts_by_id AS (
SELECT DISTINCT telemetry_id
FROM events INDEXED BY idx_events_event_telemetry_created
WHERE event = 'session_start'
), event_counts AS (
SELECT
SUM(CASE WHEN event = 'install' THEN 1 ELSE 0 END) AS install_events,
SUM(CASE WHEN event = 'session_start' THEN 1 ELSE 0 END) AS session_starts,
SUM(CASE WHEN event = 'session_end' THEN 1 ELSE 0 END) AS session_ends,
SUM(CASE WHEN event = 'session_crash' THEN 1 ELSE 0 END) AS session_crashes
FROM events INDEXED BY idx_events_event_created_telemetry
WHERE event IN ('install', 'session_start', 'session_end', 'session_crash')
), identity_counts AS (
SELECT
(SELECT COUNT(*) FROM install_ids) AS install_ids,
(SELECT COUNT(DISTINCT telemetry_id) FROM lifecycle) AS lifecycle_ids,
(SELECT COUNT(*) FROM session_starts_by_id) AS session_start_ids,
(SELECT COUNT(DISTINCT lifecycle.telemetry_id)
FROM lifecycle
LEFT JOIN install_ids USING (telemetry_id)
WHERE install_ids.telemetry_id IS NULL) AS lifecycle_ids_without_install
),
meaningful AS (
SELECT
SUM(CASE WHEN e.event IN ('session_end', 'session_crash') THEN 1 ELSE 0 END) AS meaningful_sessions,
COUNT(DISTINCT e.telemetry_id) AS meaningful_users_30d
FROM events e
LEFT JOIN turn_details td ON td.event_id = e.event_id
WHERE e.event IN ('session_end', 'session_crash', 'turn_end')
AND e.created_at > datetime('now', '-30 days')
AND (
(e.event IN ('session_end', 'session_crash') AND (
e.turns > 0
OR e.duration_mins > 0
OR e.error_provider_timeout > 0
OR e.error_auth_failed > 0
OR e.error_tool_error > 0
OR e.error_mcp_error > 0
OR e.error_rate_limited > 0
OR e.provider_switches > 0
OR e.model_switches > 0
OR e.had_user_prompt > 0
OR e.had_assistant_response > 0
OR e.assistant_responses > 0
OR e.tool_calls > 0
OR e.tool_failures > 0
OR e.executed_tool_calls > 0
OR e.feature_memory_used > 0
OR e.feature_swarm_used > 0
OR e.feature_web_used > 0
OR e.feature_email_used > 0
OR e.feature_mcp_used > 0
OR e.feature_side_panel_used > 0
OR e.feature_goal_used > 0
OR e.feature_selfdev_used > 0
OR e.feature_background_used > 0
OR e.feature_subagent_used > 0
))
-- turn_end activity lives in turn_details: production events never got
-- migration 0005's per-turn columns (D1 caps tables at 100 columns).
OR (e.event = 'turn_end' AND (
td.assistant_responses > 0
OR td.tool_calls > 0
OR td.executed_tool_calls > 0
OR td.file_write_calls > 0
OR td.tests_run > 0
))
)
),
outliers AS (
SELECT
MAX(session_events) AS max_session_events_one_id,
SUM(CASE WHEN rn <= 5 THEN session_events ELSE 0 END) AS top5_session_events,
SUM(session_events) AS total_session_events
FROM (
SELECT telemetry_id, COUNT(*) AS session_events,
ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS rn
FROM lifecycle
GROUP BY telemetry_id
)
),
ci_noise AS (
SELECT
COUNT(DISTINCT telemetry_id) AS ci_ids_30d,
COUNT(DISTINCT CASE WHEN event = 'install' THEN telemetry_id END) AS ci_install_ids,
COUNT(DISTINCT CASE WHEN event IN ('session_end', 'session_crash') THEN telemetry_id END) AS ci_lifecycle_ids
FROM events
INDEXED BY idx_events_event_created_telemetry
WHERE event IN ('install', 'session_start', 'turn_end', 'session_end', 'session_crash')
AND created_at > datetime('now', '-30 days')
AND is_ci = 1
),
-- Auth failure health: count affected sessions/users, NOT SUM(error_auth_failed).
-- Raw sums are dominated by runaway retry loops (one session logged 18k+ auth
-- failures pre-breaker), which makes a single broken install look like a
-- fleet-wide auth outage. Affected-session/user counts are outlier-resistant.
auth_failures AS (
SELECT
COUNT(*) AS auth_failed_sessions_30d,
COUNT(DISTINCT telemetry_id) AS auth_failed_users_30d,
MAX(error_auth_failed) AS max_auth_fails_one_session_30d
FROM events
WHERE event IN ('session_end', 'session_crash')
AND error_auth_failed > 0
AND created_at > datetime('now', '-30 days')
)
SELECT
install_events,
session_starts,
session_ends,
session_crashes,
install_ids,
lifecycle_ids,
session_start_ids,
lifecycle_ids_without_install,
meaningful_sessions,
meaningful_users_30d,
ci_ids_30d,
ci_install_ids,
ci_lifecycle_ids,
max_session_events_one_id,
top5_session_events,
total_session_events,
auth_failed_sessions_30d,
auth_failed_users_30d,
max_auth_fails_one_session_30d,
ROUND(CAST(session_ends + session_crashes AS REAL) / NULLIF(session_starts, 0), 3) AS lifecycle_completion_ratio
FROM event_counts, identity_counts, meaningful, outliers, ci_noise, auth_failures;