%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.11%22%0A%23%20dependencies%20%3D%20%5B%0A%23%20%20%20%20%20%22marimo%22%2C%0A%23%20%20%20%20%20%22wandb%3E%3D0.18%22%2C%0A%23%20%20%20%20%20%22python-dotenv%3E%3D1.0%22%2C%0A%23%20%20%20%20%20%22matplotlib%3E%3D3.8%22%2C%0A%23%20%5D%0A%23%20%2F%2F%2F%0A%0A%23%20Run%20with%3A%20uvx%20marimo%20run%20notebooks%2Floop_viz.py%20%20(from%20the%20repo%20root%2C%20so%20.env%20resolves)%0A%23%20Deliberately%20kept%20out%20of%20pyproject.toml%2Fuv.lock%20-%20this%20is%20a%20standalone%20viz%20tool%2C%20not%0A%23%20part%20of%20the%20critique-refine%20loop%20itself%2C%20run%20via%20marimo's%20own%20PEP%20723%20sandbox.%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.24.2%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20from%20dotenv%20import%20load_dotenv%0A%0A%20%20%20%20load_dotenv()%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%20Critique-refine%20loop%20%E2%80%94%20real%20run%20data%0A%0A%20%20%20%20Pulled%20live%20from%20the%20W%26B%20project%20(%60wandb.Api()%60%2C%20not%20hardcoded%20numbers)%20for%0A%20%20%20%20CoreWeave%20Hacks%3A%20Agent%20Loops.%20Compares%20runs%20across%20different%20draft%2Frefine%20model%0A%20%20%20%20configurations%20to%20show%20the%20loop%20and%20TypeSafe%20triage%20actually%20firing.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20import%20wandb%0A%0A%20%20%20%20api%20%3D%20wandb.Api()%0A%20%20%20%20runs%20%3D%20api.runs(%22w77%2Fcoreweave-hacks-2026-09-12%22%2C%20filters%3D%7B%22jobType%22%3A%20%22critique-refine-loop%22%7D)%0A%0A%20%20%20%20rows%20%3D%20%5B%5D%0A%20%20%20%20for%20run%20in%20runs%3A%0A%20%20%20%20%20%20%20%20draft_model%20%3D%20run.config.get(%22draft_model%22)%20or%20%22unknown%22%0A%20%20%20%20%20%20%20%20refine_model%20%3D%20run.config.get(%22refine_model%22)%20or%20%22unknown%22%0A%20%20%20%20%20%20%20%20label%20%3D%20f%22%7Brun.name%7D%20(draft%3D%7Bdraft_model.split('%2F')%5B-1%5D%7D)%22%0A%20%20%20%20%20%20%20%20for%20record%20in%20run.history(pandas%3DFalse)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20record.get(%22task_id%22)%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rows.append(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22run%22%3A%20label%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22task_id%22%3A%20record%5B%22task_id%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22passed%22%3A%20record%5B%22passed%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22iterations_used%22%3A%20record%5B%22iterations_used%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22last_failure_category%22%3A%20record.get(%22last_failure_category%22)%20or%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20mo.md(f%22Loaded%20**%7Blen(rows)%7D**%20task-outcome%20rows%20across%20**%7Blen(runs)%7D**%20runs.%22)%0A%20%20%20%20return%20(rows%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20rows)%3A%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20from%20collections%20import%20defaultdict%0A%0A%20%20%20%20by_run%3A%20dict%5Bstr%2C%20dict%5Bstr%2C%20int%5D%5D%20%3D%20defaultdict(dict)%0A%20%20%20%20for%20row%20in%20rows%3A%0A%20%20%20%20%20%20%20%20by_run%5Brow%5B%22run%22%5D%5D%5Brow%5B%22task_id%22%5D%5D%20%3D%20row%5B%22iterations_used%22%5D%0A%0A%20%20%20%20task_ids%20%3D%20sorted(%7Brow%5B%22task_id%22%5D%20for%20row%20in%20rows%7D)%0A%20%20%20%20run_labels%20%3D%20sorted(by_run.keys())%0A%0A%20%20%20%20fig1%2C%20ax1%20%3D%20plt.subplots(figsize%3D(10%2C%204))%0A%20%20%20%20bar_width%20%3D%200.8%20%2F%20max(len(run_labels)%2C%201)%0A%20%20%20%20x_positions%20%3D%20range(len(task_ids))%0A%20%20%20%20for%20i%2C%20run_label%20in%20enumerate(run_labels)%3A%0A%20%20%20%20%20%20%20%20values%20%3D%20%5Bby_run%5Brun_label%5D.get(tid%2C%200)%20for%20tid%20in%20task_ids%5D%0A%20%20%20%20%20%20%20%20offsets%20%3D%20%5Bx%20%2B%20i%20*%20bar_width%20for%20x%20in%20x_positions%5D%0A%20%20%20%20%20%20%20%20ax1.bar(offsets%2C%20values%2C%20width%3Dbar_width%2C%20label%3Drun_label)%0A%0A%20%20%20%20ax1.set_xticks(%5Bx%20%2B%20bar_width%20*%20(len(run_labels)%20-%201)%20%2F%202%20for%20x%20in%20x_positions%5D)%0A%20%20%20%20ax1.set_xticklabels(task_ids%2C%20rotation%3D30%2C%20ha%3D%22right%22)%0A%20%20%20%20ax1.set_ylabel(%22Iterations%20to%20pass%22)%0A%20%20%20%20ax1.set_title(%22Iterations-to-pass%20per%20task%2C%20by%20run%22)%0A%20%20%20%20ax1.legend(fontsize%3D8)%0A%20%20%20%20fig1.tight_layout()%0A%0A%20%20%20%20mo.md(%22%23%23%20Iterations%20to%20pass%2C%20per%20task%20and%20run%22)%0A%20%20%20%20fig1%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20rows)%3A%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt2%0A%20%20%20%20from%20collections%20import%20Counter%0A%0A%20%20%20%20categories%20%3D%20Counter(%0A%20%20%20%20%20%20%20%20row%5B%22last_failure_category%22%5D%20for%20row%20in%20rows%20if%20row%5B%22last_failure_category%22%5D%0A%20%20%20%20)%0A%0A%20%20%20%20fig2%2C%20ax2%20%3D%20plt2.subplots(figsize%3D(6%2C%204))%0A%20%20%20%20if%20categories%3A%0A%20%20%20%20%20%20%20%20labels%2C%20counts%20%3D%20zip(*sorted(categories.items()%2C%20key%3Dlambda%20kv%3A%20-kv%5B1%5D))%0A%20%20%20%20%20%20%20%20ax2.bar(labels%2C%20counts%2C%20color%3D%22%23c0392b%22)%0A%20%20%20%20%20%20%20%20ax2.set_ylabel(%22Count%22)%0A%20%20%20%20%20%20%20%20ax2.set_title(%22TypeSafe-diagnosed%20failure%20categories%20(across%20all%20runs)%22)%0A%20%20%20%20%20%20%20%20plt2.setp(ax2.get_xticklabels()%2C%20rotation%3D20%2C%20ha%3D%22right%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20ax2.text(0.5%2C%200.5%2C%20%22No%20failures%20logged%20yet%22%2C%20ha%3D%22center%22%2C%20va%3D%22center%22)%0A%20%20%20%20fig2.tight_layout()%0A%0A%20%20%20%20mo.md(%22%23%23%20Failure%20categories%20TypeSafe%20actually%20diagnosed%22)%0A%20%20%20%20fig2%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
7cb3d7b8803109043074f9d857e0bbbb