railwatch 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -0
  3. data/{lib/generators/railwatch/install/templates → app/frontend/lib}/railwatch.ts +162 -42
  4. data/app/models/railwatch/ingest/batch.rb +1 -0
  5. data/app/models/railwatch/ingest/mapper.rb +12 -0
  6. data/docs/configuration.md +8 -3
  7. data/lib/generators/railwatch/install/install_generator.rb +5 -1
  8. data/lib/railwatch/patches/rake_task.rb +10 -1
  9. data/lib/railwatch/patches/runner_command.rb +3 -1
  10. data/lib/railwatch/transport/http.rb +15 -5
  11. data/lib/railwatch/version.rb +1 -1
  12. data/lib/railwatch/wire_fixtures.json +856 -0
  13. data/lib/railwatch.rb +22 -0
  14. data/lib/tasks/railwatch_tasks.rake +7 -0
  15. data/public/railwatch/assets/{app-layout-B5Fcdwfz.js → app-layout-DUk54qUM.js} +1 -1
  16. data/public/railwatch/assets/{app-wordmark-1SRllgHv.js → app-wordmark-DDNuuq5_.js} +1 -1
  17. data/public/railwatch/assets/{appearance-DbwahDrc.js → appearance-C3LMdsDy.js} +1 -1
  18. data/public/railwatch/assets/{arrow-up-DwKQcab4.js → arrow-up-DYTCBENO.js} +1 -1
  19. data/public/railwatch/assets/{auth-layout-DXfxXAN_.js → auth-layout-CzPRawuI.js} +1 -1
  20. data/public/railwatch/assets/{badge-CApjyWcg.js → badge-s7YDycYg.js} +1 -1
  21. data/public/railwatch/assets/{braces-kGSgxWnS.js → braces-BFrg-bvp.js} +1 -1
  22. data/public/railwatch/assets/{card-BaJ8kNkp.js → card-DiW-JhK3.js} +1 -1
  23. data/public/railwatch/assets/{chart-hover-XYPNE2CX.js → chart-hover-DMWx5-Rs.js} +1 -1
  24. data/public/railwatch/assets/{chart-Xnrz1Nqw.js → chart-nsdZV0Dv.js} +1 -1
  25. data/public/railwatch/assets/{chart-panel-BYk68mJJ.js → chart-panel-BlirnMrQ.js} +1 -1
  26. data/public/railwatch/assets/{checkbox-Bf41R8W6.js → checkbox-C2AqEZXX.js} +1 -1
  27. data/public/railwatch/assets/{code-a-9sh36A.js → code-DVJtYP7h.js} +1 -1
  28. data/public/railwatch/assets/{copy-block-zykZWQym.js → copy-block-D1myf7is.js} +1 -1
  29. data/public/railwatch/assets/{copy-id-b6CW5ESL.js → copy-id-CyRCMfdH.js} +1 -1
  30. data/public/railwatch/assets/{cursor-load-more-0cHzbTPT.js → cursor-load-more-JfSVBn9C.js} +1 -1
  31. data/public/railwatch/assets/{data-table-IvA7xvrK.js → data-table-CwtPkw_i.js} +1 -1
  32. data/public/railwatch/assets/{edit-7lmf3k80.js → edit-BvTugIpj.js} +1 -1
  33. data/public/railwatch/assets/{edit-ZKE15r-F.js → edit-DvpDUM-t.js} +1 -1
  34. data/public/railwatch/assets/{edit-DTtRV1fO.js → edit-fB83T9Yh.js} +1 -1
  35. data/public/railwatch/assets/{empty-state-BFTnQ2oT.js → empty-state-CshhuRUU.js} +1 -1
  36. data/public/railwatch/assets/{env-layout-erSDpIXg.js → env-layout-Dkp_4NvM.js} +1 -1
  37. data/public/railwatch/assets/{execution-path-Di5uUHi-.js → execution-path-CdEerUGH.js} +1 -1
  38. data/public/railwatch/assets/{filter-bar-Btm__gQi.js → filter-bar-BMHf8xBb.js} +1 -1
  39. data/public/railwatch/assets/{flamegraph-C-mZdqa7.js → flamegraph-uYWk1Yov.js} +1 -1
  40. data/public/railwatch/assets/{frames-KZBsjg6-.js → frames-B5ZECkvt.js} +1 -1
  41. data/public/railwatch/assets/{google-sign-in-button-DJRoD72g.js → google-sign-in-button-CAvsXYb4.js} +1 -1
  42. data/public/railwatch/assets/{index-CeqMDByC.js → index-1-78ZewP.js} +1 -1
  43. data/public/railwatch/assets/{index-P_e_cI0O.js → index-B-qRsj0W.js} +1 -1
  44. data/public/railwatch/assets/{index-kNhZPLVj.js → index-B4IRsZXK.js} +1 -1
  45. data/public/railwatch/assets/{index-QyHE9WsU.js → index-BIZsdfdM.js} +1 -1
  46. data/public/railwatch/assets/{index-EGU__DOB.js → index-BIom4V2g.js} +1 -1
  47. data/public/railwatch/assets/{index-Bot7kHMA.js → index-BMgA9NNc.js} +1 -1
  48. data/public/railwatch/assets/{index-CX8Br7m9.js → index-BpnfuXi-.js} +1 -1
  49. data/public/railwatch/assets/{index-D4968-TC.js → index-Bw_ByIps.js} +1 -1
  50. data/public/railwatch/assets/{index-CU6yhEyt.js → index-C7bU7oUF.js} +1 -1
  51. data/public/railwatch/assets/{index-Z1c4nFL0.js → index-CAkCcAty.js} +1 -1
  52. data/public/railwatch/assets/{index-B-bSm1jB.js → index-CRShH-fR.js} +1 -1
  53. data/public/railwatch/assets/{index-DBTxQw77.js → index-CZWzIE8F.js} +1 -1
  54. data/public/railwatch/assets/{index-Cj3_jD1E.js → index-CaJvo0Oc.js} +1 -1
  55. data/public/railwatch/assets/{index-HCJmFcZu.js → index-CdM3F3jz.js} +1 -1
  56. data/public/railwatch/assets/{index-DcItJxa5.js → index-ClG89uia.js} +1 -1
  57. data/public/railwatch/assets/{index-CAzQkw-h.js → index-ClJtZh5Q.js} +1 -1
  58. data/public/railwatch/assets/{index-Bjw4sTXU.js → index-Czq2bi1U.js} +1 -1
  59. data/public/railwatch/assets/{index-CP6jrrPT.js → index-D-O1LUPq.js} +1 -1
  60. data/public/railwatch/assets/{index-CYYmZpZu.js → index-DJIXGkfB.js} +1 -1
  61. data/public/railwatch/assets/{index-BAkZNNEh.js → index-DMcsT2ES.js} +1 -1
  62. data/public/railwatch/assets/{index-wOj5j0KC.js → index-DVUwgfqP.js} +1 -1
  63. data/public/railwatch/assets/{index-DAEzO_vq.js → index-DWMKU6mG.js} +1 -1
  64. data/public/railwatch/assets/{index-BWSyQRZI.js → index-DYrF-A96.js} +1 -1
  65. data/public/railwatch/assets/{index-BsrCnQqg.js → index-DcuyMiuG.js} +1 -1
  66. data/public/railwatch/assets/{index-BoTOVM0v.js → index-DpWQMikK.js} +1 -1
  67. data/public/railwatch/assets/{index-CIUl9POV.js → index-DuGGTdIJ.js} +1 -1
  68. data/public/railwatch/assets/{index-uHBVO8Lh.js → index-DzoUj38Q.js} +1 -1
  69. data/public/railwatch/assets/{index-CBJZQgHA.js → index-QxAKxnHK.js} +1 -1
  70. data/public/railwatch/assets/{index-9LL_C3eG.js → index-X13K9BbO.js} +1 -1
  71. data/public/railwatch/assets/{index-DEfu_YvU.js → index-Zf9xXwq7.js} +1 -1
  72. data/public/railwatch/assets/{index-Bo8hrjbs.js → index-dKn1tKSX.js} +1 -1
  73. data/public/railwatch/assets/{index-DCAho97K.js → index-fA7h22qS.js} +1 -1
  74. data/public/railwatch/assets/{index-BtSlLmkg.js → index-iVNm3uzI.js} +1 -1
  75. data/public/railwatch/assets/{index-B0VXzXYG.js → index-n16aviHx.js} +1 -1
  76. data/public/railwatch/assets/{index-DXUwhSCQ.js → index-vC9KU2bt.js} +1 -1
  77. data/public/railwatch/assets/{inertia-Degv_G9N.js → inertia-CUTKXjxg.js} +3 -3
  78. data/public/railwatch/assets/{input-error-C6SqO_iU.js → input-error-C8ycyeD0.js} +1 -1
  79. data/public/railwatch/assets/{json-viewer-DcQIxT86.js → json-viewer-CJECqZ0l.js} +1 -1
  80. data/public/railwatch/assets/{klass-WgQEfWpo.js → klass-Br9dng39.js} +1 -1
  81. data/public/railwatch/assets/{label-B_vK19tR.js → label-B32Ks8n7.js} +1 -1
  82. data/public/railwatch/assets/{layout-C8q7GUlZ.js → layout-5ZhRtywp.js} +1 -1
  83. data/public/railwatch/assets/{live-dot-DaXEbkXo.js → live-dot-Bb1UYT9F.js} +1 -1
  84. data/public/railwatch/assets/{nav-BnD5XArZ.js → nav-XUcwnBso.js} +1 -1
  85. data/public/railwatch/assets/{new-BL9OqXHe.js → new-0xyEF6NL.js} +1 -1
  86. data/public/railwatch/assets/{new-DIjwu2jF.js → new-CV011uLi.js} +1 -1
  87. data/public/railwatch/assets/{new-BqP0NhOF.js → new-CdvlEBjJ.js} +1 -1
  88. data/public/railwatch/assets/{new-BhRnQn4w.js → new-D9-ORiNW.js} +1 -1
  89. data/public/railwatch/assets/{new-uxMnBtoY.js → new-GIkDYLt8.js} +1 -1
  90. data/public/railwatch/assets/{new-CWP3wtwt.js → new-YBWOo9_V.js} +1 -1
  91. data/public/railwatch/assets/{onboarding-C_Y3xTsH.js → onboarding-BqEuP-Ml.js} +1 -1
  92. data/public/railwatch/assets/{origin-identity-CNhOnfBa.js → origin-identity-DrJ4D2TX.js} +1 -1
  93. data/public/railwatch/assets/{percentile-picker-BujVEhP6.js → percentile-picker-_wllqYoJ.js} +1 -1
  94. data/public/railwatch/assets/{relative-time-6CoKr1lN.js → relative-time-CV7V8aSP.js} +1 -1
  95. data/public/railwatch/assets/{release-health-1Qzc_XhT.js → release-health-DRNLZtT7.js} +1 -1
  96. data/public/railwatch/assets/{route-xqgYjOwJ.js → route-D9slUz_a.js} +1 -1
  97. data/public/railwatch/assets/{segmented-CVKq2Xpa.js → segmented-Bj70Htrs.js} +1 -1
  98. data/public/railwatch/assets/{select-CsmSXsJ4.js → select-DJBZX2ky.js} +1 -1
  99. data/public/railwatch/assets/{separator-CrM10Oot.js → separator-UUo0bkyc.js} +1 -1
  100. data/public/railwatch/assets/{series-chart-D33UhdG2.js → series-chart-C1YrNlID.js} +1 -1
  101. data/public/railwatch/assets/{show-zxVxhUel.js → show-BQtEcTeD.js} +1 -1
  102. data/public/railwatch/assets/{show-B0nHy31L.js → show-BT3tKCgP.js} +1 -1
  103. data/public/railwatch/assets/{show-DZwcZZrz.js → show-BoG7jcwk.js} +1 -1
  104. data/public/railwatch/assets/{show-ixK2r2f1.js → show-BpyCRL-I.js} +1 -1
  105. data/public/railwatch/assets/{show-rysBbvt-.js → show-C0uC3gnA.js} +1 -1
  106. data/public/railwatch/assets/{show-B3izvRdU.js → show-COfP8yWt.js} +1 -1
  107. data/public/railwatch/assets/{show-B7NhcWgp.js → show-CefJwag7.js} +1 -1
  108. data/public/railwatch/assets/{show-8H9WAGav.js → show-ChDJZjoj.js} +1 -1
  109. data/public/railwatch/assets/{show-CJMeX75E.js → show-D7IL22Hy.js} +1 -1
  110. data/public/railwatch/assets/{show-DUwQlohF.js → show-D7tP881O.js} +1 -1
  111. data/public/railwatch/assets/{show-BM-E2iYc.js → show-DR6u4CR7.js} +1 -1
  112. data/public/railwatch/assets/{show-CMisHNAI.js → show-DnBCvlnd.js} +1 -1
  113. data/public/railwatch/assets/{show-BlNR3ZOZ.js → show-DoCg0ifP.js} +1 -1
  114. data/public/railwatch/assets/{show-9jDeBNpc.js → show-GruxlCov.js} +1 -1
  115. data/public/railwatch/assets/{show-CvNV23gH.js → show-Pu3Iehw5.js} +1 -1
  116. data/public/railwatch/assets/{show-DMZlwzL_.js → show-TTCk2Met.js} +1 -1
  117. data/public/railwatch/assets/{show-CQ4Ze-Un.js → show-yQipmite.js} +1 -1
  118. data/public/railwatch/assets/{sort-header-CKj_7G3U.js → sort-header-CqQQhaxg.js} +1 -1
  119. data/public/railwatch/assets/{sparkline-cell-Ckg29yVq.js → sparkline-cell-BwdBz0yv.js} +1 -1
  120. data/public/railwatch/assets/{stat-TxvoBiC8.js → stat-IghK3WjD.js} +1 -1
  121. data/public/railwatch/assets/{status-badge-5NCVJHjo.js → status-badge-XYUN9gUA.js} +1 -1
  122. data/public/railwatch/assets/{tenant-path-B5ZRK4x3.js → tenant-path-SxnZbfU1.js} +1 -1
  123. data/public/railwatch/assets/{text-link-BPllRj0F.js → text-link-NCL9N5D5.js} +1 -1
  124. data/public/railwatch/assets/{textarea-DtD5yZp_.js → textarea-DhI1dmQa.js} +1 -1
  125. data/public/railwatch/assets/{timeline-DZz5ZnHN.js → timeline-CLAwsAlo.js} +1 -1
  126. data/public/railwatch/assets/{transition-Ds6Cakuc.js → transition-DpTb9Yiv.js} +1 -1
  127. data/public/railwatch/assets/{use-clipboard-BLjjYH8V.js → use-clipboard-D5i6e5kf.js} +1 -1
  128. data/public/railwatch/assets/{use-live-GKze1mNC.js → use-live-V-slSdFJ.js} +1 -1
  129. data/public/railwatch/manifest.json +1287 -1287
  130. metadata +117 -116
@@ -0,0 +1,856 @@
1
+ {
2
+ "request": {
3
+ "v": 1,
4
+ "t": "request",
5
+ "timestamp": 1767225600.0,
6
+ "deploy": "3f9c2a1",
7
+ "server": "web-1",
8
+ "_group": "573d8cec4430f1146b5486c38b0e42a1",
9
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
10
+ "execution_source": "request",
11
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
12
+ "parent_id": null,
13
+ "execution_preview": "WidgetsController#index",
14
+ "execution_stage": null,
15
+ "user": "1",
16
+ "tenant": null,
17
+ "duration": 1,
18
+ "stages": {
19
+ "middleware_before": 1,
20
+ "action": 1,
21
+ "render": 1,
22
+ "middleware_after": 1
23
+ },
24
+ "counters": {
25
+ "queries": 2,
26
+ "cached_queries": 0,
27
+ "exceptions": 0,
28
+ "logs": 1,
29
+ "cache_events": 0,
30
+ "jobs_enqueued": 0,
31
+ "mail": 0,
32
+ "broadcasts": 0,
33
+ "notifications": 0,
34
+ "outgoing_requests": 0,
35
+ "storage_ops": 0,
36
+ "view_renders": 1,
37
+ "transactions": 0,
38
+ "hydrated_models": 1,
39
+ "lazy_loads": 0,
40
+ "deprecations": 0,
41
+ "spans": 0,
42
+ "llm_calls": 0
43
+ },
44
+ "peak_memory": 1,
45
+ "allocations": 1,
46
+ "gc_time": 1,
47
+ "exception_preview": null,
48
+ "context": "{}",
49
+ "method": "GET",
50
+ "url": "http://www.example.com/widgets",
51
+ "path": "/widgets",
52
+ "route": "/widgets(.:format)",
53
+ "route_methods": [
54
+ "GET"
55
+ ],
56
+ "route_domain": "www.example.com",
57
+ "controller": "widgets",
58
+ "action": "index",
59
+ "format": "html",
60
+ "ip": "127.0.0.1",
61
+ "status_code": 200,
62
+ "request_size": 0,
63
+ "response_size": 0,
64
+ "view_runtime": 1,
65
+ "db_runtime": 1,
66
+ "redirect_to": null,
67
+ "halted_callback": null,
68
+ "unpermitted_parameters": null,
69
+ "rate_limited": null,
70
+ "inertia": null,
71
+ "headers": {
72
+ "Host": "www.example.com",
73
+ "Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
74
+ "Cookie": "[FILTERED]"
75
+ },
76
+ "payload": null,
77
+ "queue_time": null,
78
+ "user_agent": "",
79
+ "files": []
80
+ },
81
+ "job_attempt": {
82
+ "v": 1,
83
+ "t": "job_attempt",
84
+ "timestamp": 1767225600.0,
85
+ "deploy": "3f9c2a1",
86
+ "server": "web-1",
87
+ "_group": "f7e9e4877be28360f79377cbd9146e0f",
88
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
89
+ "execution_source": "job",
90
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
91
+ "parent_id": null,
92
+ "execution_preview": "WidgetJob",
93
+ "execution_stage": null,
94
+ "user": null,
95
+ "tenant": null,
96
+ "duration": 1,
97
+ "stages": {
98
+ "action": 1
99
+ },
100
+ "counters": {
101
+ "queries": 1,
102
+ "cached_queries": 0,
103
+ "exceptions": 0,
104
+ "logs": 1,
105
+ "cache_events": 0,
106
+ "jobs_enqueued": 0,
107
+ "mail": 0,
108
+ "broadcasts": 0,
109
+ "notifications": 0,
110
+ "outgoing_requests": 0,
111
+ "storage_ops": 0,
112
+ "view_renders": 0,
113
+ "transactions": 0,
114
+ "hydrated_models": 0,
115
+ "lazy_loads": 0,
116
+ "deprecations": 0,
117
+ "spans": 0,
118
+ "llm_calls": 0
119
+ },
120
+ "peak_memory": 1,
121
+ "allocations": 1,
122
+ "gc_time": 1,
123
+ "exception_preview": null,
124
+ "context": "{}",
125
+ "job_id": "x",
126
+ "provider_job_id": null,
127
+ "attempt_id": "x",
128
+ "attempt": 1,
129
+ "name": "WidgetJob",
130
+ "queue": "default",
131
+ "adapter": "Test",
132
+ "connection": "Test",
133
+ "concurrency_key": null,
134
+ "priority": null,
135
+ "status": "processed",
136
+ "queue_latency": null,
137
+ "db_runtime": 1,
138
+ "arguments_preview": [
139
+ "String"
140
+ ]
141
+ },
142
+ "scheduled_task": {
143
+ "v": 1,
144
+ "t": "scheduled_task",
145
+ "timestamp": 1767225600.0,
146
+ "deploy": "3f9c2a1",
147
+ "server": "web-1",
148
+ "_group": "380d2accde699a9842b08c7bdd1e12ee",
149
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
150
+ "execution_source": "scheduled_task",
151
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
152
+ "parent_id": null,
153
+ "execution_preview": "WidgetJob",
154
+ "execution_stage": null,
155
+ "user": null,
156
+ "tenant": null,
157
+ "duration": 1,
158
+ "stages": {
159
+ "action": 1
160
+ },
161
+ "counters": {
162
+ "queries": 1,
163
+ "cached_queries": 0,
164
+ "exceptions": 0,
165
+ "logs": 1,
166
+ "cache_events": 0,
167
+ "jobs_enqueued": 0,
168
+ "mail": 0,
169
+ "broadcasts": 0,
170
+ "notifications": 0,
171
+ "outgoing_requests": 0,
172
+ "storage_ops": 0,
173
+ "view_renders": 0,
174
+ "transactions": 0,
175
+ "hydrated_models": 0,
176
+ "lazy_loads": 0,
177
+ "deprecations": 0,
178
+ "spans": 0,
179
+ "llm_calls": 0
180
+ },
181
+ "peak_memory": 1,
182
+ "allocations": 1,
183
+ "gc_time": 1,
184
+ "exception_preview": null,
185
+ "context": "{}",
186
+ "task_key": "widget_recurring",
187
+ "schedule": "*/5 * * * *",
188
+ "drift": 1,
189
+ "job_id": "x",
190
+ "provider_job_id": null,
191
+ "attempt_id": "x",
192
+ "attempt": 1,
193
+ "name": "WidgetJob",
194
+ "queue": "default",
195
+ "adapter": "Test",
196
+ "connection": "Test",
197
+ "concurrency_key": null,
198
+ "priority": null,
199
+ "status": "processed",
200
+ "queue_latency": null,
201
+ "db_runtime": 1,
202
+ "arguments_preview": [
203
+ "String"
204
+ ]
205
+ },
206
+ "command": {
207
+ "v": 1,
208
+ "t": "command",
209
+ "timestamp": 1767225600.0,
210
+ "deploy": "3f9c2a1",
211
+ "server": "web-1",
212
+ "_group": "fe01ce2a7fbac8fafaed7c982a04e229",
213
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
214
+ "execution_source": "command",
215
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
216
+ "parent_id": null,
217
+ "execution_preview": null,
218
+ "execution_stage": null,
219
+ "user": null,
220
+ "tenant": null,
221
+ "duration": 1,
222
+ "stages": {},
223
+ "counters": {
224
+ "queries": 1,
225
+ "cached_queries": 0,
226
+ "exceptions": 0,
227
+ "logs": 0,
228
+ "cache_events": 0,
229
+ "jobs_enqueued": 0,
230
+ "mail": 0,
231
+ "broadcasts": 0,
232
+ "notifications": 0,
233
+ "outgoing_requests": 0,
234
+ "storage_ops": 0,
235
+ "view_renders": 0,
236
+ "transactions": 1,
237
+ "hydrated_models": 0,
238
+ "lazy_loads": 0,
239
+ "deprecations": 0,
240
+ "spans": 0,
241
+ "llm_calls": 0
242
+ },
243
+ "peak_memory": 1,
244
+ "allocations": 1,
245
+ "gc_time": 1,
246
+ "exception_preview": null,
247
+ "context": "{}",
248
+ "class": "Rake::Task",
249
+ "name": "demo",
250
+ "command": "rake demo",
251
+ "exit_code": 0
252
+ },
253
+ "channel_action": {
254
+ "v": 1,
255
+ "t": "channel_action",
256
+ "timestamp": 1767225600.0,
257
+ "deploy": "3f9c2a1",
258
+ "server": "web-1",
259
+ "_group": "8e51bcccf5ffe61f14f02e4f441add8b",
260
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
261
+ "execution_source": "channel_action",
262
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
263
+ "parent_id": null,
264
+ "execution_preview": null,
265
+ "execution_stage": null,
266
+ "user": null,
267
+ "tenant": null,
268
+ "duration": 1,
269
+ "stages": {},
270
+ "counters": {
271
+ "queries": 0,
272
+ "cached_queries": 0,
273
+ "exceptions": 0,
274
+ "logs": 0,
275
+ "cache_events": 0,
276
+ "jobs_enqueued": 0,
277
+ "mail": 0,
278
+ "broadcasts": 0,
279
+ "notifications": 0,
280
+ "outgoing_requests": 0,
281
+ "storage_ops": 0,
282
+ "view_renders": 0,
283
+ "transactions": 0,
284
+ "hydrated_models": 0,
285
+ "lazy_loads": 0,
286
+ "deprecations": 0,
287
+ "spans": 0,
288
+ "llm_calls": 0
289
+ },
290
+ "peak_memory": 1,
291
+ "allocations": 1,
292
+ "gc_time": 1,
293
+ "exception_preview": null,
294
+ "context": "{}",
295
+ "channel": "WidgetChannel",
296
+ "action": "observed",
297
+ "status": "processed",
298
+ "failed": false
299
+ },
300
+ "query": {
301
+ "v": 1,
302
+ "t": "query",
303
+ "timestamp": 1767225600.0,
304
+ "deploy": "3f9c2a1",
305
+ "server": "web-1",
306
+ "_group": "f4fe5e9d790249a666c23ffa168c59d5",
307
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
308
+ "execution_source": "command",
309
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
310
+ "parent_id": null,
311
+ "execution_preview": null,
312
+ "execution_stage": null,
313
+ "user": null,
314
+ "tenant": null,
315
+ "sql": "SELECT \"widgets\".* FROM \"widgets\" WHERE \"widgets\".\"name\" = ?",
316
+ "name": "Widget Load",
317
+ "duration": 1,
318
+ "connection": "primary",
319
+ "adapter": "sqlite",
320
+ "role": "writing",
321
+ "async": false,
322
+ "row_count": 0,
323
+ "affected_rows": 0,
324
+ "in_transaction": false,
325
+ "source": "app/jobs/widget_job.rb:5",
326
+ "allocations": 1,
327
+ "explain": null
328
+ },
329
+ "n_plus_one": {
330
+ "v": 1,
331
+ "t": "n_plus_one",
332
+ "timestamp": 1767225600.0,
333
+ "deploy": "3f9c2a1",
334
+ "server": "web-1",
335
+ "_group": "5cb06fa7d1d1a029ab69334fbe6830d2",
336
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
337
+ "execution_source": "request",
338
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
339
+ "parent_id": null,
340
+ "execution_preview": "WidgetsController#index",
341
+ "execution_stage": "action",
342
+ "user": null,
343
+ "tenant": null,
344
+ "sql": "SELECT \"gadgets\".* FROM \"gadgets\" WHERE \"gadgets\".\"id\" = ? LIMIT ?",
345
+ "count": 3,
346
+ "source": "app/controllers/widgets_controller.rb:6"
347
+ },
348
+ "transaction": {
349
+ "v": 1,
350
+ "t": "transaction",
351
+ "timestamp": 1767225600.0,
352
+ "deploy": "3f9c2a1",
353
+ "server": "web-1",
354
+ "_group": "ff6c013609dcb7a0e5a3d81cd13e7f34",
355
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
356
+ "execution_source": "command",
357
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
358
+ "parent_id": null,
359
+ "execution_preview": null,
360
+ "execution_stage": null,
361
+ "user": null,
362
+ "tenant": null,
363
+ "duration": 1,
364
+ "outcome": "commit",
365
+ "connection": "primary",
366
+ "statement_count": 1
367
+ },
368
+ "exception": {
369
+ "v": 1,
370
+ "t": "exception",
371
+ "timestamp": 1767225600.0,
372
+ "deploy": "3f9c2a1",
373
+ "server": "web-1",
374
+ "_group": "13c11cf0aede89281157b4514817b4cc",
375
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
376
+ "execution_source": "request",
377
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
378
+ "parent_id": null,
379
+ "execution_preview": "WidgetsController#boom",
380
+ "execution_stage": "middleware_after",
381
+ "user": null,
382
+ "tenant": null,
383
+ "class": "ArgumentError",
384
+ "message": "kaboom",
385
+ "handled": false,
386
+ "severity": "error",
387
+ "source": "application.action_dispatch",
388
+ "file": "app/controllers/widgets_controller.rb",
389
+ "line": 16,
390
+ "frames": [
391
+ {
392
+ "file": "app/controllers/widgets_controller.rb",
393
+ "line": 16,
394
+ "function": "WidgetsController#boom",
395
+ "in_app": true,
396
+ "code": {
397
+ "11": " def show",
398
+ "12": " render plain: Widget.find(params[:id]).name",
399
+ "13": " end",
400
+ "14": "",
401
+ "15": " def boom",
402
+ "16": " raise ArgumentError, \"kaboom\"",
403
+ "17": " end",
404
+ "18": "",
405
+ "19": " def handled",
406
+ "20": " Rails.error.handle(context: { section: \"handled\" }) { raise \"swallowed\" }",
407
+ "21": " render plain: \"ok\""
408
+ }
409
+ }
410
+ ],
411
+ "cause": null,
412
+ "context": "{\"controller\":\"#<WidgetsController:0x0>\"}",
413
+ "code": "Errno",
414
+ "sql_state": null,
415
+ "locals": null,
416
+ "fingerprint": [
417
+ "ArgumentError",
418
+ "app/controllers/widgets_controller.rb",
419
+ "16",
420
+ "kaboom"
421
+ ],
422
+ "fingerprint_source": "default",
423
+ "ruby_version": "4.0.0",
424
+ "rails_version": "8.1.0"
425
+ },
426
+ "cache_event": {
427
+ "v": 1,
428
+ "t": "cache_event",
429
+ "timestamp": 1767225600.0,
430
+ "deploy": "3f9c2a1",
431
+ "server": "web-1",
432
+ "_group": "2261481ec48275c069479abaf9d4d70a",
433
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
434
+ "execution_source": "command",
435
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
436
+ "parent_id": null,
437
+ "execution_preview": null,
438
+ "execution_stage": null,
439
+ "user": null,
440
+ "tenant": null,
441
+ "store": "MemoryStore",
442
+ "key": "x",
443
+ "type": "write",
444
+ "duration": 1,
445
+ "ttl": 60,
446
+ "hits": null
447
+ },
448
+ "mail": {
449
+ "v": 1,
450
+ "t": "mail",
451
+ "timestamp": 1767225600.0,
452
+ "deploy": "3f9c2a1",
453
+ "server": "web-1",
454
+ "_group": "95f6fe29c2a506c760bc10e21024741e",
455
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
456
+ "execution_source": "request",
457
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
458
+ "parent_id": null,
459
+ "execution_preview": "WidgetsController#mail",
460
+ "execution_stage": "action",
461
+ "user": null,
462
+ "tenant": null,
463
+ "mailer": "WidgetMailer",
464
+ "subject": "Widget ready",
465
+ "to": 1,
466
+ "cc": 0,
467
+ "bcc": 0,
468
+ "attachments": 0,
469
+ "delivery_method": null,
470
+ "perform_deliveries": true,
471
+ "duration": 1,
472
+ "failed": false,
473
+ "message_id": "x"
474
+ },
475
+ "broadcast": {
476
+ "v": 1,
477
+ "t": "broadcast",
478
+ "timestamp": 1767225600.0,
479
+ "deploy": "3f9c2a1",
480
+ "server": "web-1",
481
+ "_group": "b99d7e0462c4682b89f5166384c16ce5",
482
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
483
+ "execution_source": "command",
484
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
485
+ "parent_id": null,
486
+ "execution_preview": null,
487
+ "execution_stage": null,
488
+ "user": null,
489
+ "tenant": null,
490
+ "kind": "broadcast",
491
+ "stream": "widgets:42:updates",
492
+ "bytes": 1,
493
+ "coder": "ActiveSupport::JSON",
494
+ "duration": 1
495
+ },
496
+ "notification": {
497
+ "v": 1,
498
+ "t": "notification",
499
+ "timestamp": 1767225600.0,
500
+ "deploy": "3f9c2a1",
501
+ "server": "web-1",
502
+ "_group": "4769d1c65ad6b3f6891a30a905cdd107",
503
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
504
+ "execution_source": "command",
505
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
506
+ "parent_id": null,
507
+ "execution_preview": null,
508
+ "execution_stage": null,
509
+ "user": null,
510
+ "tenant": null,
511
+ "notifier": "WelcomeNotification",
512
+ "delivery_method": "FixtureDelivery",
513
+ "channel": "fixture",
514
+ "duration": 1,
515
+ "failed": false
516
+ },
517
+ "outgoing_request": {
518
+ "v": 1,
519
+ "t": "outgoing_request",
520
+ "timestamp": 1767225600.0,
521
+ "deploy": "3f9c2a1",
522
+ "server": "web-1",
523
+ "_group": "c1705b1f28a4aa87734b7fbbce175101",
524
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
525
+ "execution_source": "command",
526
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
527
+ "parent_id": null,
528
+ "execution_preview": null,
529
+ "execution_stage": null,
530
+ "user": null,
531
+ "tenant": null,
532
+ "host": "example.test",
533
+ "method": "GET",
534
+ "url": "http://example.test/widgets",
535
+ "duration": 1,
536
+ "status_code": 200,
537
+ "request_size": 0,
538
+ "response_size": 2,
539
+ "error": null,
540
+ "response_body": null,
541
+ "source": "/spec/railwatch/wire_fixtures_spec.rb"
542
+ },
543
+ "storage_op": {
544
+ "v": 1,
545
+ "t": "storage_op",
546
+ "timestamp": 1767225600.0,
547
+ "deploy": "3f9c2a1",
548
+ "server": "web-1",
549
+ "_group": "aa4de3ef77d4e3076d52c9a817d10fe1",
550
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
551
+ "execution_source": "request",
552
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
553
+ "parent_id": null,
554
+ "execution_preview": "WidgetsController#storage",
555
+ "execution_stage": "action",
556
+ "user": null,
557
+ "tenant": null,
558
+ "service": "Disk",
559
+ "op": "upload",
560
+ "key": "x",
561
+ "duration": 1,
562
+ "exist": null
563
+ },
564
+ "view_render": {
565
+ "v": 1,
566
+ "t": "view_render",
567
+ "timestamp": 1767225600.0,
568
+ "deploy": "3f9c2a1",
569
+ "server": "web-1",
570
+ "_group": "803a28b56e717136cc60d3ee42bfd1eb",
571
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
572
+ "execution_source": "request",
573
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
574
+ "parent_id": null,
575
+ "execution_preview": "WidgetsController#many",
576
+ "execution_stage": "action",
577
+ "user": null,
578
+ "tenant": null,
579
+ "identifier": "app/views/gadgets/_gadget.html.erb",
580
+ "kind": "partial",
581
+ "layout": null,
582
+ "count": null,
583
+ "cache_hits": null,
584
+ "duration": 1
585
+ },
586
+ "log": {
587
+ "v": 1,
588
+ "t": "log",
589
+ "timestamp": 1767225600.0,
590
+ "deploy": "3f9c2a1",
591
+ "server": "web-1",
592
+ "_group": null,
593
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
594
+ "execution_source": "command",
595
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
596
+ "parent_id": null,
597
+ "execution_preview": null,
598
+ "execution_stage": null,
599
+ "user": null,
600
+ "tenant": null,
601
+ "level": "info",
602
+ "message": "hello world",
603
+ "tags": [],
604
+ "context": "{}"
605
+ },
606
+ "enqueued_job": {
607
+ "v": 1,
608
+ "t": "enqueued_job",
609
+ "timestamp": 1767225600.0,
610
+ "deploy": "3f9c2a1",
611
+ "server": "web-1",
612
+ "_group": "f7e9e4877be28360f79377cbd9146e0f",
613
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
614
+ "execution_source": "command",
615
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
616
+ "parent_id": null,
617
+ "execution_preview": null,
618
+ "execution_stage": null,
619
+ "user": null,
620
+ "tenant": null,
621
+ "job_id": "x",
622
+ "name": "WidgetJob",
623
+ "queue": "default",
624
+ "adapter": "Test",
625
+ "priority": null,
626
+ "scheduled_at": null,
627
+ "duration": 1,
628
+ "failed": false
629
+ },
630
+ "user": {
631
+ "v": 1,
632
+ "t": "user",
633
+ "timestamp": 1767225600.0,
634
+ "deploy": "3f9c2a1",
635
+ "server": "web-1",
636
+ "_group": null,
637
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
638
+ "execution_source": "request",
639
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
640
+ "parent_id": null,
641
+ "execution_preview": "WidgetsController#index",
642
+ "execution_stage": null,
643
+ "user": null,
644
+ "tenant": null,
645
+ "id": "x",
646
+ "name": "Ada",
647
+ "email": "ada@example.com"
648
+ },
649
+ "deprecation": {
650
+ "v": 1,
651
+ "t": "deprecation",
652
+ "timestamp": 1767225600.0,
653
+ "deploy": "3f9c2a1",
654
+ "server": "web-1",
655
+ "_group": "535d5c4459866787c7db87dbe509a1b2",
656
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
657
+ "execution_source": "command",
658
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
659
+ "parent_id": null,
660
+ "execution_preview": null,
661
+ "execution_stage": null,
662
+ "user": null,
663
+ "tenant": null,
664
+ "message": "DEPRECATION WARNING: old_method is deprecated (called from Widget#rename at app/models/widget.rb:12)",
665
+ "gem_name": "Rails",
666
+ "horizon": "2.0",
667
+ "source": null
668
+ },
669
+ "visit": {
670
+ "v": 1,
671
+ "t": "visit",
672
+ "timestamp": 1767225600.0,
673
+ "deploy": "3f9c2a1",
674
+ "server": "web-1",
675
+ "_group": "ea05ce5a166a7e08d6a75f17071e70b9",
676
+ "component": "Widgets/Index",
677
+ "url": "/widgets",
678
+ "method": "GET",
679
+ "duration": 1,
680
+ "status": "200",
681
+ "partial": false,
682
+ "only": [],
683
+ "props_bytes": 42,
684
+ "lcp": null,
685
+ "cls": null,
686
+ "inp": null,
687
+ "ttfb": null,
688
+ "user": null,
689
+ "tenant": null,
690
+ "user_agent": ""
691
+ },
692
+ "process": {
693
+ "v": 1,
694
+ "t": "process",
695
+ "timestamp": 1767225600.0,
696
+ "deploy": "3f9c2a1",
697
+ "server": "web-1",
698
+ "_group": null,
699
+ "pid": 4242,
700
+ "role": "web",
701
+ "ruby_version": "4.0.0",
702
+ "rails_version": "8.1.0",
703
+ "railwatch_version": "0.0.0",
704
+ "app": "Dummy",
705
+ "environment": "test",
706
+ "boot_seconds": 1,
707
+ "database_adapter": "sqlite3",
708
+ "queue_adapter": "test",
709
+ "cache_store": "ActiveSupport::Cache::MemoryStore"
710
+ },
711
+ "span": {
712
+ "v": 1,
713
+ "t": "span",
714
+ "timestamp": 1767225600.0,
715
+ "deploy": "3f9c2a1",
716
+ "server": "web-1",
717
+ "_group": "efe6460ef57f8240970e4d78d487942c",
718
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
719
+ "execution_source": "command",
720
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
721
+ "parent_id": null,
722
+ "execution_preview": null,
723
+ "execution_stage": null,
724
+ "user": null,
725
+ "tenant": null,
726
+ "name": "pdf.render",
727
+ "duration": 1,
728
+ "attributes": {
729
+ "vendor": "prawn"
730
+ },
731
+ "status": "ok"
732
+ },
733
+ "health": {
734
+ "v": 1,
735
+ "t": "health",
736
+ "timestamp": 1767225600.0,
737
+ "deploy": "3f9c2a1",
738
+ "server": "web-1",
739
+ "_group": null,
740
+ "pid": 4242,
741
+ "role": "web",
742
+ "memory": 1,
743
+ "threads_max": 5,
744
+ "threads_busy": 4,
745
+ "backlog": 3,
746
+ "pool_size": 5,
747
+ "pool_busy": 1,
748
+ "pool_waiting": 0,
749
+ "queue_depth": 7,
750
+ "queue_latency": 1,
751
+ "detail": "{\"queues\":{\"default\":5,\"urgent\":2},\"workers\":2,\"requests_count\":1234,\"running\":5,\"max_threads_reached\":true,\"recurring_tasks\":{\"widget_recurring\":\"*/5 * * * *\"}}"
752
+ },
753
+ "profile": {
754
+ "v": 1,
755
+ "t": "profile",
756
+ "timestamp": 1767225600.0,
757
+ "deploy": "3f9c2a1",
758
+ "server": "web-1",
759
+ "_group": null,
760
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
761
+ "execution_source": "request",
762
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
763
+ "parent_id": null,
764
+ "execution_preview": "WidgetsController#index",
765
+ "execution_stage": null,
766
+ "user": "1",
767
+ "tenant": null,
768
+ "profiler": "vernier",
769
+ "mode": "wall",
770
+ "interval": 1,
771
+ "duration": 1,
772
+ "samples": 1,
773
+ "stacks_bytes": 1,
774
+ "stacks": "H4sIAAAAAAACA6sAAIMW3IwBAAAA"
775
+ },
776
+ "attachment": {
777
+ "v": 1,
778
+ "t": "attachment",
779
+ "timestamp": 1767225600.0,
780
+ "deploy": "3f9c2a1",
781
+ "server": "web-1",
782
+ "_group": "07d15c5a4a8b9e6e2b0ca529f59fab22",
783
+ "name": "payload.json",
784
+ "content_type": "application/json",
785
+ "bytes": 1,
786
+ "data": "H4sIAAAAAAACA6sAAIMW3IwBAAAA",
787
+ "exception_group_hash": "a3c72e9137ec13baff1477ef6e001549"
788
+ },
789
+ "session": {
790
+ "v": 1,
791
+ "t": "session",
792
+ "timestamp": 1767225600.0,
793
+ "deploy": "3f9c2a1",
794
+ "server": "web-1",
795
+ "_group": "8ddf878039b70767c4a5bcf4f0c4f65e",
796
+ "id": "x",
797
+ "source": "browser",
798
+ "status": "started",
799
+ "started_at": 1,
800
+ "duration": null,
801
+ "visits": 0,
802
+ "errors": 0,
803
+ "ended": false,
804
+ "user": null,
805
+ "tenant": null
806
+ },
807
+ "llm_call": {
808
+ "v": 1,
809
+ "t": "llm_call",
810
+ "timestamp": 1767225600.0,
811
+ "deploy": "3f9c2a1",
812
+ "server": "web-1",
813
+ "_group": "2230ebdcce50190a2030e62a42dfe80f",
814
+ "trace_id": "8f14e45f-ceea-4b8f-8ac2-9a6e0c9f1a11",
815
+ "execution_source": "command",
816
+ "execution_id": "5c3b1e2a-9d4f-4a2b-8e1c-2f6a7b9c0d3e",
817
+ "parent_id": null,
818
+ "execution_preview": null,
819
+ "execution_stage": null,
820
+ "user": null,
821
+ "tenant": null,
822
+ "operation": "chat",
823
+ "provider": "anthropic",
824
+ "model": "claude-opus-5",
825
+ "response_model": "claude-opus-5",
826
+ "duration": 1,
827
+ "streaming": false,
828
+ "message_count": 1,
829
+ "tool_count": 1,
830
+ "tools": "lookup",
831
+ "cost_nanos": 100000,
832
+ "cost_reported": false,
833
+ "finish_reason": null,
834
+ "provider_request_id": null,
835
+ "params": {
836
+ "temperature": 0.2,
837
+ "operation": "chat"
838
+ },
839
+ "attachments": 2,
840
+ "attachment_types": "image,pdf",
841
+ "attachment_names": null,
842
+ "input_tokens": 12,
843
+ "output_tokens": 3,
844
+ "cache_read_tokens": 0,
845
+ "cache_write_tokens": 0,
846
+ "thinking_tokens": 0,
847
+ "workflow_id": "article-42",
848
+ "workflow_name": "Write article",
849
+ "workflow_step_id": "step-1",
850
+ "workflow_step_name": "Research",
851
+ "workflow_step_parent_id": "step-0",
852
+ "status": "ok",
853
+ "prompt": null,
854
+ "completion": null
855
+ }
856
+ }