File size: 111,894 Bytes
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5a0c7a3
 
 
 
 
 
 
 
 
 
517f650
 
 
 
 
 
 
 
 
 
 
 
 
fd936d7
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
2b06622
517f650
 
 
9598644
 
 
 
 
2b06622
9598644
 
 
517f650
2b06622
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b2dd014
 
 
 
 
 
 
517f650
 
b2dd014
517f650
3158b3e
517f650
3158b3e
 
 
 
 
 
 
 
 
 
 
 
 
 
517f650
 
 
 
 
 
 
3158b3e
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3158b3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5a0c7a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5a0c7a3
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
fd936d7
517f650
 
 
 
 
 
 
 
fd936d7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3158b3e
 
5a0c7a3
 
517f650
 
 
b2dd014
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b2dd014
 
517f650
 
 
 
b2dd014
 
 
 
 
 
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
b2dd014
 
517f650
 
 
 
 
 
 
 
 
 
 
 
 
b2dd014
517f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Transition Probabilities — Merged Across Problems</title>
<script src="https://unpkg.com/cytoscape@3.29.2/dist/cytoscape.min.js"></script>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
       background: #f8fafc; color: #1e293b; font-size: 13px; }
h1 { font-size: 1.3rem; font-weight: 700; }
.page-header { padding: 16px 28px 10px; border-bottom: 1px solid #e2e8f0;
                background: white; display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.subtitle { font-size: 0.78rem; color: #64748b; }

.main { display: flex; gap: 12px; align-items: flex-start; padding: 14px 28px; }
.cy-wrap { flex: 1 1 auto; min-width: 0; border: 1px solid #e2e8f0; border-radius: 8px;
            background: white; overflow: hidden; }
#cy { width: 100%; height: 700px; }
.detail-panel { flex: 0 0 360px; border: 1px solid #e2e8f0; border-radius: 8px;
                 background: white; padding: 12px; font-size: 0.75rem;
                 height: 700px; overflow-y: auto; }
.detail-placeholder { color: #94a3b8; font-style: italic; padding: 8px 0; }

.det-title  { font-weight: 700; margin-bottom: 8px; font-size: 0.9rem;
               display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.det-def    { font-size: 0.72rem; color: #475569; margin-bottom: 8px; line-height: 1.45; }
.det-row    { display: flex; gap: 6px; margin-bottom: 3px; align-items: baseline; }
.det-lbl    { color: #64748b; min-width: 96px; flex-shrink: 0; font-size: 0.72rem; }
.det-val    { color: #1e293b; font-family: monospace; font-size: 0.78rem; }
.state-chip { font-size: 0.74rem; font-weight: 700; color: white; padding: 2px 8px;
               border-radius: 4px; white-space: nowrap; }
.det-sub    { font-size: 0.68rem; font-weight: 700; color: #64748b; margin: 10px 0 5px;
               text-transform: uppercase; }

/* breakdown bars */
.bd-row   { margin-bottom: 10px; }
.bd-head  { display: flex; justify-content: space-between; font-size: 0.72rem;
             gap: 6px; margin-bottom: 3px; align-items: flex-start; }
.bd-lbl   { font-weight: 600; flex: 1 1 auto; min-width: 0;
             display: flex; flex-wrap: wrap; gap: 2px; align-items: center; }
.bd-num   { font-family: monospace; color: #475569; flex-shrink: 0; }
.bd-bar   { height: 8px; border-radius: 4px; background: #eef2f7; overflow: hidden; }
.bd-fill  { height: 100%; border-radius: 4px; }
.bd-ex    { font-size: 0.64rem; font-family: ui-monospace, monospace; color: #64748b;
             padding: 2px 0 2px 6px; border-left: 2px solid #eef2f7; margin-top: 2px;
             white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kind-pill  { display: inline-block; font-size: 0.62rem; padding: 1px 6px; border-radius: 3px;
               font-family: ui-monospace, monospace; font-weight: 600; line-height: 1.4; }
.kind-arrow { display: inline-block; color: #94a3b8; font-size: 0.7rem; margin: 0 1px; }

/* gap label distribution bars */
.lbl-row  { margin-bottom: 7px; }
.lbl-head { display: flex; justify-content: space-between; font-size: 0.72rem;
             gap: 6px; margin-bottom: 3px; align-items: center; }
.lbl-pill { display: inline-block; font-size: 0.65rem; padding: 1px 7px; border-radius: 10px;
             font-weight: 700; white-space: nowrap; }
.lbl-num  { font-family: monospace; color: #475569; flex-shrink: 0; font-size: 0.7rem; }
.lbl-bar  { height: 8px; border-radius: 4px; background: #eef2f7; overflow: hidden; }
.lbl-fill { height: 100%; border-radius: 4px; }

/* outgoing distribution list (node detail) */
.out-row { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; }
.out-tgt { width: 96px; flex-shrink: 0; font-size: 0.72rem; font-weight: 600; }
.out-bar { flex: 1 1 auto; height: 10px; background: #eef2f7; border-radius: 5px; overflow: hidden; }
.out-fill{ height: 100%; border-radius: 5px; }
.out-num { width: 78px; flex-shrink: 0; text-align: right; font-family: monospace;
            font-size: 0.72rem; color: #475569; }

/* NLP metric distribution bars */
.nlp-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.nlp-lbl { width: 140px; flex-shrink: 0; font-size: 0.7rem; color: #374151; }
.nlp-bar { flex: 1 1 auto; height: 8px; background: #eef2f7; border-radius: 4px; overflow: hidden; }
.nlp-fill{ height: 100%; border-radius: 4px; background: #6366f1; }
.nlp-num { width: 44px; flex-shrink: 0; text-align: right; font-family: monospace;
            font-size: 0.7rem; color: #475569; }
.nlp-chip { display: inline-block; font-size: 0.64rem; padding: 1px 6px; border-radius: 10px;
             font-weight: 700; background: #eef2ff; color: #4338ca; margin: 1px; white-space: nowrap; }

.table-section { padding: 6px 28px 32px; }
.table-section h2 { font-size: 0.95rem; margin-bottom: 8px; }
table.verify { border-collapse: collapse; font-size: 0.74rem; }
table.verify th, table.verify td { border: 1px solid #e2e8f0; padding: 4px 9px; text-align: center; }
table.verify thead th { background: #f1f5f9; }
table.verify td.tr-name { text-align: left; font-weight: 700; font-family: monospace; }
table.verify td.tr-total { font-weight: 700; background: #f8fafc; font-family: monospace; }
table.verify td.tr-sum { font-weight: 700; color: #16a34a; font-family: monospace; }
</style>
</head>
<body>
<div class="page-header">
  <h1>Transition Probabilities</h1>
  <span class="subtitle">python · gemma · 100 problems merged · edge label = count · click a node or edge for details</span>
</div>

<div class="main">
  <div class="cy-wrap"><div id="cy"></div></div>
  <div class="detail-panel" id="detail">
    <div class="detail-placeholder">Click a node or edge for details</div>
  </div>
</div>

<div class="table-section">
  <h2>Verification — outgoing probability per source state (sums to 100%)</h2>
  <table class="verify">
    <thead><tr><th class="tr-name" style="text-align:left">source</th><th>out total</th><th>Σ%</th>
      <th style="text-align:left">→ targets</th></tr></thead>
    <tbody><tr><td class="tr-name">start</td><td class="tr-total">100</td><td class="tr-sum">100%</td><td style="text-align:left">breakthrough <b>73.0%</b> <span style="color:#94a3b8">(73)</span> &nbsp; stuck <b>17.0%</b> <span style="color:#94a3b8">(17)</span> &nbsp; improved <b>10.0%</b> <span style="color:#94a3b8">(10)</span></td></tr><tr><td class="tr-name">improved</td><td class="tr-total">39</td><td class="tr-sum">100%</td><td style="text-align:left">stuck <b>38.5%</b> <span style="color:#94a3b8">(15)</span> &nbsp; regressed <b>17.9%</b> <span style="color:#94a3b8">(7)</span> &nbsp; breakthrough <b>12.8%</b> <span style="color:#94a3b8">(5)</span> &nbsp; improved <b>10.3%</b> <span style="color:#94a3b8">(4)</span> &nbsp; end_limit <b>10.3%</b> <span style="color:#94a3b8">(4)</span> &nbsp; broke <b>5.1%</b> <span style="color:#94a3b8">(2)</span> &nbsp; churn <b>2.6%</b> <span style="color:#94a3b8">(1)</span> &nbsp; end_submit <b>2.6%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">churn</td><td class="tr-total">4</td><td class="tr-sum">100%</td><td style="text-align:left">broke <b>50.0%</b> <span style="color:#94a3b8">(2)</span> &nbsp; breakthrough <b>25.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; churn <b>25.0%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">stuck</td><td class="tr-total">99</td><td class="tr-sum">100%</td><td style="text-align:left">stuck <b>52.5%</b> <span style="color:#94a3b8">(52)</span> &nbsp; improved <b>17.2%</b> <span style="color:#94a3b8">(17)</span> &nbsp; breakthrough <b>12.1%</b> <span style="color:#94a3b8">(12)</span> &nbsp; end_submit <b>7.1%</b> <span style="color:#94a3b8">(7)</span> &nbsp; broke <b>5.1%</b> <span style="color:#94a3b8">(5)</span> &nbsp; end_limit <b>4.0%</b> <span style="color:#94a3b8">(4)</span> &nbsp; regressed <b>2.0%</b> <span style="color:#94a3b8">(2)</span></td></tr><tr><td class="tr-name">breakthrough</td><td class="tr-total">98</td><td class="tr-sum">100%</td><td style="text-align:left">stay <b>55.1%</b> <span style="color:#94a3b8">(54)</span> &nbsp; end_submit <b>40.8%</b> <span style="color:#94a3b8">(40)</span> &nbsp; regressed <b>3.1%</b> <span style="color:#94a3b8">(3)</span> &nbsp; broke <b>1.0%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">stay</td><td class="tr-total">259</td><td class="tr-sum">100%</td><td style="text-align:left">stay <b>79.2%</b> <span style="color:#94a3b8">(205)</span> &nbsp; end_submit <b>13.1%</b> <span style="color:#94a3b8">(34)</span> &nbsp; broke <b>3.5%</b> <span style="color:#94a3b8">(9)</span> &nbsp; end_limit <b>3.5%</b> <span style="color:#94a3b8">(9)</span> &nbsp; regressed <b>0.8%</b> <span style="color:#94a3b8">(2)</span></td></tr><tr><td class="tr-name">regressed</td><td class="tr-total">15</td><td class="tr-sum">100%</td><td style="text-align:left">stuck <b>40.0%</b> <span style="color:#94a3b8">(6)</span> &nbsp; improved <b>26.7%</b> <span style="color:#94a3b8">(4)</span> &nbsp; churn <b>13.3%</b> <span style="color:#94a3b8">(2)</span> &nbsp; breakthrough <b>6.7%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed <b>6.7%</b> <span style="color:#94a3b8">(1)</span> &nbsp; end_limit <b>6.7%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">broke</td><td class="tr-total">19</td><td class="tr-sum">100%</td><td style="text-align:left">stuck <b>47.4%</b> <span style="color:#94a3b8">(9)</span> &nbsp; breakthrough <b>31.6%</b> <span style="color:#94a3b8">(6)</span> &nbsp; improved <b>21.1%</b> <span style="color:#94a3b8">(4)</span></td></tr></tbody>
  </table>
</div>

<div class="table-section">
  <h2>Gap label distribution — for each label, which src→tgt edges carry it</h2>
  <table class="verify">
    <thead><tr><th class="tr-name" style="text-align:left">gap label</th><th>total</th>
      <th style="text-align:left">src→tgt breakdown</th></tr></thead>
    <tbody><tr><td class="tr-name">cosmetic_refactor</td><td class="tr-total">102</td><td style="text-align:left">stay→stay <b>74.5%</b> <span style="color:#94a3b8">(76)</span> &nbsp; breakthrough→stay <b>12.7%</b> <span style="color:#94a3b8">(13)</span> &nbsp; improved→stuck <b>4.9%</b> <span style="color:#94a3b8">(5)</span> &nbsp; stuck→stuck <b>4.9%</b> <span style="color:#94a3b8">(5)</span> &nbsp; regressed→stuck <b>1.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; broke→breakthrough <b>1.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; stay→regressed <b>1.0%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">debug_failure</td><td class="tr-total">16</td><td style="text-align:left">stuck→stuck <b>31.2%</b> <span style="color:#94a3b8">(5)</span> &nbsp; stay→stay <b>25.0%</b> <span style="color:#94a3b8">(4)</span> &nbsp; broke→stuck <b>12.5%</b> <span style="color:#94a3b8">(2)</span> &nbsp; stuck→broke <b>6.2%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→stuck <b>6.2%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→stuck <b>6.2%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→end_limit <b>6.2%</b> <span style="color:#94a3b8">(1)</span> &nbsp; churn→churn <b>6.2%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">edge_case</td><td class="tr-total">8</td><td style="text-align:left">stay→stay <b>62.5%</b> <span style="color:#94a3b8">(5)</span> &nbsp; breakthrough→stay <b>25.0%</b> <span style="color:#94a3b8">(2)</span> &nbsp; regressed→churn <b>12.5%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">execute_plan</td><td class="tr-total">12</td><td style="text-align:left">stuck→improved <b>41.7%</b> <span style="color:#94a3b8">(5)</span> &nbsp; stuck→breakthrough <b>25.0%</b> <span style="color:#94a3b8">(3)</span> &nbsp; stay→stay <b>8.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; breakthrough→stay <b>8.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; broke→stuck <b>8.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; broke→breakthrough <b>8.3%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">explore</td><td class="tr-total">51</td><td style="text-align:left">stuck→stuck <b>25.5%</b> <span style="color:#94a3b8">(13)</span> &nbsp; start→stuck <b>25.5%</b> <span style="color:#94a3b8">(13)</span> &nbsp; stay→broke <b>13.7%</b> <span style="color:#94a3b8">(7)</span> &nbsp; broke→stuck <b>9.8%</b> <span style="color:#94a3b8">(5)</span> &nbsp; stay→stay <b>7.8%</b> <span style="color:#94a3b8">(4)</span> &nbsp; stuck→broke <b>5.9%</b> <span style="color:#94a3b8">(3)</span> &nbsp; improved→broke <b>3.9%</b> <span style="color:#94a3b8">(2)</span> &nbsp; start→improved <b>2.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→stuck <b>2.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; stuck→improved <b>2.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; breakthrough→broke <b>2.0%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">fix_bug</td><td class="tr-total">43</td><td style="text-align:left">stay→stay <b>20.9%</b> <span style="color:#94a3b8">(9)</span> &nbsp; breakthrough→stay <b>11.6%</b> <span style="color:#94a3b8">(5)</span> &nbsp; stuck→stuck <b>9.3%</b> <span style="color:#94a3b8">(4)</span> &nbsp; stuck→breakthrough <b>9.3%</b> <span style="color:#94a3b8">(4)</span> &nbsp; improved→regressed <b>9.3%</b> <span style="color:#94a3b8">(4)</span> &nbsp; stuck→improved <b>7.0%</b> <span style="color:#94a3b8">(3)</span> &nbsp; improved→improved <b>7.0%</b> <span style="color:#94a3b8">(3)</span> &nbsp; improved→stuck <b>4.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; improved→breakthrough <b>4.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; broke→improved <b>2.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→churn <b>2.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→stuck <b>2.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; broke→breakthrough <b>2.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→breakthrough <b>2.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→churn <b>2.3%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→improved <b>2.3%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">implement</td><td class="tr-total">161</td><td style="text-align:left">start→breakthrough <b>44.7%</b> <span style="color:#94a3b8">(72)</span> &nbsp; stay→stay <b>21.7%</b> <span style="color:#94a3b8">(35)</span> &nbsp; breakthrough→stay <b>7.5%</b> <span style="color:#94a3b8">(12)</span> &nbsp; start→improved <b>5.6%</b> <span style="color:#94a3b8">(9)</span> &nbsp; stuck→stuck <b>3.7%</b> <span style="color:#94a3b8">(6)</span> &nbsp; stuck→improved <b>3.1%</b> <span style="color:#94a3b8">(5)</span> &nbsp; improved→stuck <b>2.5%</b> <span style="color:#94a3b8">(4)</span> &nbsp; start→stuck <b>2.5%</b> <span style="color:#94a3b8">(4)</span> &nbsp; breakthrough→regressed <b>1.9%</b> <span style="color:#94a3b8">(3)</span> &nbsp; stuck→breakthrough <b>1.2%</b> <span style="color:#94a3b8">(2)</span> &nbsp; regressed→improved <b>1.2%</b> <span style="color:#94a3b8">(2)</span> &nbsp; stuck→regressed <b>1.2%</b> <span style="color:#94a3b8">(2)</span> &nbsp; broke→improved <b>0.6%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→stuck <b>0.6%</b> <span style="color:#94a3b8">(1)</span> &nbsp; broke→breakthrough <b>0.6%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→breakthrough <b>0.6%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→regressed <b>0.6%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">infra_confusion</td><td class="tr-total">4</td><td style="text-align:left">stay→stay <b>50.0%</b> <span style="color:#94a3b8">(2)</span> &nbsp; stay→end_submit <b>25.0%</b> <span style="color:#94a3b8">(1)</span> &nbsp; stay→broke <b>25.0%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">optimize_perf</td><td class="tr-total">66</td><td style="text-align:left">stay→stay <b>59.1%</b> <span style="color:#94a3b8">(39)</span> &nbsp; breakthrough→stay <b>25.8%</b> <span style="color:#94a3b8">(17)</span> &nbsp; stuck→breakthrough <b>4.5%</b> <span style="color:#94a3b8">(3)</span> &nbsp; improved→stuck <b>1.5%</b> <span style="color:#94a3b8">(1)</span> &nbsp; stuck→stuck <b>1.5%</b> <span style="color:#94a3b8">(1)</span> &nbsp; broke→stuck <b>1.5%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→stuck <b>1.5%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→improved <b>1.5%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→breakthrough <b>1.5%</b> <span style="color:#94a3b8">(1)</span> &nbsp; stay→regressed <b>1.5%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">revert</td><td class="tr-total">21</td><td style="text-align:left">stay→stay <b>52.4%</b> <span style="color:#94a3b8">(11)</span> &nbsp; stuck→stuck <b>38.1%</b> <span style="color:#94a3b8">(8)</span> &nbsp; improved→stuck <b>4.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; churn→breakthrough <b>4.8%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">rewrite</td><td class="tr-total">26</td><td style="text-align:left">stuck→stuck <b>26.9%</b> <span style="color:#94a3b8">(7)</span> &nbsp; stuck→improved <b>11.5%</b> <span style="color:#94a3b8">(3)</span> &nbsp; breakthrough→stay <b>7.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; broke→improved <b>7.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; churn→broke <b>7.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; broke→breakthrough <b>7.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; improved→regressed <b>7.7%</b> <span style="color:#94a3b8">(2)</span> &nbsp; stuck→broke <b>3.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→stuck <b>3.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; stay→broke <b>3.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→breakthrough <b>3.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→regressed <b>3.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→improved <b>3.8%</b> <span style="color:#94a3b8">(1)</span></td></tr><tr><td class="tr-name">verify</td><td class="tr-total">120</td><td style="text-align:left">breakthrough→end_submit <b>33.3%</b> <span style="color:#94a3b8">(40)</span> &nbsp; stay→end_submit <b>25.8%</b> <span style="color:#94a3b8">(31)</span> &nbsp; stay→stay <b>15.8%</b> <span style="color:#94a3b8">(19)</span> &nbsp; stay→end_limit <b>8.3%</b> <span style="color:#94a3b8">(10)</span> &nbsp; stuck→end_submit <b>5.0%</b> <span style="color:#94a3b8">(6)</span> &nbsp; stuck→end_limit <b>4.2%</b> <span style="color:#94a3b8">(5)</span> &nbsp; stuck→stuck <b>2.5%</b> <span style="color:#94a3b8">(3)</span> &nbsp; improved→end_limit <b>2.5%</b> <span style="color:#94a3b8">(3)</span> &nbsp; breakthrough→stay <b>0.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; regressed→end_limit <b>0.8%</b> <span style="color:#94a3b8">(1)</span> &nbsp; improved→end_submit <b>0.8%</b> <span style="color:#94a3b8">(1)</span></td></tr></tbody>
  </table>
</div>

<script>
const M = {"canvas": {"w": 760, "h": 760}, "nodes": [{"id": "start", "label": "▶", "state_type": "start", "color": "#9E9E9E", "definition": "Virtual starting state — before any solution.py was written.", "visits": 100, "out_total": 100, "nlp_out": {"m1_correctness": 69.0, "m1_efficiency": 38.0, "m2": 77.0, "m3_existing": 7.0, "m6": 17.0, "m7": 2.0, "m3_sample": 41.0, "m4": 26.0, "m3_own": 1.0, "m9": 11.0, "m8_inline": 1.0, "m8_lang": 1.0}, "nlp_out_total": 100, "nlp_in": {}, "nlp_in_total": 0, "gap_out": {"implement": 85.9, "explore": 14.1}, "gap_out_total": 99, "gap_in": {}, "gap_in_total": 0, "x": 80.0, "y": 380.0}, {"id": "improved", "label": "improved", "state_type": "improved", "color": "#2196F3", "definition": "Gained tests, lost none (but not yet all-pass).", "visits": 39, "out_total": 39, "nlp_out": {"m3_sample": 71.8, "m4": 43.6, "m1_correctness": 76.9, "m1_efficiency": 43.6, "m2": 82.1, "m6": 15.4, "m9": 12.8, "m3_own": 12.8, "m8_lang": 5.1, "m7": 2.6, "m3_existing": 7.7}, "nlp_out_total": 39, "nlp_in": {"m1_correctness": 84.6, "m1_efficiency": 35.9, "m2": 89.7, "m3_sample": 79.5, "m4": 48.7, "m9": 12.8, "m6": 5.1, "m3_own": 10.3, "m3_existing": 2.6}, "nlp_in_total": 39, "gap_out": {"fix_bug": 30.8, "implement": 15.4, "cosmetic_refactor": 12.8, "verify": 10.3, "optimize_perf": 7.7, "explore": 7.7, "rewrite": 7.7, "debug_failure": 5.1, "revert": 2.6}, "gap_out_total": 39, "gap_in": {"implement": 43.6, "fix_bug": 20.5, "rewrite": 15.4, "execute_plan": 12.8, "explore": 5.1, "optimize_perf": 2.6}, "gap_in_total": 39, "x": 260.0, "y": 170.0}, {"id": "churn", "label": "churn", "state_type": "churn", "color": "#9C27B0", "definition": "Gained some tests AND lost others — mixed regression+improvement.", "visits": 4, "out_total": 4, "nlp_out": {"m1_correctness": 50.0, "m2": 100.0, "m3_sample": 75.0, "m4": 25.0, "m9": 25.0, "m1_efficiency": 25.0, "m6": 25.0, "m7": 25.0}, "nlp_out_total": 4, "nlp_in": {"m1_correctness": 50.0, "m1_efficiency": 50.0, "m2": 100.0, "m3_sample": 100.0, "m6": 25.0}, "nlp_in_total": 4, "gap_out": {"rewrite": 50.0, "revert": 25.0, "debug_failure": 25.0}, "gap_out_total": 4, "gap_in": {"fix_bug": 50.0, "edge_case": 25.0, "debug_failure": 25.0}, "gap_in_total": 4, "x": 365.0, "y": 170.0}, {"id": "stuck", "label": "stuck", "state_type": "stuck", "color": "#FF9800", "definition": "Identical test tuple — no change from the previous snapshot.", "visits": 99, "out_total": 99, "nlp_out": {"m1_correctness": 72.7, "m2": 80.8, "m3_sample": 62.6, "m8_lang": 2.0, "m1_efficiency": 56.6, "m6": 17.2, "m4": 45.5, "m7": 4.0, "m9": 8.1, "m3_own": 2.0, "m3_existing": 2.0}, "nlp_out_total": 99, "nlp_in": {"m3_sample": 52.5, "m4": 43.4, "m1_correctness": 72.7, "m1_efficiency": 53.5, "m2": 85.9, "m6": 17.2, "m9": 12.1, "m3_own": 2.0, "m8_lang": 3.0, "m7": 3.0}, "nlp_in_total": 99, "gap_out": {"explore": 17.2, "implement": 15.2, "verify": 14.1, "rewrite": 11.1, "fix_bug": 11.1, "revert": 8.1, "execute_plan": 8.1, "debug_failure": 6.1, "cosmetic_refactor": 5.1, "optimize_perf": 4.0}, "gap_out_total": 99, "gap_in": {"explore": 32.3, "implement": 15.2, "cosmetic_refactor": 11.1, "revert": 9.1, "debug_failure": 9.1, "rewrite": 8.1, "fix_bug": 7.1, "optimize_perf": 4.0, "verify": 3.0, "execute_plan": 1.0}, "gap_in_total": 99, "x": 260.0, "y": 380.0}, {"id": "breakthrough", "label": "breakthrough", "state_type": "breakthrough", "color": "#00BCD4", "definition": "Some failing → all passing.", "visits": 98, "out_total": 98, "nlp_out": {"m1_correctness": 85.7, "m1_efficiency": 54.1, "m2": 77.6, "m3_existing": 56.1, "m6": 62.2, "m7": 10.2, "m3_sample": 45.9, "m3_own": 2.0, "m4": 19.4, "m9": 4.1, "m8_lang": 3.1}, "nlp_out_total": 98, "nlp_in": {"m1_correctness": 65.3, "m1_efficiency": 41.8, "m2": 70.4, "m3_existing": 10.2, "m6": 23.5, "m7": 5.1, "m3_sample": 56.1, "m4": 28.6, "m3_own": 2.0, "m9": 3.1, "m8_inline": 1.0, "m8_lang": 1.0}, "nlp_in_total": 98, "gap_out": {"verify": 42.3, "optimize_perf": 17.5, "implement": 15.5, "cosmetic_refactor": 13.4, "fix_bug": 5.2, "edge_case": 2.1, "rewrite": 2.1, "execute_plan": 1.0, "explore": 1.0}, "gap_out_total": 97, "gap_in": {"implement": 78.4, "fix_bug": 8.2, "execute_plan": 4.1, "optimize_perf": 4.1, "rewrite": 3.1, "cosmetic_refactor": 1.0, "revert": 1.0}, "gap_in_total": 97, "x": 260.0, "y": 590.0}, {"id": "stay", "label": "stay", "state_type": "stay", "color": "#4CAF50", "definition": "All-pass → all-pass (model rewrote a working solution).", "visits": 259, "out_total": 259, "nlp_out": {"m1_correctness": 90.3, "m1_efficiency": 81.9, "m2": 89.2, "m3_existing": 22.8, "m4": 18.5, "m6": 74.5, "m7": 10.8, "m3_sample": 62.9, "m3_own": 6.9, "m9": 5.4, "m8_lang": 5.0, "m8_inline": 1.2}, "nlp_out_total": 259, "nlp_in": {"m1_correctness": 95.0, "m1_efficiency": 86.1, "m2": 95.0, "m3_existing": 26.3, "m6": 81.1, "m7": 12.4, "m3_sample": 76.8, "m3_own": 7.3, "m4": 21.6, "m9": 5.8, "m8_lang": 4.6, "m8_inline": 1.2}, "nlp_in_total": 259, "gap_out": {"cosmetic_refactor": 29.8, "verify": 23.3, "optimize_perf": 15.5, "implement": 13.6, "explore": 4.3, "revert": 4.3, "fix_bug": 3.5, "edge_case": 1.9, "debug_failure": 1.6, "infra_confusion": 1.6, "execute_plan": 0.4, "rewrite": 0.4}, "gap_out_total": 258, "gap_in": {"cosmetic_refactor": 34.5, "optimize_perf": 21.7, "implement": 18.2, "verify": 7.8, "fix_bug": 5.4, "revert": 4.3, "edge_case": 2.7, "explore": 1.6, "debug_failure": 1.6, "execute_plan": 0.8, "infra_confusion": 0.8, "rewrite": 0.8}, "gap_in_total": 258, "x": 470.0, "y": 590.0}, {"id": "regressed", "label": "regressed", "state_type": "regressed", "color": "#F44336", "definition": "Lost tests, gained none (but not all-fail).", "visits": 15, "out_total": 15, "nlp_out": {"m1_correctness": 73.3, "m2": 86.7, "m3_sample": 86.7, "m4": 6.7, "m6": 33.3, "m1_efficiency": 33.3, "m3_own": 20.0, "m9": 26.7, "m7": 6.7, "m3_existing": 6.7}, "nlp_out_total": 15, "nlp_in": {"m1_correctness": 86.7, "m2": 100.0, "m3_sample": 86.7, "m4": 46.7, "m6": 40.0, "m1_efficiency": 53.3, "m3_existing": 13.3, "m7": 13.3, "m9": 33.3, "m3_own": 20.0}, "nlp_in_total": 15, "gap_out": {"fix_bug": 26.7, "rewrite": 20.0, "implement": 20.0, "optimize_perf": 6.7, "cosmetic_refactor": 6.7, "debug_failure": 6.7, "edge_case": 6.7, "verify": 6.7}, "gap_out_total": 15, "gap_in": {"implement": 40.0, "fix_bug": 26.7, "rewrite": 20.0, "cosmetic_refactor": 6.7, "optimize_perf": 6.7}, "gap_in_total": 15, "x": 470.0, "y": 170.0}, {"id": "broke", "label": "broke", "state_type": "broke", "color": "#7B0000", "definition": "Had some passing → zero passing (or compile/runtime failure).", "visits": 19, "out_total": 19, "nlp_out": {"m1_correctness": 52.6, "m2": 63.2, "m3_sample": 47.4, "m4": 57.9, "m6": 10.5, "m1_efficiency": 36.8}, "nlp_out_total": 19, "nlp_in": {"m1_correctness": 78.9, "m1_efficiency": 63.2, "m2": 89.5, "m3_sample": 21.1, "m4": 78.9, "m9": 21.1, "m3_own": 5.3, "m6": 31.6, "m8_lang": 10.5, "m3_existing": 5.3}, "nlp_in_total": 19, "gap_out": {"explore": 26.3, "rewrite": 21.1, "implement": 10.5, "fix_bug": 10.5, "debug_failure": 10.5, "execute_plan": 10.5, "optimize_perf": 5.3, "cosmetic_refactor": 5.3}, "gap_out_total": 19, "gap_in": {"explore": 68.4, "rewrite": 21.1, "debug_failure": 5.3, "infra_confusion": 5.3}, "gap_in_total": 19, "x": 470.0, "y": 380.0}, {"id": "end_submit", "label": "SUBMIT", "state_type": "end_submit", "color": "#607D8B", "definition": "Model submitted itself (ran COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT).", "visits": 82, "out_total": 0, "nlp_out": {}, "nlp_out_total": 0, "nlp_in": {"m1_correctness": 80.5, "m1_efficiency": 42.7, "m2": 64.6, "m6": 45.1, "m3_existing": 52.4, "m7": 6.1, "m3_sample": 6.1, "m9": 2.4, "m8_lang": 3.7}, "nlp_in_total": 82, "gap_out": {}, "gap_out_total": 0, "gap_in": {"verify": 98.7, "infra_confusion": 1.3}, "gap_in_total": 79, "x": 680.0, "y": 290.0}, {"id": "end_limit", "label": "LIMIT", "state_type": "end_limit", "color": "#455A64", "definition": "Model force-stopped at the turn limit / wall-clock timeout.", "visits": 18, "out_total": 0, "nlp_out": {}, "nlp_out_total": 0, "nlp_in": {"m1_correctness": 5.6, "m1_efficiency": 5.6, "m2": 5.6, "m3_existing": 11.1, "m3_sample": 5.6, "m9": 5.6}, "nlp_in_total": 18, "gap_out": {}, "gap_out_total": 0, "gap_in": {"verify": 95.0, "debug_failure": 5.0}, "gap_in_total": 20, "x": 680.0, "y": 470.0}], "edges": [{"id": "m0", "source": "start", "target": "breakthrough", "color": "#9E9E9E", "count": 73, "out_pct": 73.0, "label": "73", "n_unique_chains": 3, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 71, "pct": 97.3, "examples": [{"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc302/abc302_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc302/abc302_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc303/abc303_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc305/abc305_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc305/abc305_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc311/abc311_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc313/abc313_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc315/abc315_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc318/abc318_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc319/abc319_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc322/abc322_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc325/abc325_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc326/abc326_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc329/abc329_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc330/abc330_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc332/abc332_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc333/abc333_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc333/abc333_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc335/abc335_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc336/abc336_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc340/abc340_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc341/abc341_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc341/abc341_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc342/abc342_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc344/abc344_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc345/abc345_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc351/abc351_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc354/abc354_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc355/abc355_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc357/abc357_b", "snap_from": -1, "snap_to": 0}]}, {"chain": ["inline_script", "write"], "label": "inline_script → write solution.py", "count": 1, "pct": 1.4, "examples": [{"problem": "gemma_4_26b_a4b_it/abc356/abc356_d", "snap_from": -1, "snap_to": 0}]}, {"chain": ["write", "write"], "label": "write solution.py → write solution.py", "count": 1, "pct": 1.4, "examples": [{"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": -1, "snap_to": 0}]}], "label_dist": [{"label": "implement", "count": 72, "pct": 100.0}], "n_labeled": 72, "nlp_rates": {"m1_correctness": 63, "m1_efficiency": 37, "m2": 70, "m3_existing": 10, "m6": 22, "m7": 3, "m3_sample": 47, "m4": 18, "m3_own": 1, "m9": 4, "m8_inline": 1}}, {"id": "m1", "source": "breakthrough", "target": "stay", "color": "#00BCD4", "count": 54, "out_pct": 55.1, "label": "54", "n_unique_chains": 7, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 41, "pct": 75.9, "examples": [{"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc302/abc302_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 11, "snap_to": 12}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 16, "snap_to": 17}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 23, "snap_to": 24}, {"problem": "gemma_4_26b_a4b_it/abc344/abc344_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc345/abc345_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc345/abc345_d", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc359/abc359_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc359/abc359_d", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc365/abc365_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc366/abc366_b", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc371/abc371_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc372/abc372_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc381/abc381_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc381/abc381_d", "snap_from": 14, "snap_to": 15}, {"problem": "gemma_4_26b_a4b_it/abc381/abc381_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc383/abc383_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc385/abc385_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc387/abc387_b", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc390/abc390_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc393/abc393_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc397/abc397_b", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc397/abc397_e", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_b", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_d", "snap_from": 3, "snap_to": 4}]}, {"chain": ["test", "write"], "label": "run ./test.sh → write solution.py", "count": 7, "pct": 13.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc303/abc303_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc332/abc332_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc333/abc333_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc340/abc340_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc355/abc355_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc364/abc364_b", "snap_from": 0, "snap_to": 1}]}, {"chain": ["time", "write"], "label": "time solution.py → write solution.py", "count": 2, "pct": 3.7, "examples": [{"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc358/abc358_e", "snap_from": 0, "snap_to": 1}]}, {"chain": ["run_sample", "write"], "label": "run solution.py (sample) → write solution.py", "count": 1, "pct": 1.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc325/abc325_b", "snap_from": 0, "snap_to": 1}]}, {"chain": ["run_script", "write"], "label": "run helper script → write solution.py", "count": 1, "pct": 1.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 11, "snap_to": 12}]}, {"chain": ["write_script", "write_script", "write"], "label": "write helper script → write helper script → write solution.py", "count": 1, "pct": 1.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 3, "snap_to": 4}]}, {"chain": ["write_script", "write"], "label": "write helper script → write solution.py", "count": 1, "pct": 1.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc391/abc391_e", "snap_from": 6, "snap_to": 7}]}], "label_dist": [{"label": "optimize_perf", "count": 17, "pct": 32.1}, {"label": "cosmetic_refactor", "count": 13, "pct": 24.5}, {"label": "implement", "count": 12, "pct": 22.6}, {"label": "fix_bug", "count": 5, "pct": 9.4}, {"label": "edge_case", "count": 2, "pct": 3.8}, {"label": "rewrite", "count": 2, "pct": 3.8}, {"label": "execute_plan", "count": 1, "pct": 1.9}, {"label": "verify", "count": 1, "pct": 1.9}], "n_labeled": 53, "nlp_rates": {"m1_correctness": 93, "m1_efficiency": 76, "m2": 93, "m3_existing": 31, "m6": 74, "m7": 11, "m3_sample": 74, "m3_own": 4, "m4": 30, "m9": 7, "m8_lang": 4}}, {"id": "m2", "source": "stay", "target": "stay", "color": "#4CAF50", "count": 205, "out_pct": 79.2, "label": "205", "n_unique_chains": 4, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 188, "pct": 91.7, "examples": [{"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 11, "snap_to": 12}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 11, "snap_to": 12}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 12, "snap_to": 13}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 13, "snap_to": 14}]}, {"chain": ["write_script", "write"], "label": "write helper script → write solution.py", "count": 10, "pct": 4.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_e", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_e", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_e", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc393/abc393_e", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_d", "snap_from": 8, "snap_to": 9}]}, {"chain": ["test", "write"], "label": "run ./test.sh → write solution.py", "count": 6, "pct": 2.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc372/abc372_a", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc383/abc383_c", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc383/abc383_c", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc383/abc383_c", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_d", "snap_from": 10, "snap_to": 11}]}, {"chain": ["test", "inline_script", "write"], "label": "run ./test.sh → inline_script → write solution.py", "count": 1, "pct": 0.5, "examples": [{"problem": "gemma_4_26b_a4b_it/abc358/abc358_e", "snap_from": 8, "snap_to": 9}]}], "label_dist": [{"label": "cosmetic_refactor", "count": 76, "pct": 37.1}, {"label": "optimize_perf", "count": 39, "pct": 19.0}, {"label": "implement", "count": 35, "pct": 17.1}, {"label": "verify", "count": 19, "pct": 9.3}, {"label": "revert", "count": 11, "pct": 5.4}, {"label": "fix_bug", "count": 9, "pct": 4.4}, {"label": "edge_case", "count": 5, "pct": 2.4}, {"label": "explore", "count": 4, "pct": 2.0}, {"label": "debug_failure", "count": 4, "pct": 2.0}, {"label": "infra_confusion", "count": 2, "pct": 1.0}, {"label": "execute_plan", "count": 1, "pct": 0.5}], "n_labeled": 205, "nlp_rates": {"m1_correctness": 96, "m1_efficiency": 89, "m2": 96, "m3_existing": 25, "m4": 20, "m6": 83, "m7": 13, "m3_sample": 78, "m3_own": 8, "m9": 5, "m8_lang": 5, "m8_inline": 1}}, {"id": "m3", "source": "stay", "target": "end_submit", "color": "#4CAF50", "count": 34, "out_pct": 13.1, "label": "34", "n_unique_chains": 4, "breakdown": [{"chain": ["submit"], "label": "submit", "count": 28, "pct": 82.4, "examples": [{"problem": "gemma_4_26b_a4b_it/1883/1883_B", "snap_from": 6, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc302/abc302_c", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc303/abc303_a", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_d", "snap_from": 6, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 9, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 26, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc332/abc332_c", "snap_from": 5, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc333/abc333_c", "snap_from": 5, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 9, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc340/abc340_c", "snap_from": 2, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc344/abc344_d", "snap_from": 5, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc355/abc355_a", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc358/abc358_e", "snap_from": 15, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc359/abc359_c", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc364/abc364_b", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc371/abc371_a", "snap_from": 3, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc372/abc372_a", "snap_from": 2, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 15, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc381/abc381_e", "snap_from": 10, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc383/abc383_c", "snap_from": 8, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc385/abc385_e", "snap_from": 11, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc387/abc387_b", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_e", "snap_from": 3, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_e", "snap_from": 9, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc393/abc393_e", "snap_from": 5, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc397/abc397_b", "snap_from": 2, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 6, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_d", "snap_from": 4, "snap_to": -1}]}, {"chain": ["test", "submit"], "label": "run ./test.sh → submit", "count": 4, "pct": 11.8, "examples": [{"problem": "gemma_4_26b_a4b_it/abc310/abc310_b", "snap_from": 8, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc365/abc365_d", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_d", "snap_from": 7, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_b", "snap_from": 7, "snap_to": -1}]}, {"chain": ["run_sample"], "label": "run solution.py (sample)", "count": 1, "pct": 2.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc345/abc345_d", "snap_from": 7, "snap_to": -1}]}, {"chain": ["run_sample", "write_script", "test", "submit"], "label": "run solution.py (sample) → write helper script → run ./test.sh → submit", "count": 1, "pct": 2.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc390/abc390_e", "snap_from": 3, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 31, "pct": 96.9}, {"label": "infra_confusion", "count": 1, "pct": 3.1}], "n_labeled": 32, "nlp_rates": {"m1_correctness": 82, "m1_efficiency": 59, "m2": 74, "m6": 47, "m3_existing": 18, "m7": 3, "m3_sample": 6, "m9": 3, "m8_lang": 3}}, {"id": "m4", "source": "start", "target": "improved", "color": "#9E9E9E", "count": 10, "out_pct": 10.0, "label": "10", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 10, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc395/abc395_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc397/abc397_e", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc192/arc192_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_e", "snap_from": -1, "snap_to": 0}]}], "label_dist": [{"label": "implement", "count": 9, "pct": 90.0}, {"label": "explore", "count": 1, "pct": 10.0}], "n_labeled": 10, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 60, "m2": 100, "m3_sample": 60, "m4": 50, "m9": 20}}, {"id": "m5", "source": "improved", "target": "stuck", "color": "#2196F3", "count": 15, "out_pct": 38.5, "label": "15", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 14, "pct": 93.3, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc378/abc378_g", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc395/abc395_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/arc196/arc196_a", "snap_from": 1, "snap_to": 2}]}, {"chain": ["run_sample", "run_sample", "write"], "label": "run solution.py (sample) → run solution.py (sample) → write solution.py", "count": 1, "pct": 6.7, "examples": [{"problem": "gemma_4_26b_a4b_it/abc389/abc389_g", "snap_from": 3, "snap_to": 4}]}], "label_dist": [{"label": "cosmetic_refactor", "count": 5, "pct": 33.3}, {"label": "implement", "count": 4, "pct": 26.7}, {"label": "fix_bug", "count": 2, "pct": 13.3}, {"label": "revert", "count": 1, "pct": 6.7}, {"label": "optimize_perf", "count": 1, "pct": 6.7}, {"label": "debug_failure", "count": 1, "pct": 6.7}, {"label": "explore", "count": 1, "pct": 6.7}], "n_labeled": 15, "nlp_rates": {"m3_sample": 80, "m4": 40, "m1_correctness": 80, "m1_efficiency": 53, "m2": 80, "m6": 20, "m9": 7, "m3_own": 7, "m8_lang": 7, "m7": 7}}, {"id": "m6", "source": "stuck", "target": "stuck", "color": "#FF9800", "count": 52, "out_pct": 52.5, "label": "52", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 51, "pct": 98.1, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc359/abc359_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc382/abc382_g", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc382/abc382_g", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc382/abc382_g", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc382/abc382_g", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc389/abc389_g", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc395/abc395_c", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 14, "snap_to": 15}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 15, "snap_to": 16}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 16, "snap_to": 17}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 17, "snap_to": 18}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 2, "snap_to": 3}]}, {"chain": ["write_script", "write"], "label": "write helper script → write solution.py", "count": 1, "pct": 1.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 9, "snap_to": 10}]}], "label_dist": [{"label": "explore", "count": 13, "pct": 25.0}, {"label": "revert", "count": 8, "pct": 15.4}, {"label": "rewrite", "count": 7, "pct": 13.5}, {"label": "implement", "count": 6, "pct": 11.5}, {"label": "debug_failure", "count": 5, "pct": 9.6}, {"label": "cosmetic_refactor", "count": 5, "pct": 9.6}, {"label": "fix_bug", "count": 4, "pct": 7.7}, {"label": "verify", "count": 3, "pct": 5.8}, {"label": "optimize_perf", "count": 1, "pct": 1.9}], "n_labeled": 52, "nlp_rates": {"m1_correctness": 75, "m2": 90, "m3_sample": 63, "m8_lang": 2, "m1_efficiency": 63, "m6": 19, "m4": 40, "m7": 4, "m9": 8}}, {"id": "m7", "source": "stuck", "target": "broke", "color": "#FF9800", "count": 5, "out_pct": 5.1, "label": "5", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 5, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc378/abc378_g", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 7, "snap_to": 8}]}], "label_dist": [{"label": "explore", "count": 3, "pct": 60.0}, {"label": "rewrite", "count": 1, "pct": 20.0}, {"label": "debug_failure", "count": 1, "pct": 20.0}], "n_labeled": 5, "nlp_rates": {"m1_correctness": 80, "m1_efficiency": 60, "m2": 100, "m3_sample": 60, "m4": 80, "m9": 20}}, {"id": "m8", "source": "broke", "target": "improved", "color": "#7B0000", "count": 4, "out_pct": 21.1, "label": "4", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 4, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 8, "snap_to": 9}]}], "label_dist": [{"label": "rewrite", "count": 2, "pct": 50.0}, {"label": "implement", "count": 1, "pct": 25.0}, {"label": "fix_bug", "count": 1, "pct": 25.0}], "n_labeled": 4, "nlp_rates": {"m1_correctness": 75, "m2": 100, "m3_sample": 100, "m4": 25, "m6": 25}}, {"id": "m9", "source": "improved", "target": "churn", "color": "#2196F3", "count": 1, "out_pct": 2.6, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 4, "snap_to": 5}]}], "label_dist": [{"label": "fix_bug", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100, "m3_sample": 100}}, {"id": "m10", "source": "churn", "target": "broke", "color": "#9C27B0", "count": 2, "out_pct": 50.0, "label": "2", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 2, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 8, "snap_to": 9}]}], "label_dist": [{"label": "rewrite", "count": 2, "pct": 100.0}], "n_labeled": 2, "nlp_rates": {"m1_correctness": 50, "m2": 100, "m3_sample": 50, "m4": 50, "m9": 50}}, {"id": "m11", "source": "broke", "target": "stuck", "color": "#7B0000", "count": 9, "out_pct": 47.4, "label": "9", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 9, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 14, "snap_to": 15}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 21, "snap_to": 22}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc378/abc378_g", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 5, "snap_to": 6}]}], "label_dist": [{"label": "explore", "count": 5, "pct": 55.6}, {"label": "debug_failure", "count": 2, "pct": 22.2}, {"label": "optimize_perf", "count": 1, "pct": 11.1}, {"label": "execute_plan", "count": 1, "pct": 11.1}], "n_labeled": 9, "nlp_rates": {"m1_correctness": 44, "m2": 56, "m4": 78, "m1_efficiency": 44}}, {"id": "m12", "source": "stuck", "target": "improved", "color": "#FF9800", "count": 17, "out_pct": 17.2, "label": "17", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 17, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/abc378/abc378_g", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc389/abc389_g", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 18, "snap_to": 19}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc196/arc196_a", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc196/arc196_d", "snap_from": 6, "snap_to": 7}]}], "label_dist": [{"label": "implement", "count": 5, "pct": 29.4}, {"label": "execute_plan", "count": 5, "pct": 29.4}, {"label": "rewrite", "count": 3, "pct": 17.6}, {"label": "fix_bug", "count": 3, "pct": 17.6}, {"label": "explore", "count": 1, "pct": 5.9}], "n_labeled": 17, "nlp_rates": {"m3_sample": 82, "m4": 71, "m1_correctness": 76, "m2": 76, "m1_efficiency": 41, "m3_own": 12, "m9": 6, "m6": 6}}, {"id": "m13", "source": "stuck", "target": "end_submit", "color": "#FF9800", "count": 7, "out_pct": 7.1, "label": "7", "n_unique_chains": 3, "breakdown": [{"chain": ["submit"], "label": "submit", "count": 5, "pct": 71.4, "examples": [{"problem": "gemma_4_26b_a4b_it/abc301/abc301_f", "snap_from": 10, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc382/abc382_g", "snap_from": 4, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc389/abc389_g", "snap_from": 4, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 9, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": 11, "snap_to": -1}]}, {"chain": ["write_script", "submit"], "label": "write helper script → submit", "count": 1, "pct": 14.3, "examples": [{"problem": "gemma_4_26b_a4b_it/abc337/abc337_e", "snap_from": 0, "snap_to": -1}]}, {"chain": [], "label": "(no useful command)", "count": 1, "pct": 14.3, "examples": [{"problem": "gemma_4_26b_a4b_it/arc196/arc196_a", "snap_from": 2, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 6, "pct": 100.0}], "n_labeled": 6, "nlp_rates": {"m1_correctness": 86, "m1_efficiency": 71, "m2": 71, "m7": 14, "m8_lang": 14, "m6": 29, "m3_sample": 14, "m9": 14}}, {"id": "m14", "source": "breakthrough", "target": "end_submit", "color": "#00BCD4", "count": 40, "out_pct": 40.8, "label": "40", "n_unique_chains": 4, "breakdown": [{"chain": ["test", "submit"], "label": "run ./test.sh → submit", "count": 31, "pct": 77.5, "examples": [{"problem": "gemma_4_26b_a4b_it/abc302/abc302_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc305/abc305_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc313/abc313_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc315/abc315_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc318/abc318_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc322/abc322_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc326/abc326_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc329/abc329_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc330/abc330_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc333/abc333_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc335/abc335_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc336/abc336_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc341/abc341_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc341/abc341_d", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc351/abc351_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc356/abc356_d", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc357/abc357_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc358/abc358_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc360/abc360_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc384/abc384_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc387/abc387_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc389/abc389_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc392/abc392_c", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc395/abc395_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc396/abc396_a", "snap_from": 0, "snap_to": -1}]}, {"chain": ["submit"], "label": "submit", "count": 7, "pct": 17.5, "examples": [{"problem": "gemma_4_26b_a4b_it/abc311/abc311_d", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc319/abc319_b", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc342/abc342_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc354/abc354_a", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc357/abc357_d", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 9, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc395/abc395_c", "snap_from": 3, "snap_to": -1}]}, {"chain": ["write_script", "test", "submit"], "label": "write helper script → run ./test.sh → submit", "count": 1, "pct": 2.5, "examples": [{"problem": "gemma_4_26b_a4b_it/abc305/abc305_b", "snap_from": 0, "snap_to": -1}]}, {"chain": ["run_sample", "run_sample", "test", "submit"], "label": "run solution.py (sample) → run solution.py (sample) → run ./test.sh → submit", "count": 1, "pct": 2.5, "examples": [{"problem": "gemma_4_26b_a4b_it/abc384/abc384_c", "snap_from": 1, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 40, "pct": 100.0}], "n_labeled": 40, "nlp_rates": {"m1_correctness": 78, "m3_existing": 92, "m2": 55, "m6": 48, "m8_lang": 2, "m1_efficiency": 22, "m3_sample": 5, "m7": 8}}, {"id": "m15", "source": "breakthrough", "target": "regressed", "color": "#00BCD4", "count": 3, "out_pct": 3.1, "label": "3", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 2, "pct": 66.7, "examples": [{"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 7, "snap_to": 8}]}, {"chain": ["test", "write"], "label": "run ./test.sh → write solution.py", "count": 1, "pct": 33.3, "examples": [{"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 5, "snap_to": 6}]}], "label_dist": [{"label": "implement", "count": 3, "pct": 100.0}], "n_labeled": 3, "nlp_rates": {"m1_correctness": 67, "m2": 100, "m3_sample": 100, "m4": 67, "m6": 67, "m1_efficiency": 67, "m3_existing": 33, "m7": 33}}, {"id": "m16", "source": "regressed", "target": "stuck", "color": "#F44336", "count": 6, "out_pct": 40.0, "label": "6", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 6, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 7, "snap_to": 8}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 13, "snap_to": 14}]}], "label_dist": [{"label": "rewrite", "count": 1, "pct": 16.7}, {"label": "optimize_perf", "count": 1, "pct": 16.7}, {"label": "cosmetic_refactor", "count": 1, "pct": 16.7}, {"label": "implement", "count": 1, "pct": 16.7}, {"label": "fix_bug", "count": 1, "pct": 16.7}, {"label": "debug_failure", "count": 1, "pct": 16.7}], "n_labeled": 6, "nlp_rates": {"m1_correctness": 67, "m2": 83, "m3_sample": 100, "m4": 17, "m6": 50, "m1_efficiency": 50, "m3_own": 17, "m9": 17}}, {"id": "m17", "source": "stuck", "target": "breakthrough", "color": "#FF9800", "count": 12, "out_pct": 12.1, "label": "12", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 12, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc308/abc308_e", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 15, "snap_to": 16}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 22, "snap_to": 23}, {"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc359/abc359_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc384/abc384_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 8, "snap_to": 9}, {"problem": "gemma_4_26b_a4b_it/abc395/abc395_c", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_b", "snap_from": 0, "snap_to": 1}]}], "label_dist": [{"label": "fix_bug", "count": 4, "pct": 33.3}, {"label": "execute_plan", "count": 3, "pct": 25.0}, {"label": "optimize_perf", "count": 3, "pct": 25.0}, {"label": "implement", "count": 2, "pct": 16.7}], "n_labeled": 12, "nlp_rates": {"m1_correctness": 67, "m2": 67, "m3_sample": 83, "m4": 58, "m1_efficiency": 50, "m3_existing": 8, "m6": 25, "m7": 8}}, {"id": "m18", "source": "stay", "target": "broke", "color": "#4CAF50", "count": 9, "out_pct": 3.5, "label": "9", "n_unique_chains": 3, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 6, "pct": 66.7, "examples": [{"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 13, "snap_to": 14}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 20, "snap_to": 21}, {"problem": "gemma_4_26b_a4b_it/abc345/abc345_d", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 9, "snap_to": 10}]}, {"chain": ["write_script", "write"], "label": "write helper script → write solution.py", "count": 2, "pct": 22.2, "examples": [{"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_e", "snap_from": 4, "snap_to": 5}]}, {"chain": ["write", "write"], "label": "write solution.py → write solution.py", "count": 1, "pct": 11.1, "examples": [{"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 1, "snap_to": 2}]}], "label_dist": [{"label": "explore", "count": 7, "pct": 77.8}, {"label": "infra_confusion", "count": 1, "pct": 11.1}, {"label": "rewrite", "count": 1, "pct": 11.1}], "n_labeled": 9, "nlp_rates": {"m1_correctness": 78, "m1_efficiency": 78, "m2": 78, "m3_own": 11, "m6": 67, "m4": 89, "m8_lang": 22, "m9": 22, "m3_existing": 11}}, {"id": "m19", "source": "broke", "target": "breakthrough", "color": "#7B0000", "count": 6, "out_pct": 31.6, "label": "6", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 6, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/abc324/abc324_d", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/abc345/abc345_d", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/abc391/abc391_e", "snap_from": 5, "snap_to": 6}]}], "label_dist": [{"label": "rewrite", "count": 2, "pct": 33.3}, {"label": "cosmetic_refactor", "count": 1, "pct": 16.7}, {"label": "fix_bug", "count": 1, "pct": 16.7}, {"label": "implement", "count": 1, "pct": 16.7}, {"label": "execute_plan", "count": 1, "pct": 16.7}], "n_labeled": 6, "nlp_rates": {"m1_correctness": 50, "m1_efficiency": 50, "m2": 50, "m3_sample": 83, "m6": 17, "m4": 50}}, {"id": "m20", "source": "stay", "target": "end_limit", "color": "#4CAF50", "count": 9, "out_pct": 3.5, "label": "9", "n_unique_chains": 2, "breakdown": [{"chain": [], "label": "(no useful command)", "count": 8, "pct": 88.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc310/abc310_f", "snap_from": 12, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc312/abc312_d", "snap_from": 18, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc325/abc325_b", "snap_from": 2, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc366/abc366_b", "snap_from": 1, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc381/abc381_d", "snap_from": 17, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc397/abc397_e", "snap_from": 11, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc400/abc400_d", "snap_from": 11, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_e", "snap_from": 11, "snap_to": -1}]}, {"chain": ["test"], "label": "run ./test.sh", "count": 1, "pct": 11.1, "examples": [{"problem": "gemma_4_26b_a4b_it/abc359/abc359_d", "snap_from": 14, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 10, "pct": 100.0}], "n_labeled": 10, "nlp_rates": {"m1_correctness": 11, "m1_efficiency": 11, "m2": 11, "m3_existing": 11}}, {"id": "m21", "source": "improved", "target": "improved", "color": "#2196F3", "count": 4, "out_pct": 10.3, "label": "4", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 4, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc389/abc389_g", "snap_from": 2, "snap_to": 3}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 11, "snap_to": 12}]}], "label_dist": [{"label": "fix_bug", "count": 3, "pct": 75.0}, {"label": "optimize_perf", "count": 1, "pct": 25.0}], "n_labeled": 4, "nlp_rates": {"m1_correctness": 75, "m2": 100, "m3_sample": 100, "m4": 25, "m1_efficiency": 25}}, {"id": "m22", "source": "regressed", "target": "breakthrough", "color": "#F44336", "count": 1, "out_pct": 6.7, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc334/abc334_c", "snap_from": 6, "snap_to": 7}]}], "label_dist": [{"label": "fix_bug", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100, "m3_sample": 100, "m6": 100, "m7": 100}}, {"id": "m23", "source": "start", "target": "stuck", "color": "#9E9E9E", "count": 17, "out_pct": 17.0, "label": "17", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 16, "pct": 94.1, "examples": [{"problem": "gemma_4_26b_a4b_it/abc337/abc337_e", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc354/abc354_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc359/abc359_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc378/abc378_g", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc382/abc382_g", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc384/abc384_c", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc195/arc195_d", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc196/arc196_a", "snap_from": -1, "snap_to": 0}, {"problem": "gemma_4_26b_a4b_it/arc196/arc196_d", "snap_from": -1, "snap_to": 0}]}, {"chain": ["write", "write"], "label": "write solution.py → write solution.py", "count": 1, "pct": 5.9, "examples": [{"problem": "gemma_4_26b_a4b_it/abc389/abc389_g", "snap_from": -1, "snap_to": 0}]}], "label_dist": [{"label": "explore", "count": 13, "pct": 76.5}, {"label": "implement", "count": 4, "pct": 23.5}], "n_labeled": 17, "nlp_rates": {"m1_correctness": 76, "m2": 94, "m8_lang": 6, "m3_sample": 6, "m4": 47, "m1_efficiency": 29, "m9": 35, "m6": 6}}, {"id": "m24", "source": "stuck", "target": "end_limit", "color": "#FF9800", "count": 4, "out_pct": 4.0, "label": "4", "n_unique_chains": 1, "breakdown": [{"chain": [], "label": "(no useful command)", "count": 4, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc354/abc354_d", "snap_from": 0, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc378/abc378_g", "snap_from": 4, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/abc398/abc398_g", "snap_from": 11, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 6, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 5, "pct": 100.0}], "n_labeled": 5, "nlp_rates": {}}, {"id": "m25", "source": "improved", "target": "breakthrough", "color": "#2196F3", "count": 5, "out_pct": 12.8, "label": "5", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 4, "pct": 80.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc373/abc373_f", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/abc397/abc397_e", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 4, "snap_to": 5}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_e", "snap_from": 0, "snap_to": 1}]}, {"chain": ["run_sample", "write_script", "write"], "label": "run solution.py (sample) → write helper script → write solution.py", "count": 1, "pct": 20.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc194/arc194_d", "snap_from": 2, "snap_to": 3}]}], "label_dist": [{"label": "fix_bug", "count": 2, "pct": 40.0}, {"label": "rewrite", "count": 1, "pct": 20.0}, {"label": "implement", "count": 1, "pct": 20.0}, {"label": "optimize_perf", "count": 1, "pct": 20.0}], "n_labeled": 5, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 60, "m2": 100, "m3_sample": 80, "m4": 100, "m3_existing": 40, "m6": 20, "m8_lang": 20, "m3_own": 20}}, {"id": "m26", "source": "stay", "target": "regressed", "color": "#4CAF50", "count": 2, "out_pct": 0.8, "label": "2", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 2, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc381/abc381_d", "snap_from": 11, "snap_to": 12}, {"problem": "gemma_4_26b_a4b_it/abc388/abc388_f", "snap_from": 5, "snap_to": 6}]}], "label_dist": [{"label": "cosmetic_refactor", "count": 1, "pct": 50.0}, {"label": "optimize_perf", "count": 1, "pct": 50.0}], "n_labeled": 2, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100, "m3_sample": 100, "m6": 50, "m7": 50}}, {"id": "m27", "source": "regressed", "target": "churn", "color": "#F44336", "count": 2, "out_pct": 13.3, "label": "2", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 2, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc381/abc381_d", "snap_from": 12, "snap_to": 13}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 6, "snap_to": 7}]}], "label_dist": [{"label": "edge_case", "count": 1, "pct": 50.0}, {"label": "fix_bug", "count": 1, "pct": 50.0}], "n_labeled": 2, "nlp_rates": {"m1_correctness": 50, "m1_efficiency": 50, "m2": 100, "m3_sample": 100, "m6": 50}}, {"id": "m28", "source": "churn", "target": "breakthrough", "color": "#9C27B0", "count": 1, "out_pct": 25.0, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc381/abc381_d", "snap_from": 13, "snap_to": 14}]}], "label_dist": [{"label": "revert", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100, "m3_sample": 100, "m6": 100, "m7": 100}}, {"id": "m29", "source": "breakthrough", "target": "broke", "color": "#00BCD4", "count": 1, "out_pct": 1.0, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/abc400/abc400_g", "snap_from": 3, "snap_to": 4}]}], "label_dist": [{"label": "explore", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100, "m4": 100}}, {"id": "m30", "source": "improved", "target": "regressed", "color": "#2196F3", "count": 7, "out_pct": 17.9, "label": "7", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 5, "pct": 71.4, "examples": [{"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 3, "snap_to": 4}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 6, "snap_to": 7}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 9, "snap_to": 10}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 12, "snap_to": 13}]}, {"chain": ["write", "write"], "label": "write solution.py → write solution.py", "count": 2, "pct": 28.6, "examples": [{"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 0, "snap_to": 1}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 0, "snap_to": 1}]}], "label_dist": [{"label": "fix_bug", "count": 4, "pct": 57.1}, {"label": "rewrite", "count": 2, "pct": 28.6}, {"label": "implement", "count": 1, "pct": 14.3}], "n_labeled": 7, "nlp_rates": {"m1_correctness": 86, "m2": 100, "m3_sample": 86, "m4": 57, "m9": 43, "m3_own": 43, "m1_efficiency": 29, "m6": 29}}, {"id": "m31", "source": "regressed", "target": "regressed", "color": "#F44336", "count": 1, "out_pct": 6.7, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["run_sample", "write"], "label": "run solution.py (sample) → write solution.py", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 4, "snap_to": 5}]}], "label_dist": [{"label": "rewrite", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m1_correctness": 100, "m2": 100, "m3_sample": 100, "m9": 100}}, {"id": "m32", "source": "regressed", "target": "improved", "color": "#F44336", "count": 4, "out_pct": 26.7, "label": "4", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 4, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 5, "snap_to": 6}, {"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 10, "snap_to": 11}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 3, "snap_to": 4}]}], "label_dist": [{"label": "implement", "count": 2, "pct": 50.0}, {"label": "fix_bug", "count": 1, "pct": 25.0}, {"label": "rewrite", "count": 1, "pct": 25.0}], "n_labeled": 4, "nlp_rates": {"m1_correctness": 100, "m2": 100, "m3_sample": 75, "m3_own": 50, "m9": 50, "m3_existing": 25}}, {"id": "m33", "source": "improved", "target": "end_limit", "color": "#2196F3", "count": 4, "out_pct": 10.3, "label": "4", "n_unique_chains": 2, "breakdown": [{"chain": [], "label": "(no useful command)", "count": 3, "pct": 75.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc184/arc184_d", "snap_from": 11, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 10, "snap_to": -1}, {"problem": "gemma_4_26b_a4b_it/arc192/arc192_b", "snap_from": 0, "snap_to": -1}]}, {"chain": ["run_sample", "test"], "label": "run solution.py (sample) → run ./test.sh", "count": 1, "pct": 25.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc196/arc196_d", "snap_from": 7, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 3, "pct": 75.0}, {"label": "debug_failure", "count": 1, "pct": 25.0}], "n_labeled": 4, "nlp_rates": {"m3_existing": 25, "m3_sample": 25, "m9": 25}}, {"id": "m34", "source": "churn", "target": "churn", "color": "#9C27B0", "count": 1, "out_pct": 25.0, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc186/arc186_e", "snap_from": 7, "snap_to": 8}]}], "label_dist": [{"label": "debug_failure", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m2": 100, "m3_sample": 100}}, {"id": "m35", "source": "improved", "target": "broke", "color": "#2196F3", "count": 2, "out_pct": 5.1, "label": "2", "n_unique_chains": 1, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 2, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 1, "snap_to": 2}, {"problem": "gemma_4_26b_a4b_it/arc194/arc194_a", "snap_from": 4, "snap_to": 5}]}], "label_dist": [{"label": "explore", "count": 2, "pct": 100.0}], "n_labeled": 2, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 50, "m2": 100, "m4": 50}}, {"id": "m36", "source": "stuck", "target": "regressed", "color": "#FF9800", "count": 2, "out_pct": 2.0, "label": "2", "n_unique_chains": 2, "breakdown": [{"chain": ["write"], "label": "write solution.py", "count": 1, "pct": 50.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 9, "snap_to": 10}]}, {"chain": ["test", "write"], "label": "run ./test.sh → write solution.py", "count": 1, "pct": 50.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc194/arc194_b", "snap_from": 2, "snap_to": 3}]}], "label_dist": [{"label": "implement", "count": 2, "pct": 100.0}], "n_labeled": 2, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100, "m3_sample": 50, "m4": 50, "m6": 50, "m3_existing": 50, "m9": 50}}, {"id": "m37", "source": "regressed", "target": "end_limit", "color": "#F44336", "count": 1, "out_pct": 6.7, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": [], "label": "(no useful command)", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc191/arc191_d", "snap_from": 10, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {}}, {"id": "m38", "source": "improved", "target": "end_submit", "color": "#2196F3", "count": 1, "out_pct": 2.6, "label": "1", "n_unique_chains": 1, "breakdown": [{"chain": ["submit"], "label": "submit", "count": 1, "pct": 100.0, "examples": [{"problem": "gemma_4_26b_a4b_it/arc193/arc193_a", "snap_from": 19, "snap_to": -1}]}], "label_dist": [{"label": "verify", "count": 1, "pct": 100.0}], "n_labeled": 1, "nlp_rates": {"m1_correctness": 100, "m1_efficiency": 100, "m2": 100}}], "prob_rows": [{"src": "start", "total": 100, "outs": [{"tgt": "breakthrough", "count": 73, "pct": 73.0}, {"tgt": "stuck", "count": 17, "pct": 17.0}, {"tgt": "improved", "count": 10, "pct": 10.0}]}, {"src": "improved", "total": 39, "outs": [{"tgt": "stuck", "count": 15, "pct": 38.5}, {"tgt": "regressed", "count": 7, "pct": 17.9}, {"tgt": "breakthrough", "count": 5, "pct": 12.8}, {"tgt": "improved", "count": 4, "pct": 10.3}, {"tgt": "end_limit", "count": 4, "pct": 10.3}, {"tgt": "broke", "count": 2, "pct": 5.1}, {"tgt": "churn", "count": 1, "pct": 2.6}, {"tgt": "end_submit", "count": 1, "pct": 2.6}]}, {"src": "churn", "total": 4, "outs": [{"tgt": "broke", "count": 2, "pct": 50.0}, {"tgt": "breakthrough", "count": 1, "pct": 25.0}, {"tgt": "churn", "count": 1, "pct": 25.0}]}, {"src": "stuck", "total": 99, "outs": [{"tgt": "stuck", "count": 52, "pct": 52.5}, {"tgt": "improved", "count": 17, "pct": 17.2}, {"tgt": "breakthrough", "count": 12, "pct": 12.1}, {"tgt": "end_submit", "count": 7, "pct": 7.1}, {"tgt": "broke", "count": 5, "pct": 5.1}, {"tgt": "end_limit", "count": 4, "pct": 4.0}, {"tgt": "regressed", "count": 2, "pct": 2.0}]}, {"src": "breakthrough", "total": 98, "outs": [{"tgt": "stay", "count": 54, "pct": 55.1}, {"tgt": "end_submit", "count": 40, "pct": 40.8}, {"tgt": "regressed", "count": 3, "pct": 3.1}, {"tgt": "broke", "count": 1, "pct": 1.0}]}, {"src": "stay", "total": 259, "outs": [{"tgt": "stay", "count": 205, "pct": 79.2}, {"tgt": "end_submit", "count": 34, "pct": 13.1}, {"tgt": "broke", "count": 9, "pct": 3.5}, {"tgt": "end_limit", "count": 9, "pct": 3.5}, {"tgt": "regressed", "count": 2, "pct": 0.8}]}, {"src": "regressed", "total": 15, "outs": [{"tgt": "stuck", "count": 6, "pct": 40.0}, {"tgt": "improved", "count": 4, "pct": 26.7}, {"tgt": "churn", "count": 2, "pct": 13.3}, {"tgt": "breakthrough", "count": 1, "pct": 6.7}, {"tgt": "regressed", "count": 1, "pct": 6.7}, {"tgt": "end_limit", "count": 1, "pct": 6.7}]}, {"src": "broke", "total": 19, "outs": [{"tgt": "stuck", "count": 9, "pct": 47.4}, {"tgt": "breakthrough", "count": 6, "pct": 31.6}, {"tgt": "improved", "count": 4, "pct": 21.1}]}], "label_rows": [{"label": "cosmetic_refactor", "total": 102, "edges": [{"src": "stay", "tgt": "stay", "count": 76, "pct": 74.5}, {"src": "breakthrough", "tgt": "stay", "count": 13, "pct": 12.7}, {"src": "improved", "tgt": "stuck", "count": 5, "pct": 4.9}, {"src": "stuck", "tgt": "stuck", "count": 5, "pct": 4.9}, {"src": "regressed", "tgt": "stuck", "count": 1, "pct": 1.0}, {"src": "broke", "tgt": "breakthrough", "count": 1, "pct": 1.0}, {"src": "stay", "tgt": "regressed", "count": 1, "pct": 1.0}]}, {"label": "debug_failure", "total": 16, "edges": [{"src": "stuck", "tgt": "stuck", "count": 5, "pct": 31.2}, {"src": "stay", "tgt": "stay", "count": 4, "pct": 25.0}, {"src": "broke", "tgt": "stuck", "count": 2, "pct": 12.5}, {"src": "stuck", "tgt": "broke", "count": 1, "pct": 6.2}, {"src": "improved", "tgt": "stuck", "count": 1, "pct": 6.2}, {"src": "regressed", "tgt": "stuck", "count": 1, "pct": 6.2}, {"src": "improved", "tgt": "end_limit", "count": 1, "pct": 6.2}, {"src": "churn", "tgt": "churn", "count": 1, "pct": 6.2}]}, {"label": "edge_case", "total": 8, "edges": [{"src": "stay", "tgt": "stay", "count": 5, "pct": 62.5}, {"src": "breakthrough", "tgt": "stay", "count": 2, "pct": 25.0}, {"src": "regressed", "tgt": "churn", "count": 1, "pct": 12.5}]}, {"label": "execute_plan", "total": 12, "edges": [{"src": "stuck", "tgt": "improved", "count": 5, "pct": 41.7}, {"src": "stuck", "tgt": "breakthrough", "count": 3, "pct": 25.0}, {"src": "stay", "tgt": "stay", "count": 1, "pct": 8.3}, {"src": "breakthrough", "tgt": "stay", "count": 1, "pct": 8.3}, {"src": "broke", "tgt": "stuck", "count": 1, "pct": 8.3}, {"src": "broke", "tgt": "breakthrough", "count": 1, "pct": 8.3}]}, {"label": "explore", "total": 51, "edges": [{"src": "stuck", "tgt": "stuck", "count": 13, "pct": 25.5}, {"src": "start", "tgt": "stuck", "count": 13, "pct": 25.5}, {"src": "stay", "tgt": "broke", "count": 7, "pct": 13.7}, {"src": "broke", "tgt": "stuck", "count": 5, "pct": 9.8}, {"src": "stay", "tgt": "stay", "count": 4, "pct": 7.8}, {"src": "stuck", "tgt": "broke", "count": 3, "pct": 5.9}, {"src": "improved", "tgt": "broke", "count": 2, "pct": 3.9}, {"src": "start", "tgt": "improved", "count": 1, "pct": 2.0}, {"src": "improved", "tgt": "stuck", "count": 1, "pct": 2.0}, {"src": "stuck", "tgt": "improved", "count": 1, "pct": 2.0}, {"src": "breakthrough", "tgt": "broke", "count": 1, "pct": 2.0}]}, {"label": "fix_bug", "total": 43, "edges": [{"src": "stay", "tgt": "stay", "count": 9, "pct": 20.9}, {"src": "breakthrough", "tgt": "stay", "count": 5, "pct": 11.6}, {"src": "stuck", "tgt": "stuck", "count": 4, "pct": 9.3}, {"src": "stuck", "tgt": "breakthrough", "count": 4, "pct": 9.3}, {"src": "improved", "tgt": "regressed", "count": 4, "pct": 9.3}, {"src": "stuck", "tgt": "improved", "count": 3, "pct": 7.0}, {"src": "improved", "tgt": "improved", "count": 3, "pct": 7.0}, {"src": "improved", "tgt": "stuck", "count": 2, "pct": 4.7}, {"src": "improved", "tgt": "breakthrough", "count": 2, "pct": 4.7}, {"src": "broke", "tgt": "improved", "count": 1, "pct": 2.3}, {"src": "improved", "tgt": "churn", "count": 1, "pct": 2.3}, {"src": "regressed", "tgt": "stuck", "count": 1, "pct": 2.3}, {"src": "broke", "tgt": "breakthrough", "count": 1, "pct": 2.3}, {"src": "regressed", "tgt": "breakthrough", "count": 1, "pct": 2.3}, {"src": "regressed", "tgt": "churn", "count": 1, "pct": 2.3}, {"src": "regressed", "tgt": "improved", "count": 1, "pct": 2.3}]}, {"label": "implement", "total": 161, "edges": [{"src": "start", "tgt": "breakthrough", "count": 72, "pct": 44.7}, {"src": "stay", "tgt": "stay", "count": 35, "pct": 21.7}, {"src": "breakthrough", "tgt": "stay", "count": 12, "pct": 7.5}, {"src": "start", "tgt": "improved", "count": 9, "pct": 5.6}, {"src": "stuck", "tgt": "stuck", "count": 6, "pct": 3.7}, {"src": "stuck", "tgt": "improved", "count": 5, "pct": 3.1}, {"src": "improved", "tgt": "stuck", "count": 4, "pct": 2.5}, {"src": "start", "tgt": "stuck", "count": 4, "pct": 2.5}, {"src": "breakthrough", "tgt": "regressed", "count": 3, "pct": 1.9}, {"src": "stuck", "tgt": "breakthrough", "count": 2, "pct": 1.2}, {"src": "regressed", "tgt": "improved", "count": 2, "pct": 1.2}, {"src": "stuck", "tgt": "regressed", "count": 2, "pct": 1.2}, {"src": "broke", "tgt": "improved", "count": 1, "pct": 0.6}, {"src": "regressed", "tgt": "stuck", "count": 1, "pct": 0.6}, {"src": "broke", "tgt": "breakthrough", "count": 1, "pct": 0.6}, {"src": "improved", "tgt": "breakthrough", "count": 1, "pct": 0.6}, {"src": "improved", "tgt": "regressed", "count": 1, "pct": 0.6}]}, {"label": "infra_confusion", "total": 4, "edges": [{"src": "stay", "tgt": "stay", "count": 2, "pct": 50.0}, {"src": "stay", "tgt": "end_submit", "count": 1, "pct": 25.0}, {"src": "stay", "tgt": "broke", "count": 1, "pct": 25.0}]}, {"label": "optimize_perf", "total": 66, "edges": [{"src": "stay", "tgt": "stay", "count": 39, "pct": 59.1}, {"src": "breakthrough", "tgt": "stay", "count": 17, "pct": 25.8}, {"src": "stuck", "tgt": "breakthrough", "count": 3, "pct": 4.5}, {"src": "improved", "tgt": "stuck", "count": 1, "pct": 1.5}, {"src": "stuck", "tgt": "stuck", "count": 1, "pct": 1.5}, {"src": "broke", "tgt": "stuck", "count": 1, "pct": 1.5}, {"src": "regressed", "tgt": "stuck", "count": 1, "pct": 1.5}, {"src": "improved", "tgt": "improved", "count": 1, "pct": 1.5}, {"src": "improved", "tgt": "breakthrough", "count": 1, "pct": 1.5}, {"src": "stay", "tgt": "regressed", "count": 1, "pct": 1.5}]}, {"label": "revert", "total": 21, "edges": [{"src": "stay", "tgt": "stay", "count": 11, "pct": 52.4}, {"src": "stuck", "tgt": "stuck", "count": 8, "pct": 38.1}, {"src": "improved", "tgt": "stuck", "count": 1, "pct": 4.8}, {"src": "churn", "tgt": "breakthrough", "count": 1, "pct": 4.8}]}, {"label": "rewrite", "total": 26, "edges": [{"src": "stuck", "tgt": "stuck", "count": 7, "pct": 26.9}, {"src": "stuck", "tgt": "improved", "count": 3, "pct": 11.5}, {"src": "breakthrough", "tgt": "stay", "count": 2, "pct": 7.7}, {"src": "broke", "tgt": "improved", "count": 2, "pct": 7.7}, {"src": "churn", "tgt": "broke", "count": 2, "pct": 7.7}, {"src": "broke", "tgt": "breakthrough", "count": 2, "pct": 7.7}, {"src": "improved", "tgt": "regressed", "count": 2, "pct": 7.7}, {"src": "stuck", "tgt": "broke", "count": 1, "pct": 3.8}, {"src": "regressed", "tgt": "stuck", "count": 1, "pct": 3.8}, {"src": "stay", "tgt": "broke", "count": 1, "pct": 3.8}, {"src": "improved", "tgt": "breakthrough", "count": 1, "pct": 3.8}, {"src": "regressed", "tgt": "regressed", "count": 1, "pct": 3.8}, {"src": "regressed", "tgt": "improved", "count": 1, "pct": 3.8}]}, {"label": "verify", "total": 120, "edges": [{"src": "breakthrough", "tgt": "end_submit", "count": 40, "pct": 33.3}, {"src": "stay", "tgt": "end_submit", "count": 31, "pct": 25.8}, {"src": "stay", "tgt": "stay", "count": 19, "pct": 15.8}, {"src": "stay", "tgt": "end_limit", "count": 10, "pct": 8.3}, {"src": "stuck", "tgt": "end_submit", "count": 6, "pct": 5.0}, {"src": "stuck", "tgt": "end_limit", "count": 5, "pct": 4.2}, {"src": "stuck", "tgt": "stuck", "count": 3, "pct": 2.5}, {"src": "improved", "tgt": "end_limit", "count": 3, "pct": 2.5}, {"src": "breakthrough", "tgt": "stay", "count": 1, "pct": 0.8}, {"src": "regressed", "tgt": "end_limit", "count": 1, "pct": 0.8}, {"src": "improved", "tgt": "end_submit", "count": 1, "pct": 0.8}]}], "n_problems": 100, "max_count": 205, "lang": "python", "model_scope": "gemma"};

function esc(s) {
  return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;')
                  .replace(/>/g,'&gt;').replace(/"/g,'&quot;');
}
function snapLabel(idx) {
  if (idx < 0) return idx === -1 ? 'end' : 'start';
  return 'snap_' + String(idx).padStart(2,'0');
}

// Action-kind palette (text / background) — must mirror Python's KIND_COLOR.
const AKC = {
  'write':        ['#166534', '#dcfce7'],
  'write_script': ['#7c3aed', '#f5f3ff'],
  'run_sample':   ['#0369a1', '#e0f2fe'],
  'run_script':   ['#0284c7', '#e0f2fe'],
  'test':         ['#b45309', '#fffbeb'],
  'time':         ['#ca8a04', '#fefce8'],
  'inspect':      ['#475569', '#f1f5f9'],
  'wc':           ['#64748b', '#f1f5f9'],
  'diff':         ['#64748b', '#f1f5f9'],
  'submit':       ['#dc2626', '#fef2f2'],
};
// Compact pill labels (chain display).
const KIND_SHORT = {
  'write':        'cat > solution',
  'write_script': 'cat > helper.py',
  'run_sample':   'python3 solution.py',
  'run_script':   'python3 script.py',
  'test':         './test.sh',
  'time':         'time solution.py',
  'inspect':      'cat tests/',
  'wc':           'wc',
  'diff':         'diff',
  'submit':       'echo COMPLETE_TASK',
};
// Gap label palette [text, background] — covers both old and new taxonomy labels
const LABEL_COLORS = {
  // new taxonomy
  'fix_bug':             ['#166534', '#dcfce7'],
  'debug_failure':       ['#dc2626', '#fef2f2'],
  'implement':           ['#1d4ed8', '#eff6ff'],
  'rewrite':             ['#7c3aed', '#f5f3ff'],
  'explore':             ['#0891b2', '#ecfeff'],
  'execute_plan':        ['#0f766e', '#f0fdfa'],
  'revert':              ['#6b7280', '#f9fafb'],
  'verify':              ['#334155', '#f1f5f9'],
  'edge_case':           ['#65a30d', '#f7fee7'],
  'optimize_perf':       ['#6d28d9', '#f5f3ff'],
  'cosmetic_refactor':   ['#475569', '#f1f5f9'],
  'infra_confusion':     ['#ca8a04', '#fefce8'],
  // old taxonomy (v1)
  'initial_impl':        ['#166534', '#dcfce7'],
  'run_tests':           ['#0369a1', '#e0f2fe'],
  'fix_specific_failure':['#ea580c', '#fff7ed'],
  'rethink_algorithm':   ['#d97706', '#fffbeb'],
  'complete_partial':    ['#0891b2', '#ecfeff'],
  'fix_crash':           ['#b91c1c', '#fef2f2'],
  'read_tests':          ['#0284c7', '#f0f9ff'],
  'attempt':             ['#1d4ed8', '#eff6ff'],
};
function renderLabelDist(labelDist, nLabeled) {
  if (!labelDist || !labelDist.length) return '';
  let h = `<div class="det-sub">Gap label distribution (${nLabeled} labeled)</div>`;
  labelDist.forEach(d => {
    const [fg, bg] = LABEL_COLORS[d.label] || ['#374151', '#f9fafb'];
    h += `<div class="lbl-row">`;
    h += `<div class="lbl-head">`;
    h += `<span class="lbl-pill" style="color:${fg};background:${bg}">${esc(d.label)}</span>`;
    h += `<span class="lbl-num">${d.count} · ${d.pct}%</span></div>`;
    h += `<div class="lbl-bar"><div class="lbl-fill" style="width:${d.pct}%;background:${fg}"></div></div>`;
    h += `</div>`;
  });
  return h;
}

function renderGapDist(dist, total, title) {
  if (!dist || !Object.keys(dist).length) return '';
  const entries = Object.entries(dist).sort((a, b) => b[1] - a[1]);
  let h = `<div class="det-sub">${esc(title)} (${total} labeled)</div>`;
  entries.forEach(([lbl, pct]) => {
    const [fg, bg] = LABEL_COLORS[lbl] || ['#374151', '#f9fafb'];
    h += `<div class="lbl-row">`;
    h += `<div class="lbl-head">`;
    h += `<span class="lbl-pill" style="color:${fg};background:${bg}">${esc(lbl)}</span>`;
    h += `<span class="lbl-num">${pct}%</span></div>`;
    h += `<div class="lbl-bar"><div class="lbl-fill" style="width:${pct}%;background:${fg}"></div></div>`;
    h += `</div>`;
  });
  return h;
}

const NLP_LABELS = {
  'm1_correctness': 'M1 correctness',
  'm1_efficiency':  'M1 efficiency',
  'm1_clarity':     'M1 clarity',
  'm2':             'M2 second-guess',
  'm3_existing':    'M3 existing tests',
  'm3_own':         'M3 own tests',
  'm4':             'M4 # comment',
  'm6':             'M6 code fence',
  'm7':             'M7 edge case',
  'm8_lang':        'M8a extra lang',
  'm8_python':      'M8b extra .py',
  'm9':             'M9 error turn',
};
const NLP_KEY_ORDER = ['m1_correctness','m1_efficiency','m1_clarity','m2',
                       'm3_existing','m3_own','m4','m6','m7','m8_lang','m8_python','m9'];

function renderNlpDist(rates, total, title) {
  if (!rates || !Object.keys(rates).length) return '';
  const entries = NLP_KEY_ORDER
    .filter(k => (rates[k] || 0) > 0)
    .map(k => [k, rates[k]]);
  if (!entries.length) return '';
  let h = `<div class="det-sub">${esc(title)} (${total} edges)</div>`;
  entries.forEach(([k, pct]) => {
    const lbl = NLP_LABELS[k] || k;
    h += `<div class="nlp-row">`;
    h += `<span class="nlp-lbl">${esc(lbl)}</span>`;
    h += `<span class="nlp-bar"><span class="nlp-fill" style="width:${pct}%"></span></span>`;
    h += `<span class="nlp-num">${pct}%</span></div>`;
  });
  return h;
}

function renderNlpRates(rates) {
  if (!rates || !Object.keys(rates).length) return '';
  const chips = NLP_KEY_ORDER
    .filter(k => (rates[k] || 0) > 0)
    .map(k => `<span class="nlp-chip">${esc(NLP_LABELS[k] || k)}: ${rates[k]}%</span>`)
    .join('');
  if (!chips) return '';
  return `<div class="det-sub">NLP signals (% of traversals)</div><div style="margin-bottom:6px">${chips}</div>`;
}

function renderChain(chain) {
  if (!chain || !chain.length)
    return '<span class="kind-pill" style="color:#94a3b8;background:#f1f5f9">(no useful command)</span>';
  return chain.map((k, i) => {
    const [fg, bg] = AKC[k] || ['#374151', '#f9fafb'];
    const lbl      = KIND_SHORT[k] || k;
    const arrow    = i > 0 ? '<span class="kind-arrow">→</span>' : '';
    return arrow + `<span class="kind-pill" style="color:${fg};background:${bg}">${esc(lbl)}</span>`;
  }).join('');
}

function showEdgeDetail(panel, ed) {
  const sc = (M.nodes.find(n => n.id === ed.source) || {}).color || ed.color;
  const tc = (M.nodes.find(n => n.id === ed.target) || {}).color || '#9e9e9e';
  let h = `<div class="det-title">`;
  h += `<span class="state-chip" style="background:${sc}">${esc(ed.source)}</span>`;
  h += `<span style="color:#94a3b8;font-weight:400">→</span>`;
  h += `<span class="state-chip" style="background:${tc}">${esc(ed.target)}</span></div>`;
  h += `<div class="det-row"><span class="det-lbl">Count</span><span class="det-val">${ed.count}</span></div>`;
  h += `<div class="det-row"><span class="det-lbl">P(${esc(ed.target)} | ${esc(ed.source)})</span>`;
  h += `<span class="det-val">${ed.out_pct}%</span></div>`;

  h += `<div class="det-sub">Command-chain breakdown (${ed.n_unique_chains} distinct chain${ed.n_unique_chains === 1 ? '' : 's'})</div>`;
  (ed.breakdown || []).forEach(b => {
    h += `<div class="bd-row">`;
    h += `<div class="bd-head"><span class="bd-lbl">${renderChain(b.chain)}</span>`;
    h += `<span class="bd-num">${b.count} · ${b.pct}%</span></div>`;
    h += `<div class="bd-bar"><div class="bd-fill" style="width:${b.pct}%;background:#94a3b8"></div></div>`;
    (b.examples || []).forEach(ex => {
      const fr = ex.snap_from < 0 ? 'start' : snapLabel(ex.snap_from);
      const to = ex.snap_to   < 0
                   ? (ed.target === 'end_limit' ? 'limit' : 'submit')
                   : snapLabel(ex.snap_to);
      h += `<div class="bd-ex">${esc(ex.problem)} ${fr}→${to}</div>`;
    });
    h += `</div>`;
  });
  h += renderLabelDist(ed.label_dist, ed.n_labeled);
  h += renderNlpRates(ed.nlp_rates);
  panel.innerHTML = h;
}

function showNodeDetail(panel, n) {
  let h = `<div class="det-title"><span class="state-chip" style="background:${n.color}">${n.state_type}</span></div>`;
  h += `<div class="det-def">${esc(n.definition)}</div>`;
  h += `<div class="det-row"><span class="det-lbl">Visits</span><span class="det-val">${n.visits}</span></div>`;
  h += `<div class="det-row"><span class="det-lbl">Outgoing</span><span class="det-val">${n.out_total}</span></div>`;

  const outs = M.edges.filter(e => e.source === n.id)
                      .sort((a,b) => b.count - a.count);
  if (outs.length) {
    h += `<div class="det-sub">Outgoing distribution (sums to 100%)</div>`;
    outs.forEach(e => {
      const tcol = (M.nodes.find(nd => nd.id === e.target) || {}).color || e.color;
      h += `<div class="out-row">`;
      h += `<span class="out-tgt" style="color:${tcol}">${esc(e.target)}</span>`;
      h += `<span class="out-bar"><span class="out-fill" style="width:${e.out_pct}%;background:${tcol}"></span></span>`;
      h += `<span class="out-num">${e.out_pct}% (${e.count})</span></div>`;
    });
  } else {
    h += `<div class="det-def">Terminal state — no outgoing transitions.</div>`;
  }

  const ins = M.edges.filter(e => e.target === n.id)
                     .sort((a,b) => b.count - a.count);
  if (ins.length) {
    const inTotal = ins.reduce((s, e) => s + e.count, 0);
    h += `<div class="det-sub">Incoming distribution (sums to 100%)</div>`;
    ins.forEach(e => {
      const scol = (M.nodes.find(nd => nd.id === e.source) || {}).color || e.color;
      const pct  = inTotal > 0 ? Math.round(1000 * e.count / inTotal) / 10 : 0;
      h += `<div class="out-row">`;
      h += `<span class="out-tgt" style="color:${scol}">${esc(e.source)}</span>`;
      h += `<span class="out-bar"><span class="out-fill" style="width:${pct}%;background:${scol}"></span></span>`;
      h += `<span class="out-num">${pct}% (${e.count})</span></div>`;
    });
  }
  h += renderGapDist(n.gap_out, n.gap_out_total, 'Outgoing gap labels');
  h += renderGapDist(n.gap_in,  n.gap_in_total,  'Incoming gap labels');
  h += renderNlpDist(n.nlp_out, n.nlp_out_total, 'Outgoing NLP signals');
  h += renderNlpDist(n.nlp_in,  n.nlp_in_total,  'Incoming NLP signals');
  panel.innerHTML = h;
}

function makeBgImg(count, w, h, fs) {
  if (!count) return '';
  const svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + w + '" height="' + h + '"><text x="' + (w/2) + '" y="' + Math.round(h*0.8) + '" text-anchor="middle" font-family="ui-monospace,monospace" font-size="' + fs + '" fill="white" font-weight="700">' + count + '</text></svg>';
  return 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);
}

const cyNodes = M.nodes.map(n => {
  const sp = n.id === 'start' || n.id === 'end_submit' || n.id === 'end_limit';
  const nw = sp ? 54 : 72, nh = sp ? 54 : 72;
  return {
    data: { id: n.id, label: n.label, color: n.color, n,
             bgImg: makeBgImg(n.visits, nw, nh, 9) },
    position: { x: n.x, y: n.y },
  };
});

const cyEdges = M.edges.map(ed => ({
  data: {
    id: ed.id, source: ed.source, target: ed.target,
    label: ed.label, color: ed.color,
    isSelf: ed.source === ed.target ? 'yes' : 'no',
    // width scales with outgoing probability (thicker = more likely)
    // edge thickness scales with ABSOLUTE count (normalised against the
    // graph's max count so the thickest edge fills the visible range).
    width: 1.0 + (ed.count / Math.max(1, M.max_count)) * 9.0,
    ed,
  }
}));

const cy = cytoscape({
  container: document.getElementById('cy'),
  elements: { nodes: cyNodes, edges: cyEdges },
  layout: { name: 'preset' },
  style: [
    {
      selector: 'node',
      style: {
        'background-color': 'data(color)', 'label': 'data(label)', 'color': 'white',
        'font-size': '11px', 'font-weight': '700',
        'text-valign': 'center', 'text-halign': 'center',
        'width': 72, 'height': 72, 'border-width': 3, 'border-color': 'white',
        'background-image': 'data(bgImg)',
        'background-fit': 'contain',
      }
    },
    {
      selector: 'node[id = "start"], node[id = "end_submit"], node[id = "end_limit"]',
      style: { 'shape': 'round-rectangle', 'width': 54, 'height': 54,
                'background-color': '#94a3b8', 'border-color': '#64748b' }
    },
    {
      selector: 'node[id = "start"]',
      style: { 'font-size': '16px' }
    },
    {
      selector: 'node:selected',
      style: { 'border-color': '#0f172a', 'border-width': 4 }
    },
    {
      selector: 'edge',
      style: {
        'width': 'data(width)',
        'line-color': 'data(color)',
        'target-arrow-color': 'data(color)',
        'target-arrow-shape': 'triangle',
        'arrow-scale': 1.0,
        'curve-style': 'bezier',
        'target-label': 'data(label)',
        'target-text-offset': 24,
        'font-size': '9px',
        'font-weight': '700',
        'font-family': 'ui-monospace, monospace',
        'color': '#1e293b',
        'text-background-opacity': 0.92,
        'text-background-color': 'white',
        'text-background-padding': '2px',
        'opacity': 0.78,
      }
    },
    {
      selector: 'edge[isSelf = "yes"]',
      style: { 'curve-style': 'loop', 'loop-direction': '0deg',
                'loop-sweep': '70deg' }
    },
    {
      selector: 'edge:selected',
      style: { 'opacity': 1, 'font-size': '11px', 'z-index': 999, 'line-color': '#0f172a',
                'target-arrow-color': '#0f172a' }
    },
  ],
  userZoomingEnabled: true,
  userPanningEnabled: true,
  boxSelectionEnabled: false,
});
cy.fit(cy.elements(), 40);

const panel = document.getElementById('detail');
cy.on('tap', 'node', evt => showNodeDetail(panel, evt.target.data('n')));
cy.on('tap', 'edge', evt => showEdgeDetail(panel, evt.target.data('ed')));
cy.on('tap', evt => {
  if (evt.target === cy)
    panel.innerHTML = '<div class="detail-placeholder">Click a node or edge for details</div>';
});
cy.on('mouseover', 'edge', evt => evt.target.style({ opacity: 1 }));
cy.on('mouseout',  'edge', evt => { if (!evt.target.selected()) evt.target.style({ opacity: 0.78 }); });
</script>
</body>
</html>